Star
Star

Reputation: 2299

Gurobi in Matlab without objective function

I am using Gurobi in Matlab to determine whether a system of linear equalities and linear inequalities has at least one solution. I don't have an objective function to minimise/maximise.

This is my code (I haven't posted the actual content of the matrices 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

Question: what should I set as objective function? If I write model.obj=[]; as above I get

Error using gurobi
Incorrect size(model.obj)

If I delete the model line I get

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

This question is related to mine but it doesn't explain what to put in place of the objective function.

Upvotes: 0

Views: 549

Answers (1)

joni
joni

Reputation: 7157

Unfortunately I don't have the needed reputation to comment, so this is an answer.

It's important that your matrix A is a sparse matrix, because Gurobi's MATLAB API only accepts sparse matrices: model.A=sparse([Aineq; Aeq]). Then it should work by just removing the line model.obj = [] from your code. If no objective is passed to Gurobi, it will automatically use 0 as the objective function, so that your model will minimize 0 in subject to your constraints. In this case every feasible solution is optimal and satisfies your constraints. Alternatively, you could do this by hand with

model.obj = zeros(size(model.A, 2), 1);

Upvotes: 1

Related Questions