如何在GA的某些条件下编写线性约束?

时间:2017-03-13 09:25:29

标签: matlab

对于线性约束,我们写矩阵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写这个?

1 个答案:

答案 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)。