資源簡介
遺傳算法(GeneticAlgorithm)的Java實現源碼工程,可導入eclipse后可直接運行工程,main方法在類GeneticAlgorithmTest文件中。帶有圖形界面動態展示遺傳算法的收斂過程。你可以在此基礎上改動后運用于你的項目中。

代碼片段和文件信息
package?ga;
import?java.util.ArrayList;??
import?java.util.List;??
??
public?class?Chromosome?{??
????private?boolean[]?gene;//基因序列??
????private?double?score;//對應的函數得分??
??????
????public?double?getScore()?{??
????????return?score;??
????}??
??
????public?void?setScore(double?score)?{??
????????this.score?=?score;??
????}??
??
????/**?
?????*?@param?size?
?????*?隨機生成基因序列?
?????*/??
????public?Chromosome(int?size)?{??
????????if?(size?<=?0)?{??
????????????return;??
????????}??
????????initGeneSize(size);??
????????for?(int?i?=?0;?i?????????????gene[i]?=?Math.random()?>=?0.5;??
????????}??
????}??
??????
????/**?
?????*?生成一個新基因?
?????*/??
????public?Chromosome()?{??
??????????
????}??
??????
????/**?
?????*?@param?c?
?????*?@return?
?????*?@Description:?克隆基因?
?????*/??
????public?static?Chromosome?clone(final?Chromosome?c)?{??
????????if?(c?==?null?||?c.gene?==?null)?{??
????????????return?null;??
????????}??
????????Chromosome?copy?=?new?Chromosome();??
????????copy.initGeneSize(c.gene.length);??
????????for?(int?i?=?0;?i?????????????copy.gene[i]?=?c.gene[i];??
????????}??
????????return?copy;??
????}??
??????
????/**?
?????*?@param?size?
?????*?@Description:?初始化基因長度?
?????*/??
????private?void?initGeneSize(int?size)?{??
????????if?(size?<=?0)?{??
????????????return;??
????????}??
????????gene?=?new?boolean[size];??
????}??
??????
??????
????/**?
?????*?@param?c1?
?????*?@param?c2?
?????*?@Description:?遺傳產生下一代?
?????*/??
????public?static?List?genetic(Chromosome?p1?Chromosome?p2)?{??
????????if?(p1?==?null?||?p2?==?null)?{?//染色體有一個為空,不產生下一代??
????????????return?null;??
????????}??
????????if?(p1.gene?==?null?||?p2.gene?==?null)?{?//染色體有一個沒有基因序列,不產生下一代??
????????????return?null;??
????????}??
????????if?(p1.gene.length?!=?p2.gene.length)?{?//染色體基因序列長度不同,不產生下一代??
????????????return?null;??
????????}??
????????Chromosome?c1?=?clone(p1);??
????????Chromosome?c2?=?clone(p2);??
????????//隨機產生交叉互換位置??
????????int?size?=?c1.gene.length;??
????????int?a?=?((int)?(Math.random()?*?size))?%?size;??
????????int?b?=?((int)?(Math.random()?*?size))?%?size;??
????????int?min?=?a?>?b???b?:?a;??
????????int?max?=?a?>?b???a?:?b;??
????????//對位置上的基因進行交叉互換??
????????boolean?t;
????????for?(int?i?=?min;?i?<=?max;?i++)?{??
????????????t?=?c1.gene[i];??
????????????c1.gene[i]?=?c2.gene[i];??
????????????c2.gene[i]?=?t;??
????????}??
????????List?list?=?new?ArrayList();??
????????list.add(c1);??
????????list.add(c2);??
????????return?list;??
????}??
??????
????/**?
?????*?@param?num?
?????*?@Description:?基因num個位置發生變異?
?????*/??
????public?void?mutation(int?num)?{??
????????//允許變異??
????????int?size?=?gene.length;??
????????for?(int?i?=?0;?i?????????????//尋找變異位置??
????????????int?at?=?((int)?(Math.random()?*?size))?%?size;??
????????????//變異后的值??
????????????boolea
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????301??2016-11-21?09:39??GeneticAlgorithm\.classpath
?????文件????????392??2016-11-21?09:37??GeneticAlgorithm\.project
?????文件????????598??2016-11-21?09:39??GeneticAlgorithm\.settings\org.eclipse.jdt.core.prefs
?????文件???????2522??2016-11-26?19:11??GeneticAlgorithm\bin\ga\Chromosome.class
?????文件???????5646??2016-11-26?19:20??GeneticAlgorithm\bin\ga\DynamicDataWindow.class
?????文件???????6430??2016-11-26?19:10??GeneticAlgorithm\bin\ga\GeneticAlgorithm.class
?????文件???????1028??2016-11-26?17:39??GeneticAlgorithm\bin\ga\GeneticAlgorithmTest.class
?????文件???????3622??2016-11-26?19:11??GeneticAlgorithm\src\ga\Chromosome.java
?????文件???????6964??2016-11-26?19:20??GeneticAlgorithm\src\ga\DynamicDataWindow.java
?????文件???????7843??2016-11-26?19:10??GeneticAlgorithm\src\ga\GeneticAlgorithm.java
?????文件????????873??2016-11-26?17:39??GeneticAlgorithm\src\ga\GeneticAlgorithmTest.java
?????目錄??????????0??2016-11-26?19:20??GeneticAlgorithm\bin\ga
?????目錄??????????0??2016-11-21?10:48??GeneticAlgorithm\src\ga
?????目錄??????????0??2016-11-21?09:37??GeneticAlgorithm\.settings
?????目錄??????????0??2016-11-21?09:40??GeneticAlgorithm\bin
?????目錄??????????0??2016-11-21?09:40??GeneticAlgorithm\src
?????目錄??????????0??2016-11-21?09:37??GeneticAlgorithm
-----------?---------??----------?-----??----
????????????????36219????????????????????17
評論
共有 條評論