Matlab中的Gurobi没有目标函数

时间:2018-08-01 14:12:10

标签: matlab gurobi

我正在Matlab中使用Gurobi来确定一个线性等式和线性不等式系统是否至少具有一个解。我没有最小化/最大化的目标功能。

这是我的代码(我尚未发布矩阵Aineq, Aeq, bineq, beq的实际内容)

clear model;
model.A=[Aineq; Aeq];
model.obj=[]; 
model.sense=[repmat('<', size(Aineq,1),1); repmat('=', size(Aeq,1),1)];
model.rhs=full([bineq; beq]); 
params.outputflag = 0; 
result=gurobi(model, params);
if isfield(result,'x')
    exists=1;
else
    exists=0;
end

问题:我应该将什么设置为目标函数?如果我如上所述写model.obj=[];,我将得到

Error using gurobi
Incorrect size(model.obj)

如果删除模型行,我将得到

Error using gurobi
model must contain fields: A, obj, sense, and rhs

This这个问题与我的问题有关,但没有说明用什么代替目标函数。

1 个答案:

答案 0 :(得分:1)

不幸的是,我没有所需的声誉来发表评论,所以这是一个答案。

矩阵A是稀疏矩阵很重要,因为Gurobi的MATLAB API仅接受稀疏矩阵:double。然后,只需从代码中删除行operator T&&()就可以了。如果没有将任何目标传递给Gurobi,它将自动使用0作为目标函数,因此您的模型将根据您的约束最小化0。在这种情况下,每个可行的解决方案都是最佳的,并且可以满足您的约束。或者,您可以手动完成此操作

model.A=sparse([Aineq; Aeq])