• 大小: 13KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-12
  • 语言: Java
  • 标签: 遗传算法  AG  java面板  

资源简介

java遗传算法_求TSP,java界面版,旅行商问题求问题的最优解

资源截图

代码片段和文件信息

package liwu29;
/**
 * 
 * @author liwu
 * 遗传算法解决TSP旅行商问题
 */
import java.io.BufferedReader;  
import java.io.FileInputStream;  
import java.io.IOException;  
import java.io.InputStreamReader;  
import java.util.Random;  

public class GA {

private int scale;// 种群规模  
    private int cityNum; // 城市数量,染色体长度  
    private int MAX_GEN; // 运行代数  
    private int[][] distance; // 距离矩阵  
    private int bestT;// 最佳出现代数  
    private int bestLength; // 最佳长度  
    private int[] bestTour; // 最佳路径  
  
    // 初始种群,父代种群,行数表示种群规模,一行代表一个个体,即染色体,列表示染色体基因片段  
    private int[][] oldPopulation;  
    private int[][] newPopulation;// 新的种群,子代种群  
    private int[] fitness;// 种群适应度,表示种群中各个个体的适应度  
  
    private float[] Pi;// 种群中各个个体的累计概率  
    private float Pc;// 交叉概率  
    private float Pm;// 变异概率  
    private int t;// 当前代数  
  
    private Random random;  
  
    public GA() {  
  
    }  
  
    /** 
     * constructor of GA 
     *  
     * @param s 
     *            种群规模 
     * @param n 
     *            城市数量 
     * @param g 
     *            运行代数 
     * @param c 
     *            交叉率 
     * @param m 
     *            变异率 
     *  
     **/  
    public GA(int s int n int g float c float m) {  
        scale = s;  
        cityNum = n;  
        MAX_GEN = g;  
        Pc = c;  
        Pm = m;  
    }  
  
    // 给编译器一条指令,告诉它对被批注的代码元素内部的某些警告保持静默  
    @SuppressWarnings(“resource“)  
    /** 
     * 初始化GA算法类 
     * @param filename 数据文件名,该文件存储所有城市节点坐标数据 
     * @throws IOException 
     */  
    public void init(String filename) throws IOException {  
        // 读取数据  
        int[] x;  
        int[] y;  
        String strbuff;  
        BufferedReader data = new BufferedReader(new InputStreamReader(  
                new FileInputStream(filename)));  
        distance = new int[cityNum][cityNum];  
        x = new int[cityNum];  
        y = new int[cityNum];  
        for (int i = 0; i < cityNum; i++) {  
            // 读取一行数据,数据格式1 6734 1453  
            strbuff = data.readLine();  
            // 字符分割  
            String[] strcol = strbuff.split(“ “);  
            x[i] = Integer.valueOf(strcol[1]);// x坐标  
            y[i] = Integer.valueOf(strcol[2]);// y坐标  
        }  
        // 计算距离矩阵  
        // ,针对具体问题,距离计算方法也不一样,此处用的是att48作为案例,它有48个城市,距离计算方法为伪欧氏距离,最优值为10628  
        for (int i = 0; i < cityNum - 1; i++) {  
            distance[i][i] = 0; // 对角线为0  
            for (int j = i + 1; j < cityNum; j++) {  
                double rij = Math  
                        .sqrt(((x[i] - x[j]) * (x[i] - x[j]) + (y[i] - y[j])  
                                * (y[i] - y[j])) / 10.0);  
                // 四舍五入,取整  
                int tij = (int) Math.round(rij);  
                if (tij < rij) {  
                    distance[i][j] = tij + 1;  
                    distance[j][i] = distance[i][j];  
                } else {  
             

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        396  2018-09-12 19:37  liwu29\.classpath

     文件        382  2018-09-12 19:37  liwu29\.project

     文件        642  2018-09-12 19:37  liwu29\.settings\org.eclipse.jdt.core.prefs

     文件       8744  2018-09-16 13:55  liwu29\bin\liwu29\GA.class

     文件       3357  2018-09-16 13:56  liwu29\bin\liwu29\Panel.class

     文件      18868  2018-09-16 13:55  liwu29\src\liwu29\GA.java

     文件       2400  2018-09-16 13:56  liwu29\src\liwu29\Panel.java

     目录          0  2018-09-16 13:53  liwu29\bin\liwu29

     目录          0  2018-09-12 20:16  liwu29\src\liwu29

     目录          0  2018-09-12 19:37  liwu29\.settings

     目录          0  2018-09-16 13:53  liwu29\bin

     目录          0  2018-09-12 20:08  liwu29\src

     目录          0  2018-09-12 19:37  liwu29

----------- ---------  ---------- -----  ----

                34789                    13


评论

共有 条评论