对于线性约束,我们写矩阵A和b。
我想在满足某些条件时写一些约束。假设我们有两个约束:
x(1) + 2*x(2) <= 6;
x(1) - x(2) + 2*x(3) <= 7;
所以我的A和B是:
A = [1 2 0; 1 -1 2]
b = [6 7]
现在我只想在x(4) >=0
时检查我的第二个约束
如何在matlab中为GA写这个?
答案 0 :(得分:0)
您可以使用以下技巧:
bigNumber = 1e+9; % may depend on your application
A = [1 2 0 0; 1 -1 2 bigNumber]
b = [6 7]
说明的
如果x(4) < 0
,则始终会满足第二个约束,因为x(4) * bigNumber << 0
只要bigNumber >> abs(x)
。
作为替代,您可以先解决上述问题。然后,检查是否x(4) >= 0
。如果没有,请在没有第二个约束的情况下计算问题(并添加x(4) < 0
)。