- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
利用演化算法求约束优化问题
姓名: 学号 指导老师:
1问题:
用遗传算法求解下列约束优化问题:
2 演化算法计算过程:
2.1 个体的编码:
采用实数向量编码,每一个个体是一实数对。本文采用二进制编码,自变量精度取小数点后三位,一个自变量需要二进制位数为14位,总共需要28位二进制来编码两个自变量。
2.2 译码:
将二进制编码翻译为变量的实数形式:
2.3 适应函数:
本文使用目标函数作为适应函数
2.4 选择策略:
采用轮盘赌算法。
2.5 杂交算子:
随机挑选两条不同的染色体,随机选出杂交位点,然后交换片段。完成后检查重组后的染色体是否满足约束条件,若不满足,则舍弃,恢复原染色体并重新杂交,直到完成15对染色体的杂交。
2.6 变异算子:
随机生成14个随机数对应于每条染色体的每个基因位点,若则对该基因位点进行变异。同时完成变异后检查是否满足约束条件,若不满足,则舍弃变异,恢复染色体并重新变异直到满足约束条件为止。
2.7 参数设置:
种群规模为30,最大代数为1000代,杂交概率0.9,变异概率0.1
2.8 初始化:
随机产生初始种群,自动生成初始群体,完成检查是否满足约束条件,若不满足,则重新初始化直到有30个个体满足约束条件为止。
2.9 终止条件:
算法运行所指定的最大代数后终止,即1000代后终止迭代。
3 实验结果
表1 四次实验结果比对表
迭代次数500 迭代次数1000 第一次运行 第二次运行 第三次运行 第四次运行 1.227 1.248 1.245 1.253 3.303 3.342 3.259 3.251 0.10944011045 0.09385124541 0.11469797685 0.11279980732 由表1可以看出迭代次数越多遗传算法的效果可能越好;并且多次迭代结果较为稳定,证明没有陷入局部优化。
表2 某2次迭代过程表
代数(迭代总次数1000) 1 1.289 4.363 0.05720063406280318 31 1.295 4.23 0.07322047082080911 75 1.292 4.254 0.07519561586626718 134 1.241 4.256 0.09465988458390849 137 1.225 4.262 0.09525349615511472 最终结果 1.225 4.262 0.09525349615511472 1 1.337 3.246 0.0569004294795720 3 1.321 3.306 0.06461712393829212 10 1.297 3.296 0.08375858854088097 48 1.281 3.275 0.09739037920565881 149 1.271 3.219 0.10366960257048366 最终结果 1.271 3.219 0.10366960257048366
由表2可以看出迭代结果在经过若干代后已经趋于稳定;同时随着迭代次数的增加,最优值越来越靠近目标值。
对原有遗传算法进行改进,在进行重组时将最好的两个个体保留下来直接进入下一次迭代,剩余个体继续保持原来重组方式。
表3 不同遗传算法运算比对表
原遗传算子 改进遗传算子 第三次运行 第四次运行 第五次 第六次 1.245 1.253 1.267 1.251 3.259 3.251 3.235 3.249 0.11469797685 0.11279980732 0.10687750692 0.11349618572 由表3可以看出实验结果稳定。
附录(演化算法java实现代码):
import java.lang.Math;
import java.util.Random;
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 stat
您可能关注的文档
最近下载
- (完整word版)人教版四年级上册数学复习教案.doc VIP
- 煤矿安全操作规程(2023年).docx
- 工作相关肌肉骨骼疾患的工效学预防指南 第 4 部分 轨道交通设备制造作业.pdf VIP
- 园林景观工程施工计划.pdf
- OC IIS的定义(液晶玻璃的检验与不良判定).ppt VIP
- 2025届高考语文复习:文言文阅读+课件.pptx VIP
- 大班数学《坐船去探险》教案课件材料.doc VIP
- 工作相关肌肉骨骼疾患的工效学预防指南 第 6 部分 木质家具制造作业.pdf VIP
- 初中英语八年级上册首字母填空专项练习(共100题,附参考答案).doc
- 工作相关肌肉骨骼疾患的工效学预防指南 第 9 部分 公交车驾驶作业.pdf VIP
文档评论(0)