完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
各位大神先看看我的程序,这是借鉴网上一位师兄的,按照自己的需求做了修改:
clc format long %--------------------控制参数设置------------------- % 变量上下界及求解精度 min_var = [0,0,0,0,0,0,0,0]; max_var = [420,1300,360,300,320,600,1300,600]; scale_var = 1e-6; % 种群数 popsize = 40; % 进化代数 maxgen = 200; % 交叉概率 pc = 0.8; %变异概率 pm = 0.05; %-------------------产生初始种群并进行相应的操作------------------- % 编码,初始化种群 [bin_gen,bits] = encoding(min_var,max_var,scale_var,popsize); % 解码,求适应度函数 fitness = decoding('fangzhen',bin_gen,bits,min_var,max_var,popsize); % 为最优保存策略做准备 [curbest_indiv,curbest_fitness] = findbest_indiv(fitness,bin_gen); % 初始种群中的最优个体和最优适应度值 itbest_indiv = curbest_indiv; % 迄今为止最好的个体 itbest_fitness = curbest_fitness; % 迄今为止最好的适应度值 new_gen = bin_gen; % new_gen为参与遗传操作的种群 pf=[] %--------------------开始进行迭代-------------------- for gen = 1:maxgen new_gen = selection(new_gen,fitness,popsize); % 选择操作 new_gen = crossover(new_gen,pc); % 交叉操作 new_gen = mutation(new_gen,pm); % 变异操作 fitness = decoding('fangzhen',new_gen,bits,min_var,max_var,popsize); % 解码,求适应度函数 [new_gen,curbest_indiv,curbest_fitness(gen)] = elitist(new_gen,itbest_indiv,itbest_fitness,fitness,popsize); % 最优保存策略 itbest_indiv = curbest_indiv; itbest_fitness = curbest_fitness(gen); fprintf(1,'gen: %d, Best: %6.14fn',gen,itbest_fitness);% 输出每代的最优值 pf=[pf,itbest_fitness]; px=[px,itbest_indiv]; end plot(pf) hold off 我希望在仿真结束以后,输出每代最优值的同时 输出它对应变量的值(十进制形式的)。 请问我该怎么修改? |
|
相关推荐
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1533 浏览 1 评论
200圆!求助大佬给一份VSG并网和离网模式的simulink仿真
1817 浏览 0 评论
MATLAB(3)--矩阵的引用(sub2ind、ind2sub、reshape函数使用)
2634 浏览 0 评论
2970 浏览 0 评论
4094 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 20:13 , Processed in 0.468347 second(s), Total 71, Slave 54 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号