2.4 运行JSOP

在上一节中,我们将适应度函数设定为Rastrigin函数,现在我们就通过JSOP来寻找该函数的全局最小值(JSOP默认寻找函数的最小值而非最大值)。

打开usr.m,相关参数设置如下

%仿真设置
model_name='test.cst';      %CST模型路径
result_route='1D ResultsS-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。

打开JSOPinterface esult.txt,可以看到每一代的每个个体的参数和适应度值,如下图所示,图中展示了某一代的第35-40号个体的信息。在每一代信息的最下方还有每一代的最优个体和平均适应度值,在图中,最优个体为17号个体,平均适应度值为8.0588

 

如果JSOP没有优化出期望的结果,可以重新运行JSOP进行优化,运行时JSOP会先将result.txt中的数据备份到同一文件夹下的result.old.txt中,再将result.txt清空。需要注意的是,result.old.txt只对上一次的运行结果进行备份,因此若要保留运行结果,建议对result.txt进行手动备份。

原文地址:https://www.cnblogs.com/bill-h/p/13073873.html