在遗传算法(GA)输出函数的问题

3视图(30天)
马可Milanesi
马可Milanesi 2021年3月21日
编辑: 马可Milanesi2021年3月21日
这是我的主要脚本,我有一个问题在输出函数必须保存每一代的hystory垫文件。“输出函数”(@myfun代码),我写了拯救的hystory第一和第二第三遗传算法ga但它只保存第一个和最后一个值。
主要功能
清晰的所有,关闭所有,clc
dt = 0.001;
popsize = 10;
MaxGenerations = 10;
s =特遣部队(“年代”);
G = (1 / (1 + 5 * s)) * exp (- s)
rng (1,“旋风”)%的再现性
population_PID =兰德(popsize, 3);
population_I_PD =兰德(popsize, 3);
population_PI_D =兰德(popsize, 3);
% % PID
options_PID = optimoptions (@ga,“PopulationSize”popsize,“MaxGenerations”MaxGenerations,“InitialPopulation”population_PID,“OutputFcn”,@myfun_pid);
[x_PID, fval_PID exitflag、输出population_PID,分数)= ga (@ (K) pidtest (G, dt, K), 3,黑眼圈(3),0 (3,1),[],[],[],[],[],options_PID);
fval_PID
% % I-PD
options_I_PD = optimoptions (@ga,“PopulationSize”popsize,“MaxGenerations”MaxGenerations,“InitialPopulation”population_I_PD,“OutputFcn”,@myfun_ipd);
[x_I_PD, fval_I_PD exitflag、输出population_I_PD,分数)= ga (@ (K) ipdtest_gapid (G, dt, K), 3,黑眼圈(3),0 (3,1),[],[],[],[],[],options_I_PD);
fval_I_PD
% %πd的
options_PI_D = optimoptions (@ga,“PopulationSize”popsize,“MaxGenerations”MaxGenerations,“InitialPopulation”population_PI_D,“OutputFcn”,@myfun_pi_d);
[x_PI_D, fval_PI_D exitflag、输出population_PI_D,分数)= ga (@ (K) dpitest (G, dt, K), 3,黑眼圈(3),0 (3,1),[],[],[],[],[],options_PI_D);
fval_PI_D
我的乐趣PID
所有的产出函数是相同的,但只有在最后ga,我运行它不保存在正确的方法。
函数[选项,optchanged] = myfun_pid(选项、状态标志)
持续的history_pid
持续的cost_pid
optchanged = false;
开关国旗
情况下“init”
history_pid (:,: 1) = state.Population;
cost_pid (: 1) = state.Score;
情况下{“通路”,“中断”}
党卫军=大小(history_pid, 3);
history_pid (:,: ss + 1) = state.Population;
cost_pid (: ss + 1) = state.Score;
情况下“完成”
党卫军=大小(history_pid, 3);
history_pid (:,: ss + 1) = state.Population;
cost_pid (: ss + 1) = state.Score;
保存history_pid。垫history_pid cost_pid
结束
hystory_pid.mat
我的乐趣πd的
函数[state_PI_D, options_PI_D optchanged] = myfun_pi_d (options_PI_D、state_PI_D flag_PI_D)
持续的history_dpi
持续的cost_dpi
optchanged = false;
开关flag_PI_D;
情况下“init”
history_dpi (:,: 1) = state_PI_D.Population;
cost_dpi (: 1) = state_PI_D.Score;
情况下{“通路”,“中断”}
党卫军=大小(history_dpi, 1);
history_dpi (:,: ss + 1) = state_PI_D.Population;
cost_dpi (: ss + 1) = state_PI_D.Score;
情况下“完成”
党卫军=大小(history_dpi, 1);
history_dpi (:,: ss + 1) = state_PI_D.Population;
cost_dpi (: ss + 1) = state_PI_D.Score;
保存history_pi_d。垫history_pi_d cost_pi_d
结束
hystory_pi_d.mat
就像我说的,功能是一样的,但在这种情况下,输出函数的遗传算法是错误的

答案(0)

类别

找到更多的在遗传算法帮助中心文件交换

下载188bet金宝搏


释放

R2019b

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!