【问题标题】:Specify the range of a population in GA在 GA 中指定总体的范围
【发布时间】:2015-11-18 19:21:43
【问题描述】:

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

【问题讨论】:

  • 您希望初始人口在该范围内,还是必须 x 始终保持在 [0;1] 内?
  • x 始终属于生成的种群,我希望它保持在 [0;1] 内

标签: matlab optimization genetic-algorithm


【解决方案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)

【讨论】:

  • 好的,但在我的情况下,将在 A 和 b 中放入什么值?
  • 如果不存在线性不等式,则设置 A=[]b=[]
  • 是的,我理解边界,现在我在想我的情况是否存在相等以及如何建模它考虑有一个“幂”运算符而不是乘法。例如:L=[0.1595;0.1640;0.1790] 和 R=[0.4;0.2;0.5], [L R] ^ [x(1);x(2)]
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-04-04
  • 2019-08-13
  • 1970-01-01
  • 1970-01-01
  • 2016-04-07
  • 2021-10-24
  • 1970-01-01
相关资源
最近更新 更多