using system.collections;
using system.collections.generic;
using unityengine;
/// /// 遺傳演算法
///
public class geneticalgorithm
//排序
private void sortattr()
);
}int tempcount;//初始的長度
int splitbest = 0;
//對個體選擇
private attr choose(listattrs)
float totalpercent = 0;
float rand = unityengine.random.range(0f, totalfitness);
foreach (var attr in curattrlist)
return null;
}//賭輪盤選擇[(優秀基因保留)1/4效果比較好]
private listchoosebest()//
}if (!boo)
break;
}attr child1;
attr child2;
crossattr(attr1, attr2, out child1, out child2);
childattrlist.add(child1);
childattrlist.add(child2);
if (childattrlist.count == (int)tempcount*3/4)
break;
if (childattrlist.count > (int)tempcount * 3 / 4)
}variationattr(childattrlist);//變異
//新生的交叉變異|優秀的儲存不動
/************ 交叉變異 *************/
int temp = childattrlist.count;
for (int i = tempcount-1; i >temp-1 ; i--)//特殊挑選的best也加入新群體
return childattrlist;
}public void foresh(double d)
debug.logerror("權重s:" + str);
}private listcrossattrlist;
//交叉
private void crossattr(attr attr1,attr attr2,out attr child1,out attr child2)
}float variation = 0.2f;//1/50 0.02的概率突變
//變異[突變]
private void variationattr(listlist)//ok}}
}
C語言實現遺傳演算法
演算法框架 1.generateinitialpopulation 生成初代種群 2.evaluatepopulation 評估種群 3.generatenextpopulation 產生下一代 1 selectionoperator 選擇 2 crossoveroperator 交叉 random...
遺傳演算法C語言原始碼
遺傳演算法是上學時曾經研究過的演算法,它是一種基於基因遺傳思想的快速搜尋遍歷演算法。簡單理解,它就是比一般的盲搜尋和其他的一些搜尋快的演算法。其主要目的就是為了能快速準確搜尋所求的值,用於求解一些複雜的數值應用,以及一些實時性要求高的演算法應用中。以下是以前練習過的 歡迎有需要的同學學習交流。inc...
遺傳演算法的簡單實現(Go語言)
這是我自己寫的一篇有關遺傳演算法的文章。for i 0 i len population i return next 函式中寫的crossover 交叉 mutate 變異 將在下面給出,next就是下一代群體。4.7 交叉的實現 func crossover d1 organism,d2 orga...