遗传算法如何产生解决方案?

时间:2015-03-18 07:50:47

标签: matlab genetic-algorithm

我使用下面给出的GA代码。我想知道生成可行解决方案的顺序是什么。  哪个约束它将满足第一线性或非线性?如果两个约束都不满足它给出了什么样的解决方案? 是否有任何程序来确定约束的优先级(例如必须满足其中一个约束)。?

%cost_1 is Objective function, reli_1 is nonlinear constraint function

%time_1 is matrix containing time of different components and no. of components = NoOfVariable

lb=zeros(NoOfVariables,1);

ub=ones(NoOfVariables,1);

IntCon=[1:NoOfVariables];

[v, fval] = ga(@cost_1, NoOfVariables,time_1,400, [], [], lb, ub, @reli_1,IntCon);

1 个答案:

答案 0 :(得分:1)

来自documentation

  

ga解算器处理线性约束和边界不同   非线性约束。所有的线性约束和界限都是   整个优化都很满意。然而,ga可能并不满足所有   每一代的非线性约束。如果ga收敛到a   解决方案,将满足非线性约束   溶液

这意味着线性约束始终是开箱即用的,因为人口生成和交配策略会考虑到这一点(除非你实现自己的交叉函数并搞砸了)但非线性约束在之后评估,也可能不是满意。因此,在人口中,将有一部分人不满足这种线性约束,这些结果将被丢弃。你可以看到在运行后有多少人被丢弃。

据我所知,无法控制此行为或交换评估顺序。