matlab遗传算法比启动时具有更高的适应值(具有线性约束)?

时间:2014-07-15 18:09:41

标签: algorithm matlab genetic-algorithm

遗传算法返回的值比启动时的适应值更高。

这是来自我的选择吗?

问题似乎是三个变量的线性约束总和等于1.但是我如何强加它并仍然使ga工作?没有约束就是找到最低限度。

ConstraintFunction = @simple_constraint;

options = gaoptimset('MutationFcn',@mutationadaptfeasible);

options = gaoptimset(...
'PopulationSize', 150);
options = gaoptimset(options,'Generations',150,'StallGenLimit', 140);
X0 = [0.35 0.22 0.12 0 0.4 0.6]; % Start point (row vector)
options = gaoptimset(options,'InitialPopulation',X0);
options = gaoptimset(options,'PlotFcns',{@gaplotbestf, @gaplotstopping});

% rng(0, 'twister');
rng(1,'twister') % for reproducibility

[x,fval] = ga(ObjectiveFunction,nvars,[],[],[],[],LB,UB,ConstraintFunction,options)

function [c, ceq] = simple_constraint(x)
c = [];
ceq = [(x(4) + x(5) + x(6) -1)];

优化终止:适应值的平均变化小于options.TolFun  和约束违规小于options.TolCon。

results

0 个答案:

没有答案