2.4 运行JSOP
在上一节中,我们将适应度函数设定为Rastrigin函数,现在我们就通过JSOP来寻找该函数的全局最小值(JSOP默认寻找函数的最小值而非最大值)。
打开usr.m,相关参数设置如下
%仿真设置
model_name='test.cst'; %CST模型路径
result_route='1D Results\S-Parameters'; %仿真结果在Navigation Tree中的路径
result_name='SZmax(1),Zmax(1)'; %仿真结果的名称(参见rtdata.txt)
plot_mode='phase'; %仿真结果的模式,包括'magnitude','magnitudedb', 'phase', 'polar', 'real', 'imaginary', 'smith', 'smithy'
solver_type='FDSolver'; %频域求解器:FDSolver 时域求解器:Solver
start_cst=false; %是否调用CST
%变量设置
var_name={'d','w'}; %变量名称
var_bound=[[-10,10];[-10,10]]; %变量变化范围 [ [变量1的下界,变量1的上界] ; [变量2的下界,变量2的上界] ; ...]
inserts=[ ]; %插入指定个体
var_constrain=''; %变量的限制条件,若无限制请输入''
%种群设置
MAXGEN=100; %最大代数
NIND=40; %一代中个体的数量
PRECI=20; %单个变量的二进制位数
MTR=1; %变异率(默认值的倍数)
%其它设置
plot_graph=2; %0:不绘制进化曲线 1:每进化一代就更新进化曲线 2:完成最后一代后再绘制进化曲线
plot_ave=false; %是否显示种群平均值
%----------------------------------------------------------------------------------------
main_function( model_name, result_route, result_name, plot_mode, solver_type, ...
var_name, var_bound', inserts, var_constrain, ...
MAXGEN, NIND, PRECI, MTR, ...
plot_graph, plot_ave, start_cst);
%JSOP1.2
由于不需要调用CST,因此“仿真设置”中除了start_cst,其它的变量可任意设置,只要没有语法错误即可。
运行usr.m,几秒钟后程序即运行完毕并显示出进化曲线图,如下图所示。

每一代的最优个体的适应度值输出在命令行窗口,可以看到,当种群进化到第40代,就基本找到了全局最小值0。

打开JSOP\interface\result.txt,可以看到每一代的每个个体的参数和适应度值,如下图所示,图中展示了某一代的第35-40号个体的信息。在每一代信息的最下方还有每一代的最优个体和平均适应度值,在图中,最优个体为17号个体,平均适应度值为8.0588
如果JSOP没有优化出期望的结果,可以重新运行JSOP进行优化,运行时JSOP会先将result.txt中的数据备份到同一文件夹下的result.old.txt中,再将result.txt清空。需要注意的是,result.old.txt只对上一次的运行结果进行备份,因此若要保留运行结果,建议对result.txt进行手动备份。

浙公网安备 33010602011771号