Bilinear program

32 views
Skip to first unread message

lening li

unread,
May 8, 2017, 10:51:01 AM5/8/17
to YALMIP
Hi,

I am computing a bilinear program as the following:

clear
clc
close all

yalmip('clear')

A = [-1 2;-3 -4];
B = [1;1];
m = [-2.3123;37.6877]; % feedforward components
% x = [-5;-5] % equilibrium point

% dot{x} = A * x + B * u;
% u = -Kx + m
% dot{x} = (A - BK) * x + m;

 % V_A = x^T * P_A * X + 2 q_A^T x + r_A
P_A = sdpvar(2,2);
q_A = sdpvar(2,1);
r_A = sdpvar(1,1);

lambda = sdpvar(1,1); % s - procedure to force this only hold for the region y < - x - 1

H_A = [1;1];
g_A = [-1];

K = sdpvar(1,2);

lAB = [-1;0];
FAB = [-1;1];
lAC = [1;-2];
FAC = [-1,1];
lBC = [1;-2];
FBC = [2;2];

constraints = [...
    [P_A,                     q_A + H_A * lambda;
    q_A.' + lambda.' * H_A.', r_A - 2 * g_A .' * lambda] >= 0,... % This is the positivity constraints
    ]

constraints = [constraints,...
    [(A-B*K).' * P_A + P_A * (A-B*K), P_A * m + (A-B*K).'*q_A;
    m.'*P_A + q_A.'*(A-B*K)        , 2*q_A.'*m] <= zeros(3)... % decreasing
    ]


options = sdpsettings('solver','bmibnb');

optimize(constraints,trace(P_A),options);

sol_P = value(P_A) %

sol_K = value(K) % gain

Why does penlab software cannot solve such simple problem?

Johan Löfberg

unread,
May 8, 2017, 11:14:06 AM5/8/17
to YALMIP
First, there is no such thing as a simple bilinear SDP

Second, why are you talking about penlab, you are obviously trying to use the global solver bmibnb

Third, penlab doesn't necessarily work well. I've never managed to get it to perform on any of the problems I've tested

Johan Löfberg

unread,
May 8, 2017, 11:17:41 AM5/8/17
to YALMIP
Fourth: it appears the zero solution is the optimal solution

optimize([constraints,-1000 <= recover(depends(constraints)) <= 1000],trace(P_A),sdpsettings(options,'bmibnb.upper','none'))
* Starting YALMIP global branch & bound.
* Branch-variables : 7
* Upper solver     : none
* Lower solver     : SeDuMi
* LP solver        : SCIP
 Node       Upper      Gap(%)       Lower    Open
    1 :    0.000E+00     0.00      3.940E-10   0  Poor bound  
* Finished.  Cost: 0 Gap: 0
* Timing: 0% spent in upper solver (0 problems solved)
*         4% spent in lower solver (15 problems solved)
*         28% spent in LP-based domain reduction (18 problems solved)



lening li

unread,
May 8, 2017, 12:02:19 PM5/8/17
to YALMIP
Thanks for the information, I just realize that I am using the bmibnb instead of the penlab. I think I got it. There is some trick I want to share is that you also want to put some constraints on the gain which is K, otherwise the solution you get is wired.

Thanks, I really appreciate your fast reply.
Reply all
Reply to author
Forward
0 new messages