กลยุทธ์วิวัฒนาการทำให้ง่าย!
ใช้ Evopy เพื่อเพิ่มประสิทธิภาพเวกเตอร์ของลอยใน Python ได้อย่างง่ายดาย
สิ่งที่คุณต้องใช้ Evopy คือ Python 3! เรียกใช้คำสั่งนี้เพื่อดึง Evopy จาก PYPI:
pip install evopy
จากนั้นคุณสามารถนำเข้า EvoPy เช่นนี้:
from evopy import EvoPy สมมติว่าเราต้องการค้นหาสิ่งที่เหมาะสมที่สุดของพาราโบลาโดยไม่ต้องใช้วิธีการที่แน่นอนจากแคลคูลัส! ด้วย Evopy นี่เป็นเรื่องง่ายเหมือนการเขียนสองบรรทัดต่อไปนี้:
evopy = EvoPy ( lambda x : pow ( x , 2 ), 1 )
best_coordinates = evopy . run () ส่วนผสมหลักที่นี่คือฟังก์ชั่นการออกกำลังกาย (แลมบ์ดา) นี่อาจเป็นข้อมูลอ้างอิงฟังก์ชั่นปกติเพียงตรวจสอบให้แน่ใจว่ามันยอมรับการลอยหรืออาร์เรย์ของลอยและเอาต์พุตลอยเดี่ยว ส่วนผสมอื่นคือ 1 ในตอนท้ายของบรรทัดแรก: นี่คือมิติของอินพุตที่คุณคาดหวังในฟังก์ชั่นการออกกำลังกายของคุณ best_coordinates จะมีอาร์เรย์ที่มีองค์ประกอบเดียวซึ่งเป็นค่า x ที่ดีที่สุดที่อัลกอริทึมสามารถค้นหาได้ในจำนวนเริ่มต้นของรุ่น
หากตัวอย่างก่อนหน้านี้ดูง่ายเกินไปสำหรับคุณเรายังสามารถดูฟังก์ชั่นที่ซับซ้อนและซับซ้อนกว่าสองมิติเช่นฟังก์ชั่น Rastrigin เราไม่จำเป็นต้องแก้ไขมากในตัวอย่างโค้ดก่อนหน้านี้เพื่อให้สิ่งนี้ทำงานได้:
evopy = EvoPy (
lambda X : 5 + sum ([( x ** 2 - 5 * np . cos ( 2 * np . pi * x )) for x in X ]),
2 ,
generations = 1000 ,
population_size = 100
)
best_coordinates = evopy . run () เมื่อเปรียบเทียบกับตัวอย่างแรกเราได้เปลี่ยนฟังก์ชั่นการออกกำลังกายสำหรับหนึ่งที่ซับซ้อนมากขึ้นตั้งค่ามิติเป็น 2 และให้เวลาอัลกอริทึมมากขึ้นในการค้นหาที่เหมาะสมโดยการตั้งค่ารุ่นที่สูงขึ้นและการนับแต่ละรายการมากกว่าค่าเริ่มต้น
สำหรับข้อมูลรายละเอียดเพิ่มเติมเกี่ยวกับฟังก์ชั่นของ Evopy ลองดูเอกสาร!
โคลนที่เก็บนี้และดึงข้อมูลการพึ่งพาทั้งหมดจากภายในไดเรกทอรีโคลน:
pip install -r requirements.dev.txt
เรียกใช้การทดสอบทั้งหมดด้วย:
nosetests
หากต้องการตรวจสอบสไตล์รหัสของคุณ Run:
pylint evopy
ในการวัดความครอบคลุมรหัสของคุณ Run:
nosetests --with-coverage --cover-package=evopy --cover-html --cover-branches --cover-erase