资源简介
使用遗传算法实现的旅行者问题,采用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
相关资源
- 北大青鸟的S1Java的作业
- Java门禁系统
- java版多媒体教室管系统源文件
- java 个人记账管理系统
- Java_斑马打印机打印标签
- 达内java实习报告
-
ap
plet小动画——JAVA - JAVA万年历程序代码阳历+阴历+节日
- 北京交通大学软件学院java作业
- java开发的CS标准考试系统
- javawebDAO模式登录验证
- 银行账户管理 JAVA
- java多线程导出excel千万级别优化
- java图形界面九九乘法表
- java voronoi
- SL275lab题目
- java加入购物车源码附数据库文件
- java 发邮件带excel附件,以流的形式发
- 基于JAVA开发的KTV前台管理系统
- Java实现逻辑回归算法(LogRegression)对
- JAVA数据结构复杂表达式求值
- JAVA+MySQL学生成绩管理系统
- java2word程序代码及jar包
- JAVAWeb外文文献翻译
- java音频开发.mp3文件解码jmp123.jar
- 某智Java图书管理系统,视频,代码
- java 使用jacob Word转PDF 完美格式
- 银行系统server数据库
- 带人工智能的五子棋java源程序
- java混淆jocky,不限jdk版本
评论
共有 条评论