资源简介
使用遗传算法实现的旅行者问题,采用java语言实现
代码片段和文件信息
import java.util.*;
public class TSP{
public static final int snumber = 100;
public int [][]value = new int[snumber][snumber];//存放城市之间路径的权值
public static final int number = snumber ;//城市数目
public static final int time = 20;//遗传次数
public static final int unitNumber = 4;//种群个体数
public int[] code = new int[snumber] ; //编码数组
public int[][] unit = new int[4][snumber];//个体
public int[][] cunit = new int[4][snumber];//编码后的个体
//映射关系如下(034251):0 1 2 3 4 5
//unit 0 3 4 2 5 1
//cunit 1 3 3 2 2 1
public int[] adaptValue = new int[4];//各个个体的适应值
//构造函数
public TSP(){
for(int i = 0 ; i < number ; i++)code[i] = 1;
for(int i = 0 ; i < number ; i++){
value[i][i] = 0;
for(int j = i + 1 ; j < number ; j++)value[i][j] = (int)(Math.random()*200);
}
for(int j = 0 ; j < number ; j++){
for(int i = 0 ; i < j ; i++)value[j][i] = value[i][j];
}
}
//编码函数
public void fcode(int pos){
int count = 0;
for(int i = 0 ; i < number ; i++){
for(int j = 0 ; j<= unit[pos][i] ; j++)count += code[j];
code[unit[pos][i]] = 0;
cunit[pos][i] = count ;
count = 0;
}
for(int i = 0 ; i < number ; i++)code[i] = 1;
}
//反编码函数
public void frcode(int pos){
int count = 0;
for(int i = 0 ; i < number ; i++){
int j;
for(j = 0 ; j < number ; j++){
count += code[j];
if(count == cunit[pos][i])break;
}
unit[pos][i] = j - 1;
code[j] = 0;
count = 0;
}
for(int i = 0 ; i < number ; i++)code[i] = 1 ;
}
//检查函数
public boolean check(int xpos int val int pos){
for(int i = 0 ; i < pos ; i++){
if(unit[xpos][i] == val)return false ;
}
return true ;
}
//初始化种群
public boolean initCrop(){
for(int i = 0 ; i < unitNumber ; i++){
for(int j = 0 ; j < number ; j++){
int rvalue ;
while(true){
rvalue = (int)(Math.random()*number);
//System.out.println(rvalue);
if(check(irvaluej))break;
}
unit[i][j] = rvalue;
}
//初始化完成后进行编码
fcode(i);
}
return true ;
}
//适应函数
public void fAdaptation(){
for(int pos = 0 ; pos < unitNumber ; pos++){
int sum = 0;
for(int i = 0 ; i < number - 1 ; i++){
sum += value[unit[pos][i]][unit[pos][i+1]];
}
sum += value[un
相关资源
- 微博系统(Java源码,servlet+jsp),适
- java串口通信全套完整代码-导入eclip
- jsonarray所必需的6个jar包.rar
- 三角网构TIN生成算法,Java语言实现
- java代码编写将excel数据导入到mysql数据
- Java写的cmm词法分析器源代码及javacc学
- JAVA JSP公司财务管理系统 源代码 论文
- JSP+MYSQL旅行社管理信息系统
- 推荐算法的JAVA实现
- 基于Java的酒店管理系统源码(毕业设
- java-图片识别 图片比较
- android毕业设计
- java23种设计模式+23个实例demo
- java Socket发送/接受报文
- JAVA828436
- java界面美化 提供多套皮肤直接使用
- 在线聊天系统(java代码)
- 基于Java的图书管理系统807185
- java中实现将页面数据导入Excel中
- java 企业销售管理系统
- java做的聊天系统(包括正规课程设计
- Java编写的qq聊天室
- 商店商品管理系统 JAVA写的 有界面
- JAVA开发聊天室程序
- 在linux系统下用java执行系统命令实例
- java期末考试试题两套(答案) 选择(
- JAVA3D编程示例(建模、交互)
- Java 文件加密传输
- java做的房产管理系统
- 基于jsp的bbs论坛 非常详细
评论
共有 条评论