• 大小: 16KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-06
  • 语言: Java
  • 标签: GA  遗传算法  Java  

资源简介

遗传算法(GeneticAlgorithm)的Java实现源码工程,可导入eclipse后可直接运行工程,main方法在类GeneticAlgorithmTest文件中。带有图形界面动态展示遗传算法的收敛过程。你可以在此基础上改动后运用于你的项目中。

资源截图

代码片段和文件信息

package ga;

import java.util.ArrayList;  
import java.util.List;  
  
public class Chromosome {  
    private boolean[] gene;//基因序列  
    private double score;//对应的函数得分  
      
    public double getScore() {  
        return score;  
    }  
  
    public void setScore(double score) {  
        this.score = score;  
    }  
  
    /** 
     * @param size 
     * 随机生成基因序列 
     */  
    public Chromosome(int size) {  
        if (size <= 0) {  
            return;  
        }  
        initGeneSize(size);  
        for (int i = 0; i < size; i++) {  
            gene[i] = Math.random() >= 0.5;  
        }  
    }  
      
    /** 
     * 生成一个新基因 
     */  
    public Chromosome() {  
          
    }  
      
    /** 
     * @param c 
     * @return 
     * @Description: 克隆基因 
     */  
    public static Chromosome clone(final Chromosome c) {  
        if (c == null || c.gene == null) {  
            return null;  
        }  
        Chromosome copy = new Chromosome();  
        copy.initGeneSize(c.gene.length);  
        for (int i = 0; i < c.gene.length; i++) {  
            copy.gene[i] = c.gene[i];  
        }  
        return copy;  
    }  
      
    /** 
     * @param size 
     * @Description: 初始化基因长度 
     */  
    private void initGeneSize(int size) {  
        if (size <= 0) {  
            return;  
        }  
        gene = new boolean[size];  
    }  
      
      
    /** 
     * @param c1 
     * @param c2 
     * @Description: 遗传产生下一代 
     */  
    public static List genetic(Chromosome p1 Chromosome p2) {  
        if (p1 == null || p2 == null) { //染色体有一个为空,不产生下一代  
            return null;  
        }  
        if (p1.gene == null || p2.gene == null) { //染色体有一个没有基因序列,不产生下一代  
            return null;  
        }  
        if (p1.gene.length != p2.gene.length) { //染色体基因序列长度不同,不产生下一代  
            return null;  
        }  
        Chromosome c1 = clone(p1);  
        Chromosome c2 = clone(p2);  
        //随机产生交叉互换位置  
        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;  
        //对位置上的基因进行交叉互换  
        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 num 
     * @Description: 基因num个位置发生变异 
     */  
    public void mutation(int num) {  
        //允许变异  
        int size = gene.length;  
        for (int i = 0; i < num; i++) {  
            //寻找变异位置  
            int at = ((int) (Math.random() * size)) % size;  
            //变异后的值  
            boolea

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

     文件        301  2016-11-21 09:39  GeneticAlgorithm\.classpath

     文件        392  2016-11-21 09:37  GeneticAlgorithm\.project

     文件        598  2016-11-21 09:39  GeneticAlgorithm\.settings\org.eclipse.jdt.core.prefs

     文件       2522  2016-11-26 19:11  GeneticAlgorithm\bin\ga\Chromosome.class

     文件       5646  2016-11-26 19:20  GeneticAlgorithm\bin\ga\DynamicDataWindow.class

     文件       6430  2016-11-26 19:10  GeneticAlgorithm\bin\ga\GeneticAlgorithm.class

     文件       1028  2016-11-26 17:39  GeneticAlgorithm\bin\ga\GeneticAlgorithmTest.class

     文件       3622  2016-11-26 19:11  GeneticAlgorithm\src\ga\Chromosome.java

     文件       6964  2016-11-26 19:20  GeneticAlgorithm\src\ga\DynamicDataWindow.java

     文件       7843  2016-11-26 19:10  GeneticAlgorithm\src\ga\GeneticAlgorithm.java

     文件        873  2016-11-26 17:39  GeneticAlgorithm\src\ga\GeneticAlgorithmTest.java

     目录          0  2016-11-26 19:20  GeneticAlgorithm\bin\ga

     目录          0  2016-11-21 10:48  GeneticAlgorithm\src\ga

     目录          0  2016-11-21 09:37  GeneticAlgorithm\.settings

     目录          0  2016-11-21 09:40  GeneticAlgorithm\bin

     目录          0  2016-11-21 09:40  GeneticAlgorithm\src

     目录          0  2016-11-21 09:37  GeneticAlgorithm

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

                36219                    17


评论

共有 条评论