题目如下:用遗传算法求该Shubert函数在[-10,10]*[-10,10]上的最大值
采用谢菲尔德大学的遗传算法工具箱,matlab代码如下:
number_population=500;%种群规模:个体个数
number_generations=100;%最大遗传代数
number_variable=2;%变量个数
length_chromosome=20;%染色体长度,即每个个体由多少个字符编码
gap=0.9;%代沟:一个群体中有90%的个体会被选择、交叉、变异等,剩余的10%直接复制到下一代
sub=-10;%变量取值范围的下界
up=10;%变量取值范围的上界
select_code_gray=1;%是否使用格雷编码:1 使用、0 不使用
select_log=0;%是否使用对数标度:1 使用、0 不使用
trace=zeros(number_generations,2);%记录迭代轨迹:第一列记录某一代群体中的最优解,第二列记录某一代的平均值
fieldd=[rep([length_chromosome],[1,number_variable]);rep([sub;up],[1,number_variable]);rep([1-select_code_gray;select_log;1;1],[1 num