如何在matlab中定义线性规划?

如何在matlab中定义线性规划?,matlab,linear-programming,Matlab,Linear Programming,我在MATLAB中定义优化问题时遇到问题 我试图表达7个二进制决策变量。但前3个二进制决策变量之和不能大于1,后4个二进制决策变量之和不能大于1 A = [1,1,1,0,0,0,0;... 0,0,0,1,1,1,1]; b = [1;1]; % objective function f = [0.1, 0.5, 0.2, 0.2, -2.0, 0.2, 0.6]; lb = zeros(7,1); ub = ones(7,1); % Enforce all of the dec

我在MATLAB中定义优化问题时遇到问题

我试图表达7个二进制决策变量。但前3个二进制决策变量之和不能大于1,后4个二进制决策变量之和不能大于1

A = [1,1,1,0,0,0,0;...
    0,0,0,1,1,1,1];
b = [1;1];

% objective function 
f = [0.1, 0.5, 0.2, 0.2, -2.0, 0.2, 0.6];

lb = zeros(7,1);
ub = ones(7,1); % Enforce all of the decision variables to be binary
intcon = [];  % all of my variables are binary, so I assume this should be blank.

x = intlinprog(f,intcon,A,b,lb,ub);
我想强制所有决策变量都是二进制的,所以我包括以下几行:

lb = zeros(7,1);
ub = ones(7,1); % Enforce all of the decision variables to be binary 
intcon = [];  % all of my variables are binary, so I assume this should be blank.
另外,我没有等式约束,所以我没有在上面的问题中包括Aeq和beq。但是当我尝试在没有这些参数的情况下运行解算器时,比如ex=intlinprogf,intcon,A,b,lb,ub;它告诉我

Error using intlinprog (line 123)
The number of columns in Aeq must be the same as the number of elements of f.
但如果我没有任何平等约束,我该如何定义它

以下是文件: 页面顶部的示例显示,它可以在不使用Aeq和beq的情况下调用x=intlinprogf、intcon、A、b,因此我知道这是可能的

谢谢。

如果指定下限和上限约束,则不能忽略Aeq和Beq,因为此函数使用位置参数

但是,可以传递空矩阵,从而产生零等式约束:

x = intlinprog(f,intcon,A,b,[],[],lb,ub);

您可能需要修复您的描述,因为您拥有的不是线性程序。如果所有变量都是二进制的,那么它们都需要在整数约束中列出。否则,它将优化线性规划,其中每个变量在闭合区间[0,1]上取任何实数。