在1.1中,我们介绍了JSOP的架构,其中最外层为接口,包括JSOP/interface/usr.m和JSOP/interface/fit.m
打开usr.m,我们可以看到,usr分为四个部分:仿真设置,变量设置,种群设置,其它设置。
仿真设置:
如果您是要优化一个已知的函数,则无需进行仿真设置,只需将start_cst设置为fasle.
如果您需要优化CST模型,则需要进行仿真设置,设置方法在第3章中介绍。
变量设置:
var_name={'d','w'};
var_name是变量的名称,其中d和w为待优化的函数变量。
var_bound=[[-10,10];[-5,5]];
var_bound是变量变化范围,且是一个矩阵,其中第k行的第1列为var_name中第k个变量的下限,第k行的第2列为var_name中第k个变量的上限。在本例中 -10<d<10, -5<w<5.
inserts=[[1,2];[3,4]];
在生成初代种群时,可以指定一些参数确定的个体插入初代。inserts为一个矩阵,每一行表示一个插入的个体,在本例中表示插入d=1,w=2和d=3,w=4两个个体。
var_constrain='d<w';
如果变量之间需要满足约束,可将约束条件写在var_constrain当中。在本例中d和w需满足约束d<w。如果有更多的约束,可使用Matlab逻辑运算符添加,例如'd<w && w>0'.
种群设置:
MAXGEN=100;
MAXGEN为最大遗传代数。当完成第MAXGEN代后,程序结束,实际上也可以中途停止程序。
NIND=40;
NIND为一代中个体的数量。
PRECI=10;
在遗传算法中,个体是通过二进制位串来表示,例如0011100101...PRECI是表示一个十进制变量所需的二进制位数,在本例中,单个变量用长度为10的位串表示,因此每个个体都是长度为20的位串,d和w均可在1024个等间隔分布的值中取值。
MTR=2;
在遗传算法中,位串上的每一个位代表一个基因,而变异代表基因突变。变异能够帮助个体跳出局部,寻找全局最优解。Matlab遗传算法工具箱中设定了默认的变异率,MTR表示变异率相对默认变异率的倍数。在本例中,变异率取默认变异率的两倍。
其它设置:
plot_graph=2;
进化曲线是以种群代数为横坐标、个体适应度函数为纵坐标的曲线,包括了表示每一代最优个体适应度和表示每一代平均适应度的两条曲线。通过plot_graph可以设置进化曲线的绘制模式,其中0表示不绘制进化曲线,1表示每进化一代就更新进化曲线,2表示完成最后一代后再绘制进化曲线。
plot_ave=false;
若不想绘制表示种群平均适应度的曲线,则将plot_ave设置为false,反之则为true.
在usr.m的最后一行有JSOP的版本号