DEAP文檔
(不準確翻譯,用于自學变汪,如若有誤請諒解康愤。原鏈接:https://deap.readthedocs.io/en/master/)
DEAP是一個新的用于快速驗證和測試新想法的演化計算框架嗡髓。它致力于直接地構建算法和數(shù)據(jù)結構的簡單化码泛。它可以很好地應用在并行機制中烹笔,例如多任務處理和SCOOP(這是啥裳扯?)中。下面的文檔將會展示許多關鍵概念以及構建你自己的演化算法時的一些特征谤职。
第一步
? ? 1饰豺、總覽(從這里開始)
? ? 2、安裝
? ? 3允蜈、如何進入端口?(porting guide)
基礎教程
? ? Part1:創(chuàng)造類型
? ? Part2:操作與算法
? ? Part3:記錄數(shù)據(jù)
? ? Part4:使用多進程
進階教程
? ? 遺傳程序設計(GP)
? ? 檢查點?(checkpoint)
? ? 收斂控制
? ? 針對最優(yōu)解的基準測試(BBOB)
? ? 與numpy的繼承關系
例子
庫引用
亮點 & 貢獻 & 相關
-----------------------------------------分割線------------------------------------
2018.09.02? 第一步
1冤吨、總覽
如果你已經(jīng)習慣于其他的演化計算框架,你將會發(fā)現(xiàn)我們在DEAP中所做的事情是不同的饶套。我們提供了創(chuàng)建適當類型的方法漩蟆,而不是限制你使用預定義類型。我們使得你能夠定制你的初始化選項而不是封閉它妓蛮。我們希望你能夠更明智地選擇一些操作而不是使用預定義好的怠李。我們允許你能夠寫一個適合于你自己需求的算法而不是僅僅提供許多封閉的算法。這個教程將通過說明DEAP的每一個程序組成來快速地展示DEAP的所有內(nèi)容蛤克。
2捺癞、類型
首先要做的事情是思考適合你問題的類型。然后构挤,不像之前的方法那樣為你提供一些可用類型的列表髓介,DEAP會為你構建適合你自己的。這個操作需要使用creator模塊儿倒。創(chuàng)建一個合適的類型可能聽起來很難版保,但是creator使得這個過程變得十分簡單。事實上夫否,這通常在單行操作上實現(xiàn)彻犁。例如:下面為一個最小值優(yōu)化問題創(chuàng)建一個FitnessMin class,并且會從剛剛設置好的適應度列表中再創(chuàng)造一個individual class
這就是它了凰慈!更多的創(chuàng)建類可以在基礎教程的Part1中找到汞幢。
3、初始化
一旦你創(chuàng)建了一個你需要為它們填充一些隨機值的類型微谓,DEAP可以通過簡單的方法去完成它森篷。Toolbox是一個包含了所有的初始化工具的容器,它可以做你需要它去完成任何事情豺型。下面代碼的目標就是去為個體和種群隨機地生成浮點數(shù)類型的初始值仲智。
這個產(chǎn)生初始種群的生成功能,是通過個體自身不斷進行隨機生成完成的姻氨。這個功能和它的默認參數(shù)已經(jīng)被放入了toolbox中钓辆。例如,調用toolbox.population()將會有可能立即創(chuàng)建一個種群,更多的初始化方法將會在基礎教程的Part1中以及后面的例子中講到前联。
4功戚、操作
除了一些在tools模式下已經(jīng)設定好的東西以外,操作與初始化類似似嗤。一旦你選擇了一個最好的啸臀,簡單的在toolbox中注冊它們。除此之外你必須創(chuàng)造你的評估函數(shù)烁落,下面展示具體的做法
這些已經(jīng)注冊的函數(shù)會被toolbox重命名乘粒,使得遺傳算法(廣義)不會依賴于操作的名稱。還要注意的是顽馋,適應度本身是可以迭代的谓厘,這就是為什么evaluate函數(shù)必須返回元組的原因。更多的細節(jié)在后面中會說到寸谜。
5竟稳、算法
現(xiàn)在一切都準備就緒了,我們可以自己來寫一個算法了熊痴。它通常在一個main()中執(zhí)行他爸。為了實現(xiàn)這個目標我們將簡單地寫一個迭代算法
使用在algorithm中四個已有的算法也是可以的,或者在這個模塊中搭建一些其它區(qū)域的變化也是可行的果善。
6诊笤、總結
演化計算的步驟無非就是適應度函數(shù)設計+種群初始化+針對種群的操作(交叉變異等)+選擇與復制(輪盤賭等),設計不同的適應度函數(shù)以及不同類型的種群可以解決不同的問題巾陕。
在這一節(jié)中讨跟,教程大致介紹了上述四個核心步驟的基本操作,并給出了一個尋找最大和的實例鄙煤。
關鍵的步驟似乎均在toolbox中晾匠,無論是初始化還是遺傳操作還是最后的選擇,均可以使用toolbox對其進行register梯刚,一旦register一種方法凉馆,并搭建好計算框架便可以是一種新的模型,這可能就是前言中所說的“靈活性”亡资。