指定GA中的总体范围

时间:2015-11-18 10:37:56

标签: matlab optimization genetic-algorithm

我想指定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]但实际上并非如此。

1 个答案:

答案 0 :(得分:1)

由MATLAB文档指定:

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

在设计变量上定义了一组下限和上限,以便在“LB≤x≤UB'”范围内找到解。

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

实施例: 用给定的下边界和上边界来解决以下不等式:

enter image description here

解决方案如下:

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)