-
大小: 19KB文件類型: .zip金幣: 2下載: 0 次發(fā)布日期: 2021-05-16
- 語(yǔ)言: Java
- 標(biāo)簽:
資源簡(jiǎn)介
附件中是遺傳算法的Java版本的代碼實(shí)現(xiàn),可以正常運(yùn)行;下載者可以根據(jù)自己的應(yīng)用場(chǎng)景來(lái)修改。

代碼片段和文件信息
package?com.bjfu.ga;
import?java.util.ArrayList;
import?java.util.List;
public?class?Chromosome?{
private?boolean[]?gene;?//基因序列
private?double?score; //基因序列對(duì)應(yīng)的函數(shù)得分?
/**?
?????*?生成一個(gè)新基因?
?????*/??
????public?Chromosome()?{??
??????????
????}??
????
/**
?*?隨機(jī)生成基因序列
?*?@param?size
?*/
public?Chromosome(int?size)?{
if?(size?<=?0)?{
return?;
}
initGeneSize(size);
for?(int?i?=?0;?i? gene[i]?=?Math.random()?>=?0.5;
}
}
/**
?*?初始化基因長(zhǎng)度
?*?@param?size
?*/
public?void?initGeneSize(int?size)?{
if?(size?<=?0)?{??
????????????return;??
????????}??
????????gene?=?new?boolean[size];?
}
/**
?*?將基因轉(zhuǎn)化為對(duì)應(yīng)的數(shù)字?
?*?@return
?*/
public?int?getNum()?{
if?(gene?==?null)?{
return?0;
}
int?num?=?0;
for?(boolean?bool?:?gene)?{
num?<<=?1;
if?(bool)?{
num?+=?1;
}
}
return?num;
}
/**
?*?遺傳產(chǎn)生下一代?
?*?把當(dāng)前群體中適應(yīng)度較高的個(gè)體按某種規(guī)則或模型遺傳到下一代群體中;一般要求適應(yīng)度較高的個(gè)體將有更多的機(jī)會(huì)遺傳到下一代群體中。
?*?@param?parent1
?*?@param?parent2
?*?@return
?*/
public?static?List?generateNextGeneration(Chromosome?parent1?Chromosome?parent2)?{
//染色體有一個(gè)為空,不產(chǎn)生下一代?
if?(parent1?==?null?||?parent2?==?null)?{
return?null;
}
//染色體有一個(gè)沒(méi)有基因序列,不產(chǎn)生下一代??
if?(parent1.gene?==?null?||?parent2.gene?==?null)?{
return?null;
}
//染色體基因序列長(zhǎng)度不同,不產(chǎn)生下一代?
if?(parent1.gene.length?!=?parent2.gene.length)?{
return?null;
}
Chromosome?c1?=?clone(parent1);
Chromosome?c2?=?clone(parent2);
//隨機(jī)產(chǎn)生交叉互換位置?
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;
//對(duì)位置上的基因進(jìn)行交叉互換??
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?chromosome
?*?@return
?*/
public?static?Chromosome?clone(final?Chromosome?chromosome)?{
if?(chromosome?==?null?||?chromosome.gene?==?null)?{
return?null;
}
Chromosome?copy?=?new?Chromosome();
copy.initGeneSize(chromosome.gene.length);
for?(int?i?=?0;?i? copy.gene[i]?=?chromosome.gene[i];
}
return?copy;
}
/**
?*?基因num個(gè)位置發(fā)生變異
?*?@param?num
?*/
public?void?mutation(int?num)?{
//允許變異??
int?size?=?gene.length;
for?(int?i?=?0;?i? //尋找變異位置?
int?position?=?(int)?((Math.random()?*?size)?%?size);
//變異后的值?
boolean?bool?=?!gene[position];
gene[position]?=?bool;
}
}
public?double?getScore()?{
return?score;
}
public?void?setScore(double?score)?{
this.score?=?score;
}
}
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2018-03-08?15:18??GA\
?????文件?????????295??2018-03-08?15:18??GA\.classpath
?????文件?????????361??2018-03-08?15:18??GA\.project
?????目錄???????????0??2018-03-08?15:18??GA\.settings\
?????文件?????????587??2018-03-08?15:18??GA\.settings\org.eclipse.jdt.core.prefs
?????目錄???????????0??2018-03-08?15:18??GA\bin\
?????目錄???????????0??2018-03-08?15:18??GA\bin\com\
?????目錄???????????0??2018-03-08?15:18??GA\bin\com\bjfu\
?????目錄???????????0??2018-03-08?16:25??GA\bin\com\bjfu\ga\
?????文件????????2655??2018-03-08?22:15??GA\bin\com\bjfu\ga\Chromosome.class
?????文件????????5664??2018-03-08?16:33??GA\bin\com\bjfu\ga\DynamicDataWindow.class
?????文件????????7557??2018-03-09?15:42??GA\bin\com\bjfu\ga\GeneticAlgorithm.class
?????文件????????1114??2018-03-09?10:58??GA\bin\com\bjfu\ga\GeneticAlgorithmDriver.class
?????目錄???????????0??2018-03-08?15:18??GA\src\
?????目錄???????????0??2018-03-08?15:18??GA\src\com\
?????目錄???????????0??2018-03-08?15:18??GA\src\com\bjfu\
?????目錄???????????0??2018-03-08?16:25??GA\src\com\bjfu\ga\
?????文件????????3127??2018-03-08?22:15??GA\src\com\bjfu\ga\Chromosome.java
?????文件????????6919??2018-03-08?16:33??GA\src\com\bjfu\ga\DynamicDataWindow.java
?????文件????????7898??2018-03-09?15:42??GA\src\com\bjfu\ga\GeneticAlgorithm.java
?????文件?????????797??2018-03-09?10:58??GA\src\com\bjfu\ga\GeneticAlgorithmDriver.java
評(píng)論
共有 條評(píng)論