Hi
I am trying to solve a type of BMI problem, but I do not have PenBMI installed. Based on the instructions (at the end of
http://users.isy.liu.se/johanl/yalmip/pmwiki.php?n=Examples.DecayRate), I set an option 'bmibnb.upper' to 'none' so that the upper bound is generated using heuristics. However, my code keeps crashing. I have a small example to illustrate the problem:
yalmip('clear')
v = sdpvar(1);
t = sdpvar(1);
A = [-1 2;-3 -4]*v + [-1 0;0 1]*(1-v);
B = [-1 0;0 1]*v +[0 0;0 -1]*(1-v);
Q = sdpvar(2,2);
Y = sdpvar(2,2,'full');
F = [Q>eye(2), 10*eye(2)>Q, A*Q+Q*A'+B*Y+Y'*B' <= -t*eye(2), 100 >= t >= 0, 1>=v>=0];
solvesdp(F,-t,sdpsettings('solver','bmibnb','bmibnb.upper','none'));
I know a solution exists (set v = 1 and the problem is an LMI). Other code (such as the second Nonconvex semidefinite programming example at
http://users.isy.liu.se/johanl/yalmip/pmwiki.php?n=Tutorials.GlobalOptimization) seems to run fine (once I remove the solver settings are set bmibnb.upper to none).
However, when I run the code, I get the following error (yalmip error code 9): Unknown problem in solver (try using 'debug'-flag in sdpsettings) (Reference to non-existent field 'dinf'.). When I run the code with the debug flag, I get the following dump in Matlab:
??? Reference to non-existent field 'dinf'.
Error in ==> callsedumi at 82
pinf = info.dinf;
Error in ==> root_node_tighten at 40
output = feval(lowersolver,removenonlinearity(p));
Error in ==> bmibnb at 229
p = root_node_tighten(p,upper);
Error in ==> solvesdp at 355
eval(['output = ' solver.call '(interfacedata);']);
Also, if I remove the variable v from the unknowns (I set v = 1 and solve the problem), I get a solution if I use the command "solvesdp(F,-t)". However, if I use the bmibnb solver, it crashes with the same error (even though it is just solving an LMI).
If I remove the setting 'bmibnb.upper','none', I get the expected 'No suitable solver' error code. Does anyone have any suggestions on what is going wrong and how I can fix it? My yalmip version is 20130322.
Thank you
Slash