2013-10-09 34 views
0

我在pyevolve中應用GP來訓練,它給了我最好的樹。我想用這棵樹來測試不同的數據。我想保留是樹的根,所以如果gp_add,gp_mul ...是樹的根,那麼函數將返回-1。如何在pyevolve遺傳編程中使用最好的個體

這是一個例子對我最好的樹和原始分數爲1.0143

gp_min(gp_add(gp_mul(gp_min(a, b), c), d)) 

這是代碼,我嘗試應用最佳的個性化測試數據。

bestIndi = ga.bestIndividual() 
comp_code = bestIndi.getCompiledCode() 
score = eval(comp_code) 

此代碼是否正確?爲什麼分數總是-1?

回答

0

這是正確的道路。 GP中的一個主要屬性是充分性,它說域中的元素應該足以解決問題。

檢查變量的範圍。

如果想要保留min作爲你的樹的根,那麼最好將它應用到適應函數中,但是,如果GP發現一個個體比以gp_min爲根的個體更好,那麼最好消除該限制。