source: proiecte/pmake3d/make3d_original/Make3dSingleImageStanford_version0.1/third_party/opt/yalmip/htmldata/bmi.htm @ 37

Last change on this file since 37 was 37, checked in by (none), 14 years ago

Added original make3d

File size: 5.5 KB
Line 
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2<html>
3
4<head>
5<meta http-equiv="Content-Language" content="en-us">
6<title>YALMIP Example : Solving BMIs locally</title>
7<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
8<meta content="Microsoft FrontPage 6.0" name="GENERATOR">
9<meta name="ProgId" content="FrontPage.Editor.Document">
10<link href="yalmip.css" type="text/css" rel="stylesheet">
11<base target="_self">
12</head>
13
14<body leftMargin="0" topMargin="0">
15
16<div align="left">
17
18<table border="0" cellpadding="4" cellspacing="3" style="border-collapse: collapse" bordercolor="#000000" width="100%" align="left" height="100%">
19  <tr>
20    <td width="100%" align="left" height="100%" valign="top">
21          <h2>Local solution of bilinear matrix inequalities (BMIs)</h2>
22    <hr noShade SIZE="1">
23    <p>
24    <img border="0" src="exclamationmark.jpg" align="left" width="16" height="16">This
25    example requires the solver <a href="solvers.htm#penbmi">PENBMI</a></p>
26    <p>BMI problems are solved locally just as easy as standard SDP
27    problems, by using the solver <a href="solvers.htm#penbmi">PENBMI</a>. As an example, the&nbsp;<a href="gevp.htm">decay-rate estimation problem</a> that we
28    earlier solved using a bisection, is solved with the following code.</p>
29    <table cellPadding="10" width="100%">
30      <tr>
31        <td class="xmpcode">
32        <pre>A = [-1 2;-3 -4];
33t = sdpvar(1,1);
34P = sdpvar(2,2);
35F = set(P&gt;eye(2))+set(A'*P+P*A &lt; -2*t*P);
36solvesdp(F,-t);</pre>
37        </td>
38      </tr>
39    </table>
40    <p> <a href="solvers.htm#penbmi">PENBMI</a> seem to perform better if
41        variables are constrained, so the following code is often recommended (see
42        the <a href="advanced.htm">advanced programming examples</a>).</p>
43    <table cellPadding="10" width="100%">
44      <tr>
45        <td class="xmpcode">
46        <pre>A = [-1 2;-3 -4];
47t = sdpvar(1,1);
48P = sdpvar(2,2);
49F = set(P&gt;eye(2))+set(A'*P+P*A &lt; -2*t*P);
50
51F = F + set(-100 &lt; recover(depends(F)) &lt; 100);
52
53solvesdp(F,-t);</pre>
54        </td>
55      </tr>
56    </table>
57                <p>As another example, the code below calculates an LQ optimal feedback.
58    (of-course, this can be solved much more efficiently by first recasting it
59    as a convex problem)</p>
60    <table cellPadding="10" width="100%">
61      <tr>
62        <td class="xmpcode">
63        <pre>A = [-1 2;-3 -4];B = [1;1];
64P = sdpvar(2,2);K = sdpvar(1,2);
65F = set(P&gt;0)+set((A+B*K)'*P+P*(A+B*K) &lt; -eye(2)-K'*K);
66solvesdp(F,trace(P));</pre>
67        </td>
68      </tr>
69    </table>
70    <p>More interesting, we can solve the LQ problem with constraints on the
71    feedback matrix.</p>
72    <table cellPadding="10" width="100%">
73      <tr>
74        <td class="xmpcode">
75        <pre>A = [-1 2;-3 -4];B = [1;1];
76P = sdpvar(2,2);K = sdpvar(1,2);
77F = set(K&lt;0.1)+set(K&gt;-0.1)+set(P&gt;0)+set((A+B*K)'*P+P*(A+B*K) &lt; -eye(2)-K'*K);
78solvesdp(F,trace(P));</pre>
79        </td>
80      </tr>
81    </table>
82    <p>Reasonable initial guesses is often crucial in non-convex optimization.
83    The easiest way to specify initial guesses in YALMIP is to use the field
84    <code>usex0</code> in
85    <a href="reference.htm#sdpsettings">
86    sdpsettings</a> and the command
87    <a href="reference.htm#assign">
88    assign</a>. Consider the constrained LQ example above, and let us specify
89    an initial guess using a standard LQ feedback. </p>
90    <table cellPadding="10" width="100%">
91      <tr>
92        <td class="xmpcode">
93        <pre>A = [-1 2;-3 -4];B = [1;1];
94[K0,P0] = lqr(A,B,eye(2),1);
95P = sdpvar(2,2);assign(P,P0);
96K = sdpvar(1,2);assign(K,-K0);
97F = set(K&lt;0.1)+set(K&gt;-0.1)+set(P&gt;0)+set((A+B*K)'*P+P*(A+B*K) &lt; -eye(2)-K'*K);
98solvesdp(F,trace(P),sdpsettings('usex0',1));</pre>
99        </td>
100      </tr>
101    </table>
102          <p><img border="0" src="demoicon.gif" width="16" height="16"><a href="solvers.htm#penbmi">PENBMI</a> 
103          supports non-convex quadratic objective functions. Hence you can
104          (locally) solve non-convex quadratically constrained quadratic
105          programming using PENBMI.
106<!--          <p><img border="0" src="demoicon.gif" width="16" height="16">You can
107          actually (try to...) solve the BMI above without PENBMI. The internal solver <code>'bmilin'</code> is one
108          alternative. Note though that this solver is slow and unstable. It is
109          based on a simple sequential linearization approach with a
110          trust-region, and is merely implemented to show how a simple
111          BMI-solver can be coded using a few lines of YALMIP code. For more
112          information, check out Example 14 in
113          <a href="reference.htm#yalmipdemo">yalmipdemo</a>.-->
114          <p><img border="0" src="demoicon.gif" width="16" height="16">YALMIP
115                        will automatically convert higher order polynomial programs to
116                        bilinear programs, hence YALMIP+<a href="solvers.htm#penbmi">PENBMI</a> 
117                        can be used to address general polynomial problems.
118<!--          <p><img border="0" src="demoicon.gif" width="16" height="16">You can
119          actually (try to...) solve the BMI above without PENBMI. The internal solver <code>'bmilin'</code> is one
120          alternative. Note though that this solver is slow and unstable. It is
121          based on a simple sequential linearization approach with a
122          trust-region, and is merely implemented to show how a simple
123          BMI-solver can be coded using a few lines of YALMIP code. For more
124          information, check out Example 14 in
125          <a href="reference.htm#yalmipdemo">yalmipdemo</a>.-->
126          </td>
127  </tr>
128</table>
129
130</div>
131
132</body>
133
134</html>
Note: See TracBrowser for help on using the repository browser.