指定 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)
我想指定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)