我使用下面给出的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);
答案 0 :(得分:1)
ga解算器处理线性约束和边界不同 非线性约束。所有的线性约束和界限都是 整个优化都很满意。然而,ga可能并不满足所有 每一代的非线性约束。如果ga收敛到a 解决方案,将满足非线性约束 溶液
这意味着线性约束始终是开箱即用的,因为人口生成和交配策略会考虑到这一点(除非你实现自己的交叉函数并搞砸了)但非线性约束在之后评估,也可能不是满意。因此,在人口中,将有一部分人不满足这种线性约束,这些结果将被丢弃。你可以看到在运行后有多少人被丢弃。
据我所知,无法控制此行为或交换评估顺序。