我想指定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]但实际上并非如此。
答案 0 :(得分:1)
由MATLAB文档指定:
x = ga(fitnessfcn,nvars,A,b,Aeq,beq,LB,UB)
在设计变量上定义了一组下限和上限,以便在“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)