วันอังคารที่ 26 กุมภาพันธ์ พ.ศ. 2556

genetic algorithm

Introduction to Evolutionary Algorithms

Introduction to Evolutionary Algorithms คือการนำต้นแบบของรุ่นปัจจจุบันเพื่อนำมาสร้างรุ่นต่อไป เช่น  การผลิตรถ  จะมีการพัฒนารูปทรง สมรรถนะเครื่องยนต์์  อย่างต่อเนื่องแต่ยังคงไว้ซึ่งเอกลักษณ์ของรุ่นเดิม การพัฒนานี้เป็น genneration จากรุ่นต่อรุ่น และ อัลกอลิทึมที่ถูกนำมาใช้มากที่สุดคือ ขั้นตอนวิธีเชิงพันธุกรรม (genetic algorithm  )


genetic algorithm

initialize population

ตัวอย่าง one max problem  หาบิตสตริงที่ทุกๆ บิต เป็น 1 หมด

one max 10 บิต คำตอบที่ดีที่สุดคือ 1  111  111  111 

ขั้นตอน

1.  สร้างประชากรเริ่มต้น (สมติว่ามีประชากร 6 ตัว )
  1. 100  110  100  1   มีหนึ่งทั้งหมด 5  fitness value = 5  
  2. 001  010  011  0  มีหนึ่งทั้งหมด  4  fitness value = 4
  3. 110  011  010  0  มีหนึ่งทั้งหมด  5  fitness value = 5
  4. 001  011  101  1  มีหนึ่งทั้งหมด  6  fitness value = 6
  5. 110  010  111  0  มีหนึ่งทั้งหมด  6  fitness value = 6
  6. 011  110  101  1  มีหนึ่งทั้งหมด  7  fitness value = 7
การนำจำนวนเลขหนึ่ง ว่าแต่ละตัวอย่างมีหนึ่งทั้งหมดกี่ตัว เรียกค่านั้นว่า  fitness value

2.  fitness funtion  ประเมินค่าความเหมาะสม
3.  คัดเลือกประชากรตัวที่ดีๆ มาสร้างประชากรใหม่
                              เลือกหมายเลข 2,4  มาสร้างประชากรใหม่

ขั้นตอนการสร้างประชากรใหม่
               1. cross over
                           001  0100  110        -->พ่อ,แม่ 1 
                           001  0111  011        -->พ่อ,แม่ 2

                          0010100  011  -->ลูก 1
                          0010111  110  -->ลูก 2
                         เกิดการแลกเปลี่ยนบิต 3 ตัวท้าย ทำให้เกิดรุ่นลูกใหม่ 2 ตัว

               2.mutation  เป็นการวิเคราะห์สุ่มหาตำแหน่งที่อาจจะเกิดการกลายพันธ์ุ

                          0010100  011  -->ลูก 1
                          0010111  110  -->ลูก 2  -->  0110111  110  กลายพันธ์ุตำแหน่งที่ 2 นับจากทางซ้าย


ทำให้ได้ประชากรรุ่นใหม่ดังนี้
  1. 0010100  011
  2. 0110111  110 
  3. -----------  -----
  4. -----------  -----
  5. -----------  -----
  6. -----------  -----
สุ่มนำตัวอย่างที่เป็นค่าเริ่มต้นมาเข้ากระบวนการเพื่อหารุ่นลูกลำดับที่ 3 4 5 6 (ในที่นี้ขอเว้นไว้เพราะหลักการเดียวกัน)

ถ้าในรุ่นนี้ไม่มีคำตอบ ให้นำรุ่นลูกมาคิดต่อจนกว่าจะได้คำตอบที่ดีที่สุดคือ 1111111111


                                  





จุดเริ่มต้นของนักพัฒนาแอพพลิเคชั่นบนระบบปฏิบัติการ iOS (iOS Developer)

จุดเริ่มต้นของนักพัฒนาแอพพลิเคชั่นบนระบบปฏิบัติการ iOS
(iOS Developer)



1.มีความคิดสร้างสรรค์
จะรู้ได้อย่างไรว่าสิ่งที่คุณคิดจะประสบความสำเร็จ ในวันนี้เรามีแนวทางเสนอแนะ

Application ช่วยแก้ไขปัญหา หรือมอบความสะดวกสบายให้ผู้คนได้หรือไม่
ก่อนที่จะมีหลอดไฟ เราใช้เพียงแค่เทียนไข แล้วก่อนเทียนไข เราใช้การก่อไฟ ทุกสิ่งเกิดจากการคิดแก้ไขปัญหาและเพิ่มความสะดวกสบาย ถ้า Application ของเราสามารถช่วยแก้ปัญหาต่างๆ ได้ รับรองมีคนใช้แน่นอนครับ

มีกลุ่มเป้าหมายเฉพาะ
อยากที่ทราบกันว่าตอนนี้ Applition บน AppStore ตอนนี้มีมากกว่า 300,000 Application แล้ว ยกตัวอย่าง Application  ไฟฉายมีเป็นร้อยๆ เราอาจจะหลีกหนีการแข่งขันกลุ่มนี้ไปสร้าง Application  อื่นเช่น กลุ่มคนรักหมา, วิธีเลี้ยงแมว เป็นต้น

-  Application ของคุณสร้างรอยยิ้มได้ไหม

Application ที่ดีต้องทำให้ผู้ใช้งานมีความสุขครับ

มีช่องทางให้ผู้ใช้งานติดต่อกับคุณได้
ผู้คนชอบใช้งาน Application ที่มีการเปลี่ยนแปลง อย่างสม่ำเสมอและมีการพัฒนาอย่างต่อเนื่อง คุณควรมีช่องทางสำหรับผู้ใชงานให้แจ้งปัญหาที่พบ ไม่ว่าจะเป็น email หรือ website

2.เตรียมอุปกรณ์ให้พร้อม

การเขียนแอพพลิเคชั่นบนระบบปฏิบัติการ iOS นั้น จำเป็นต้องมีอุปกรณ์ดังนี้
  -  เครื่องคอมพิวเตอร์ของ apple เช่น mac mini, macbook Pro, iMac พร้อมติดตั้งโปรแกรม xcode ให้เรียบร้อย 
  -  device สำหรับใช้ทดสอบการใช้งานจริงของโปรแกรม 
  - สมัครเป็น developer ของ apple 
  
3.ค้นหาว่าตัวเองถนัดสิ่งไหน
ในการสร้าง Application ที่ดีสักตัวนึงนั้น คุณอาจจะต้องเป็นทั้ง Researcher, Project Manager, Accountant, Information Architect, Designer, Developer, Marketer and Advertiser คุณสามารถเป็นได้ทุกอย่างแต่ในบางงานที่คุณไม่ถนัดมันอาจจะใช้เวลามากกว่าคนที่คุณถนัด มันจะไม่มีปัญหาถ้าเป็น Project เล็กๆที่คุณทำได้ตัวเอง แต่ถ้าเป็น project ขนาดใหญ่คุณต้องรู้ว่าอะไรเหมาะกับคุณที่สุดและเป็นตำแหน่งที่ช่วยให้ทีมของคุณประสบความสำเร็จ

4.เรียนรู้และวางแผน
คุณต้องศึกษา Application ต่างๆให้เยอะๆ ว่าดียังไงและมีข้อผิดผลาดอะไรบ้างและอย่าทำแบบนั้นอีก โดยคุณอาจจะหลักต่างๆ ดังนี้
- Application ของคุณแก้ไขปัญหาอะไรได้
- มี Application ไหนที่คล้ายๆ กับที่คุณจะทำบ้าง
- Application ของคุณเหมาะกับคนกลุ่มไหน
- สามารถสร้างให้เป็น Application เฉพาะที่มีแต่ของคุณได้หรือไม่ ?
- Application ของคุณควรจะมีราคาเท่าไหร่

5.ศึกษา iPhone และ ipod touch UI (UserInterface)
เราต้องรู้ก่อนว่ารูปร่างหน้าตาของโปรแกรมที่เราสร้างออกมาจะเป็นรูปแบบใดได้บ้าง โดยสามารถศึกษาได้ที่Apple User Interface Guidelines หรือใช้วิธี Download Application ที่ติด Top 10 ของหลายๆประเภทมาดูและเลือกมาสัก 5 รูปแบบที่คุณชอบก็ง่ายดีครับ

6.วาด Idea ของคุณออกมาให้เห็นชัดๆ
เป็นการง่ายกว่าถ้าคุณจ วาด Idea ของคุณให้ออกมาเป็นภาพเพราะจะง่ายต่อคุณ และ ทีมงานของคุณ 

7.เขียน Program

ถึงเวลาสำหรับการเขียนโปรแกรมแล้วโดยใช้ โปรแกรมที่ชื่อว่า Xcode โดยเราสามารเข้าไปหาบทความและความรู้ต่างๆ ได้จาก

แต่ถ้าคุณไม่ใช่ programmer อาจจะหาวิธีที่ง่ายกว่าโดยการจ้าง programmer ครับเพราะอาจจะเป็นเรื่องยากอยู่เหมือนกันกับการเขียนโปรแกรมหากคุณไม่เคยเขียนมาก่อน
8.  Upload Application ของคุณขึ้น AppStore

9.  Promote Application ของคุณ
   - Promote ผ่านทาง Website หรือ Webborad ต่างๆ เพื่อบอกว่า Application ของคุณดียังไง ทำไมถึงต้อง Load
   - ใช้ Twitter หรือ Facebook เป็นตัวช่วย ถ้าคุณทำเกมส์คุณอาจจะใช้ Social Media สำหรับให้ผู้เล่นส่งคะแนนของตัวเอง   ขึ้น Facebook หรือ Twitter ได้หลังจากนั้นเพื่อนๆ ของเขาเรานั้นอาจจะมีคนสนใจเพิ่มขึ้นก็ได้ หรือกรณี Application อื่นๆคุณอาจจะใช้เป็นช่องทางสำหรับรับ Feedback จากผู้ใช้งานเพื่อปรับปรุงให้ดีขึ้น
- Update อย่างสม่ำเสมอ และบอกผู้ใช้งานเสมอๆ ว่าจะเพิ่มอะไรเข้าไปบ้าง

10.  เผ้าดูและ อย่าล้มเลิก
คอยหมั่นแก้ไขจุดอ่อนของ Application ของคุณและเพิ่มคุณสมบัติอยู่เสมอ เพราะเราต้องเข้าใจว่าคู่แข่งของเราเพิ่มขึ้นทุกวัน
ถ้า Application ของคุณแจก ฟรีตอนนี้มีช่องทางที่ชื่อว่า iAd ซึ่งคุณสามารถติดตั้งลงไปใน Application ของคุณได้ด้วยครับ



อ้างอิงจาก:http://www.pedgrammer.com