Unity中實現遺傳演算法 語言 C

2021-09-10 02:18:41 字數 1483 閱讀 4566

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...