指定 GA 中的人口范围

Specify the range of a population in GA

我想指定MATLAB优化工具箱的遗传算法生成的种群范围:

function y= fitness_fct(x,L,R,score_initial)
    y=sqrt(power(((power(L,x(1)) +power(R,x(2))) -score_initial),2));  
    x(1) %here i see that the values are sometimes negative
end

for i=1:22    
    FitnessFunction =@(x) fitness_fct(x,L(i) ,R(i),score_initial(i));
    [x,fval] = ga(FitnessFunction,2);
end

在文档中,范围自动设置为 [0;1],但实际上并非如此。

如 MATLAB 文档所述:

x = ga(fitnessfcn,nvars,A,b,Aeq,beq,LB,UB) 

定义一组设计变量的下限和上限,'x',以便在范围 'LB ≤ x ≤ UB' 中找到解决方案。

注意:如果不存在线性等式,则设置Aeq=[]beq=[]

示例: 求解以下具有给定上下边界的不等式:

解决方法如下:

A = [1 1; -1 2; 2 1];
b = [2; 2; 3];
lb = zeros(2,1);
[x,fval,exitflag] = ga(@lincontest6,2,A,b,[],[],lb)

此处的代码仅指定了下限,但您可以轻松地为上限定义另一个向量。 在你的情况下 ub=ones(2,1) 等等:

[x,fval] = ga(FitnessFunction,2,[],[],[],[],lb,ub)