Dual infeasible and Unbound objective function

68 views
Skip to first unread message

zd D

unread,
Apr 14, 2020, 6:31:29 AM4/14/20
to YALMIP
Hi I have a question about that the Yalmip can't solve the problem because Dual infeasible due to empty column 'x5' and Unbounded objective function (CPLEX-IBM).
I don't know where the problem is. Maybe it's in my objective function but I don't know how to modify it. can you help me to solve it.
The code is in the attachment.

Thank you in advance.
Untitled.m

Johan Löfberg

unread,
Apr 14, 2020, 6:49:52 AM4/14/20
to YALMIP
First, there is no official command n YALMIP called solvesdp, so you cannot have studied the tutorials

Secondly, your code is trivially vectorizable, so simplify the code to get rid of most if not all for-loops

Third, are you aware that you are setting up nonconvex quadratic models in the second problem? It does not appear so, as you don't tell cplex to search for global solutions

Fourth, it looks like delta0 and delta1 only can 0 or 1, i.e. binary, but you still use an continuous variable to represent it. If you use binaries, you can then linearize the nonconvex bilinear ojective

Fifth, you appear to be using huge big-M constants. Have you really analyzed the problem and shown that those are reasonable values. THey hould be as small as possible. As it is now, you are creating numerically poor models, with weak relaxations. It looks like there are some very simple combinatorial relations between the fai and delta variables

I.e., before even starting here, you have to clean up and simplify the model

Johan Löfberg

unread,
Apr 14, 2020, 6:54:52 AM4/14/20
to YALMIP
and it is very unclear how you intend to perform a bisection here, as nothing in the first problem depends on the solution in the second problem, i.e. the solution will always be the same, and I don't see anything in the second model that varies either

Johan Löfberg

unread,
Apr 14, 2020, 7:11:02 AM4/14/20
to YALMIP
I also think you have an error in these

  for k=1:T   
           sss=binvar(2,1);
           F=[F,sum(sss)==1,
             implies(sss(1),[delta(k)>=0,delta1(k)==1]);
             implies(sss(2),[delta(k)<=0,delta1(k)==0]);
             ];
        end
        for k=1:T   
           sss=binvar(2,1);
           F=[F,sum(sss)==1,
             implies(sss(1),[delta(k)>=0,delta0(k)==0]);
             implies(sss(2),[delta(k)<=0,delta1(k)==1]);
             ];
        end


the lack of symmetry in the delta0/1 in the two blocks is suspicious

But as I said earlier, these things all model something trivial most likely with no reason to use implications
Reply all
Reply to author
Forward
0 new messages