利用演化算法求约束优化问题。
姓名学号指导老师:
1问题:用遗传算法求解下列约束优化问题:
采用实数向量编码,每一个个体是一实数对。本文采用二进制编码,自变量精度取小数点后三位,一个自变量需要二进制位数为14位,总共需要28位二进制来编码两个自变量。
将二进制编码翻译为变量的实数形式:
本文使用目标函数作为适应函数。
采用轮盘赌算法。
随机挑选两条不同的染色体,随机选出杂交位点,然后交换片段。完成后检查重组后的染色体是否满足约束条件,若不满足,则舍弃,恢复原染色体并重新杂交,直到完成15对染色体的杂交。
随机生成14个随机数对应于每条染色体的每个基因位点,若则对该基因位点进行变异。同时完成变异后检查是否满足约束条件,若不满足,则舍弃变异,恢复染色体并重新变异直到满足约束条件为止。
种群规模为30,最大代数为1000代,杂交概率0.9,变异概率0.1
随机产生初始种群,自动生成初始群体,完成检查是否满足约束条件,若不满足,则重新初始化直到有30个个体满足约束条件为止。
2.9 终止条件:
算法运行所指定的最大代数后终止,即1000代后终止迭代。
表1 四次实验结果比对表。
由表1可以看出迭代次数越多遗传算法的效果可能越好;并且多次迭代结果较为稳定,证明没有陷入局部优化。
表2 某2次迭代过程表。
由表2可以看出迭代结果在经过若干代后已经趋于稳定;同时随着迭代次数的增加,最优值越来越靠近目标值。
对原有遗传算法进行改进,在进行重组时将最好的两个个体保留下来直接进入下一次迭代,剩余个体继续保持原来重组方式。
表3 不同遗传算法运算比对表。
由表3可以看出实验结果稳定。
附录(演化算法j**a实现**):
import
import
public class ga
public static final int pop_size=30;//种群数目。
public static string pop=new string[pop_size];/种群编码。
public static pair result=new pair[pop_size];/种群代表的结果。
public static final int length=28;//编码长度,因为要精确到小数点后六位,所以编为22位长,有一公式可参考。
public static double fitness=new double[pop_size];/存放种群适应度。
public static final double pc=0.90;//交叉率。
public static final double pm=0.1;//变异率。
public static double p=new double[pop_size];/轮盘赌方法个体适应度概率。
public static double q=new double[pop_size];/q[i]是前i项p之和。
public static pair pair=new pair(0,0);
public static max max=new max(0, pair);/最大值。
public static random random=new random();用于产生随机数的工具。
/* 约束条件 */
public static double gx1(pair result)
public static double gx2(pair result)
/*初始化种群*/
public void initialization()
for(int i=0;i
* 解码方法,将二进制字节码还原为解。
public void decoding()
/* 适应度函数,也是目标函数*/
public void fitness()
/*交叉操作*/
public void crossover()
* 变异操作。
public void mutation()
for (int i = 2; i < i++)
string s=pop[i];
for (int j = 0; j < length; j++)
double k=
作业调度算法 先来先服务算法,短作业算法
操作系统 实验报告。题目 作业调度算法。班级 网络工程。姓名 朱锦涛。学号 e31314037 一 实验目的。用 实现页面调度算法,即先来先服务 fcfs 调度算法。短作业优先算法 高响应比优先调度算法。通过 的具体实现,加深对算法的核心的理解。二 实验原理。1.先来先服务 fcfs 调度算法。fc...
作业调度算法 先来先服务算法,短作业算法
操作系统 实验报告。题目 作业调度算法。班级 网络工程。姓名 朱锦涛。学号 e31314037 一 实验目的。用 实现页面调度算法,即先来先服务 fcfs 调度算法。短作业优先算法 高响应比优先调度算法。通过 的具体实现,加深对算法的核心的理解。二 实验原理。1.先来先服务 fcfs 调度算法。fc...
算法初步作业
1.下面对算法描述正确的一项是 a 算法只能用自然语言来描述 b 算法只能用图形方式来表示。c 同一问题可以有不同的算法 d 同一问题的算法不同,结果必然不同。2.对赋值语句的描述正确的是 可以给变量提供初值 将表达式的值赋给变量。可以给一个变量重复赋值 不能给同一变量重复赋值。a b c d 3....