• 大小: 25.85MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-07-23
  • 语言: Java
  • 标签: GA  

资源简介

MATALAB java C++ 源码都有,好资源 源码都有,好资源 源码都有,好资源 还包含PPT,文档,共33.9MB

资源截图

代码片段和文件信息

public class GA {

private int ChrNum = 10; //染色体数量
private String[] ipop = new String[ChrNum];   //一个种群中染色体总数
private int generation = 0;  //染色体代号
public static final int GENE = 46;  //基因数
private double bestfitness = Double.MAX_VALUE;  //函数最优解
private int bestgenerations;    //所有子代与父代中最好的染色体
private String beststr;    //最优解的染色体的二进制码

/**
 * 初始化一条染色体(用二进制字符串表示)
 */
private String initChr() {
String res = ““;
for (int i = 0; i < GENE; i++) {
if (Math.random() > 0.5) {
res += “0“;
} else {
res += “1“;
}
}
return res;
}

/**
 * 初始化一个种群(10条染色体)
 */
private String[] initPop() {
String[] ipop = new String[ChrNum];
for (int i = 0; i < ChrNum; i++) {
ipop[i] = initChr();
}
return ipop;
}

/**
 * 将染色体转换成xy变量的值
 */
private double[] calculatefitnessvalue(String str) {

//二进制数前23位为x的二进制字符串,后23位为y的二进制字符串
int a = Integer.parseInt(str.substring(0 23) 2);      
int b = Integer.parseInt(str.substring(23 46) 2);

double x =  a * (6.0 - 0) / (Math.pow(2 23) - 1);    //x的基因
double y =  b * (6.0 - 0) / (Math.pow(2 23) - 1);    //y的基因

//需优化的函数
double fitness = 3 - Math.sin(2 * x) * Math.sin(2 * x) 
- Math.sin(2 * y) * Math.sin(2 * y);

double[] returns = { x y fitness };
return returns;

}

/**
 * 轮盘选择
 * 计算群体上每个个体的适应度值; 
 * 按由个体适应度值所决定的某个规则选择将进入下一代的个体;
 */
private void select() {
double evals[] = new double[ChrNum]; // 所有染色体适应值
double p[] = new double[ChrNum]; // 各染色体选择概率
double q[] = new double[ChrNum]; // 累计概率
double F = 0; // 累计适应值总和
for (int i = 0; i < ChrNum; i++) {
evals[i] = calculatefitnessvalue(ipop[i])[2];
if (evals[i] < bestfitness){  // 记录下种群中的最小值,即最优解
bestfitness = evals[i];
bestgenerations = generation;
beststr = ipop[i];
}

F = F + evals[i]; // 所有染色体适应值总和
}

for (int i = 0; i < ChrNum; i++) {
p[i] = evals[i] / F;
if (i == 0)
q[i] = p[i];
else {
q[i] = q[i - 1] + p[i];
}
}
for (int i = 0; i < ChrNum; i++) {
double r = Math.random();
if (r <= q[0]) {
ipop[i] = ipop[0];
} else {
for (int j = 1; j < ChrNum; j++) {
if (r < q[j]) {
ipop[i] = ipop[j];
}
}
}
}
}

/**
 * 交叉操作 交叉率为60%,平均为60%的染色体进行交叉
 */
private void cross() {
String temp1 temp2;
for (int i = 0; i < ChrNum; i++) {
if (Math.random() < 0.60) {
int pos = (int)(Math.random()*GENE)+1;     //pos位点前后二进制串交叉
temp1 = ipop[i].substring(0 pos) + ipop[(i + 1) % ChrNum].substring(pos); 
temp2 = ipop[(i + 1) % ChrNum].substring(0 pos) + ipop[i].substring(pos);
ipop[i] = temp1;
ipop[(i + 1) / ChrNum] = temp2;
}
}
}

/**
 * 基因突变操作 1%基因变异
 */
private void mutation() {
for (int i = 0; i < 4; i++) {
int num = (int) (Math.random() * GENE * ChrNum + 1);
int chromosomeNum = (int) (num / GENE) + 1; // 染色体号

int mutationNum = num - (chromosom

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2019-02-23 19:51  遗传算法多份源码\
     目录           0  2019-02-23 19:39  遗传算法多份源码\Ga\
     目录           0  2019-02-23 19:39  遗传算法多份源码\Ga\GA-master\
     文件         301  2016-08-07 22:29  遗传算法多份源码\Ga\GA-master\.classpath
     文件         378  2016-08-07 22:29  遗传算法多份源码\Ga\GA-master\.project
     目录           0  2019-02-23 19:39  遗传算法多份源码\Ga\GA-master\.settings\
     文件         598  2016-08-07 22:29  遗传算法多份源码\Ga\GA-master\.settings\org.eclipse.jdt.core.prefs
     目录           0  2019-02-23 19:39  遗传算法多份源码\Ga\GA-master\bin\
     文件          10  2016-08-07 22:29  遗传算法多份源码\Ga\GA-master\bin\.gitignore
     目录           0  2019-02-23 19:39  遗传算法多份源码\Ga\GA-master\doc\
     文件         571  2016-08-07 22:29  遗传算法多份源码\Ga\GA-master\doc\allclasses-frame.html
     文件         551  2016-08-07 22:29  遗传算法多份源码\Ga\GA-master\doc\allclasses-noframe.html
     目录           0  2019-02-23 19:39  遗传算法多份源码\Ga\GA-master\doc\class-use\
     文件        3538  2016-08-07 22:29  遗传算法多份源码\Ga\GA-master\doc\class-use\GA.html
     文件        4239  2016-08-07 22:29  遗传算法多份源码\Ga\GA-master\doc\constant-values.html
     文件        3329  2016-08-07 22:29  遗传算法多份源码\Ga\GA-master\doc\deprecated-list.html
     文件        8299  2016-08-07 22:29  遗传算法多份源码\Ga\GA-master\doc\GA.html
     文件        6940  2016-08-07 22:29  遗传算法多份源码\Ga\GA-master\doc\help-doc.html
     目录           0  2019-02-23 19:39  遗传算法多份源码\Ga\GA-master\doc\index-files\
     文件        4028  2016-08-07 22:29  遗传算法多份源码\Ga\GA-master\doc\index-files\index-1.html
     文件        3722  2016-08-07 22:29  遗传算法多份源码\Ga\GA-master\doc\index-files\index-2.html
     文件        2416  2016-08-07 22:29  遗传算法多份源码\Ga\GA-master\doc\index.html
     文件        3532  2016-08-07 22:29  遗传算法多份源码\Ga\GA-master\doc\overview-tree.html
     文件         687  2016-08-07 22:29  遗传算法多份源码\Ga\GA-master\doc\package-frame.html
     文件           2  2016-08-07 22:29  遗传算法多份源码\Ga\GA-master\doc\package-list
     文件        3752  2016-08-07 22:29  遗传算法多份源码\Ga\GA-master\doc\package-summary.html
     文件        3541  2016-08-07 22:29  遗传算法多份源码\Ga\GA-master\doc\package-tree.html
     文件        3409  2016-08-07 22:29  遗传算法多份源码\Ga\GA-master\doc\package-use.html
     目录           0  2019-02-23 19:39  遗传算法多份源码\Ga\GA-master\doc\resources\
     文件        2313  2016-08-07 22:29  遗传算法多份源码\Ga\GA-master\doc\resources\background.gif
     文件         291  2016-08-07 22:29  遗传算法多份源码\Ga\GA-master\doc\resources\tab.gif
............此处省略554个文件信息

评论

共有 条评论