MATLAB中适应度函数的约束

时间:2014-01-31 18:38:50

标签: matlab constraints

我需要在此适应度函数中优化权重:

f(x)=x(1)*a+x(2)*b+x(3)*c+x(4)*d;

(其中a,b,c,d是数字常数,x是4个权重的矢量)

我需要在我的函数中定义这些简单约束:

每个重量(x(i))必须介于0和1之间;

sum(x(i))= 1; (I = 1:4)

有人能帮帮我吗?

2 个答案:

答案 0 :(得分:0)

假设您有优化工具箱,

x= linprog([a,b,c,d],[],[],[1 1 1 1],1,[0 0 0 0],[1,1,1,1]);

答案 1 :(得分:0)

如果你最小化你的适应度函数,那么检查x是否可行(在你的搜索空间内)以及它是否满足你的约束,如果不是那么返回+无穷大(任何大数)或无穷大+一些惩罚,其中惩罚是较小的违反约束条件