资源简介
遗传算法(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
相关资源
- zxing-3.1.0.jar和zxing-javase-3.1.0.jar
- Java AES文件和文本加解密
- java实现的中文词性标注算法
- 剑指offer(java版).pdf
- Scalable IO in Java -Doug Lea
- java权限系统概要设计说明书
- 用java实现的简易型科学计算器
- javax.annotation
- 英汉小字典Java课程设计
- 将一段文字转化为哈夫曼编码JAVA实现
- 档案管理系统 源代码+数据库
- java的fastjson.jar包
- Java 利用poi 导出excel 工具类,超实用
- 广工JAVA作业报告
- 局部加权朴素贝叶斯
- 本科毕业论文java外文翻译
- 操作系统内存分配回收算法(first f
- POI实现Excel导入导出并附带加载进度条
- 运动会成绩管理系统,java课程设计源
- java项目经验 大概有20个
- Java(OOP)练习及作业
- ExcelUtils.java
- java+swing+mysql实现的学生信息管理系统
- 学生选课管理系统.rar
- mchange-commons-java-0.2.12.jar
- java培训视频资源获取.zip
- JAVA+SQL实训报告--工资管理系统
- BeanUtils工具
- 期末大作业扫雷游戏单机版源码java实
- 五子棋java jsp代码实现
评论
共有 条评论