遗传算法java.docx

上传人:b****6 文档编号:3010827 上传时间:2022-11-17 格式:DOCX 页数:38 大小:25.40KB
下载 相关 举报
遗传算法java.docx_第1页
第1页 / 共38页
遗传算法java.docx_第2页
第2页 / 共38页
遗传算法java.docx_第3页
第3页 / 共38页
遗传算法java.docx_第4页
第4页 / 共38页
遗传算法java.docx_第5页
第5页 / 共38页
点击查看更多>>
下载资源
资源描述

遗传算法java.docx

《遗传算法java.docx》由会员分享,可在线阅读,更多相关《遗传算法java.docx(38页珍藏版)》请在冰豆网上搜索。

遗传算法java.docx

遗传算法java

importjava.io.BufferedReader;

importjava.io.FileInputStream;

importjava.io.FileNotFoundException;

importjava.io.FileOutputStream;

importjava.io.IOException;

importjava.io.InputStreamReader;

importjava.util.ArrayList;

importjava.util.List;

importjava.util.Random;

publicclassGA{

privateChromosome[]chromosomes;

privateChromosome[]nextGeneration;

privateintN;

privateintcityNum;

privatedoublep_c_t;

privatedoublep_m_t;

privateintMAX_GEN;

privateintbestLength;

privateint[]bestTour;

privatedoublebestFitness;

privatedouble[]averageFitness;

privateint[][]distance;

privateStringfilename;

publicGA(){

N=0;

cityNum=;

p_c_t=0.9;

p_m_t=0.1;

MAX_GEN=00;

bestLength=0;

bestTour=newint[cityNum];

bestFitness=0.0;

averageFitness=newdouble[MAX_GEN];

chromosomes=newChromosome[N];

distance=newint[cityNum][cityNum];

}

/**

*ConstructorofGAclass

*@paramn种群规模

*@paramnum城市规模

*@paramg运行代数

*@paramp_c交叉率

*@paramp_m变异率

*@paramfilename数据文件名

*/

publicGA(intn,intnum,intg,doublep_c,doublep_m,Stringfilename){

this.N=n;

this.cityNum=num;

this.MAX_GEN=g;

this.p_c_t=p_c;

this.p_m_t=p_m;

bestTour=newint[cityNum];

averageFitness=newdouble[MAX_GEN];

bestFitness=0.0;

chromosomes=newChromosome[N];

nextGeneration=newChromosome[N];

distance=newint[cityNum][cityNum];

this.filename=filename;

}

publicvoidsolve()throwsIOException{

System.out.println("---------------------Startinitilization---------------------");

init();

System.out.println("---------------------Endinitilization---------------------");

System.out.println("---------------------Startevolution---------------------");

for(inti=0;i

System.out.println("-----------Startgeneration"+i+"----------");

evolve(i);

System.out.println("-----------Endgeneration"+i+"----------");

}

System.out.println("----------packagetsp;

importjava.io.BufferedReader;

importjava.io.FileInputStream;

importjava.io.IOException;

importjava.io.InputStreamReader;

importjava.util.Random;

publicclassTsp3{

privateintscale;//种群规模

privateintcityNum;//城市数量,染色体长度

privateintMAX_GEN;//运行代数

privatefloat[][]distance;//距离矩阵

privateintbestT;//最佳出现代数

privatefloatbestLength;//最佳长度

privateint[]bestTour;//最佳路径

//初始种群,父代种群,行数表示种群规模,一行代表一个个体,即染色体,列表示染色体基因片段

privateint[][]oldPopulation;

privateint[][]newPopulation;//新的种群,子代种群

privatefloat[]fitness;//种群适应度,表示种群中各个个体的适应度

privatefloat[]Pi;//种群中各个个体的累计概率

privatefloatPc;//交叉概率

privatefloatPm;//变异概率

privateintt;//当前代数

privateRandomrandom;

publicTsp3(){

}

/**

*constructorofGA

*

*@params

*种群规模

*@paramn

*城市数量

*@paramg

*运行代数

*@paramc

*交叉率

*@paramm

*变异率

*

**/

publicTsp3(ints,intn,intg,floatc,floatm){

scale=s;

cityNum=n;

MAX_GEN=g;

Pc=c;

Pm=m;

}

//给编译器一条指令,告诉它对被批注的代码元素内部的某些警告保持静默

@SuppressWarnings("resource")

/**

*初始化GA算法类

*@paramfilename数据文件名,该文件存储所有城市节点坐标数据

*@throwsIOException

*/

privatevoidinit(Stringfilename)throwsIOException{

//读取数据

//int[]x;

//int[]y;

Stringstrbuff;

BufferedReaderdata=newBufferedReader(newInputStreamReader(

newFileInputStream(filename)));

distance=newfloat[cityNum][cityNum];

//x=newint[cityNum];

//y=newint[cityNum];

for(inti=0;i

strbuff=data.readLine();

String[]strcol=strbuff.split("");

for(intj=0;j

distance[i][j]=Float.valueOf(strcol[j]);

System.out.println(distance[i][j]);

}

}

data.close();

bestLength=Float.MAX_VALUE;

bestTour=newint[cityNum+1];

bestT=0;

t=0;

newPopulation=newint[scale][cityNum];

oldPopulation=newint[scale][cityNum];

fitness=newfloat[scale];

Pi=newfloat[scale];

random=newRandom(System.currentTimeMillis());

/*

*for(inti=0;i

*System.out.print(distance[i][j]+",");}System.out.println();}

*/

//初始化种群

}

//初始化种群

voidinitGroup(){

inti,j,k;

//Randomrandom=newRandom(System.currentTimeMillis());

for(k=0;k

{

oldPopulation[k][0]=random.nextInt(65535)%cityNum;

for(i=1;i

{

oldPopulation[k][i]=random.nextInt(65535)%cityNum;

for(j=0;j

if(oldPopulation[k][i]==oldPopulation[k][j]){

break;

}

}

if(j==i){

i++;

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 职业教育 > 其它

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1