⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 reference.htm

📁 国外专家做的求解LMI鲁棒控制的工具箱,可以相对高效的解决LMI问题
💻 HTM
📖 第 1 页 / 共 5 页
字号:
|   ID|      Constraint|                                Type|
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|   #1|   Numeric value|   Matrix inequality (quadratic) 2x2|
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++</font></pre>
                  </td>
                </tr>
              </table>
              <p>The only difference is that this constraint will not be used in 
              the upper bound problem in the branch &amp; bound procudure. The constraint 
              will thus only be used to improve the relaxations. See the examples 
              in <a target="topic" href="globalbmi.htm">global solutions of bilinear 
              programs</a>.</p>
              </td>
            </tr>
            <tr>
              <th class="doc" valign="top" nowrap align="left" bgcolor="#eeeeee" rowspan="2">
              Related commands</th>
            </tr>
            <tr>
              <td class="tabxpl"><a href="reference.htm#set">set</a></td>
            </tr>
          </table>
          </td>
        </tr>
      </table>
      <p>&nbsp;</p>
      <table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" width="100%" bordercolor="#FF9933" id="table69">
        <tr>
          <td class="tableheader">
          <p class="tableheader"><a name="dissect">DISSECT</a></p>
          </td>
        </tr>
        <tr>
          <td>
          <table cellspacing="0" cellpadding="4" width="100%" border="0" id="table70">
            <tr>
              <th class="doc" valign="top" nowrap align="left" bgcolor="#eeeeee" rowspan="2">
              Syntax<p>&nbsp;</p>
              </th>
              <td class="code" valign="top" nowrap width="100%"><code>F = 
				dissect(X)</code></td>
            </tr>
            <tr>
              <td class="tabxpl">
              <table border="0" id="table71">
                <tr>
                  <td>
                  <p align="right"><font face="Courier New" size="2">F:</font></p>
                  </td>
                  <td>set object</td>
                </tr>
                <tr>
                  <td>
                  <p align="right"><font face="Courier New" size="2">X:</font></p>
                  </td>
                  <td>set object</td>
                </tr>
                </table>
              </td>
            </tr>
            <tr>
              <th class="doc" valign="top" nowrap align="left" bgcolor="#eeeeee" rowspan="2">
              Description</th>
            </tr>
            <tr>
              <td class="tabxpl">dissect can be used to transform extremely 
				large sparse and structured SDP constraints to a set of smaller 
				SDP constraints, at the price of introducing more variables.</td>
            </tr>
            <tr>
              <th class="doc" valign="top" nowrap align="left" bgcolor="#eeeeee" rowspan="2">
              Example</th>
            </tr>
            <tr>
              <td class="tabxpl">NOTE : For the examples below to work, you need 
				to have 
				<a target="_blank" href="http://www-users.cs.umn.edu/~karypis/metis/">METIS</a> installed. 
				<p>Let us begin by defining a large but low bandwidth SDP 
				constraint.</p>
				<table cellpadding="10" width="100%" id="table72">
                <tr>
                  <td class="xmpcode">
                  <pre>n = 500;
r = 3;
B = randn(n,r+1);
S = spdiags(B,0:r,n,n);S = S+S';
x = sdpvar(n,1);
X = diag(x)-S;
F = set(X &gt; 0)<font color="#000000">
+++++++++++++++++++++++++++++++++++++++++++++++++++++
|   ID|      Constraint|                        Type|
+++++++++++++++++++++++++++++++++++++++++++++++++++++
|   #1|   Numeric value|   Matrix inequality 500x500|
+++++++++++++++++++++++++++++++++++++++++++++++++++++</font></pre>
                  </td>
                </tr>
              </table>
              <p>Applying the dissect command simplifies the constraint to a set 
				of two smaller SDP constraints, at the price of introducing 6 
				additional variables.</p>
              <table cellpadding="10" width="100%" id="table73">
                <tr>
                  <td class="xmpcode">
                  <pre>dissect(F)
<font color="#000000">+++++++++++++++++++++++++++++++++++++++++++++++++++++
|   ID|      Constraint|                        Type|
+++++++++++++++++++++++++++++++++++++++++++++++++++++
|   #1|   Numeric value|   Matrix inequality 252x252|
|   #2|   Numeric value|   Matrix inequality 251x251|
+++++++++++++++++++++++++++++++++++++++++++++++++++++</font>
length(getvariables(dissect(F)))
<font color="#000000">ans =</font></pre>
					<pre><font color="#000000">   506</font></pre>
                  </td>
                </tr>
              </table>
              <p>The procedure can be recursively applied.</p>
				<table cellpadding="10" width="100%" id="table74">
                <tr>
                  <td class="xmpcode">
                  <pre>dissect(dissect(F))
<font color="#000000">+++++++++++++++++++++++++++++++++++++++++++++++++++++
|   ID|      Constraint|                        Type|
+++++++++++++++++++++++++++++++++++++++++++++++++++++
|   #1|   Numeric value|   Matrix inequality 128x128|
|   #2|   Numeric value|   Matrix inequality 127x127|
|   #3|   Numeric value|   Matrix inequality 127x127|
|   #4|   Numeric value|   Matrix inequality 127x127|
+++++++++++++++++++++++++++++++++++++++++++++++++++++</font>
length(getvariables(dissect((dissect(F)))))
<font color="#000000">ans =</font></pre>
					<pre><font color="#000000">   518</font></pre>
                  </td>
                </tr>
              </table>
              <p>To see the impact of the dissection, let us solve an SDP 
				problem for various levels of dissection</p>
				<table cellpadding="10" width="100%" id="table75">
                <tr>
                  <td class="xmpcode">
                  <pre>sol = solvesdp(F,trace(X));sol.solvertime
<font color="#000000">ans =</font></pre>
					<pre><font color="#000000">  123.2810

</font>F = dissect(F);
sol = solvesdp(F,trace(X));sol.solvertime
<font color="#000000">ans =</font></pre>
					<pre><font color="#000000">   36.0940

</font>F = dissect(F);
sol = solvesdp(F,trace(X));sol.solvertime
<font color="#000000">ans =</font></pre>
					<pre><font color="#000000">   11.9070</font></pre>
					<pre>F = dissect(F);
sol = solvesdp(F,trace(X));sol.solvertime
<font color="#000000">ans =</font></pre>
					<pre><font color="#000000">    4.6410</font></pre>
					<pre>F = dissect(F);
sol = solvesdp(F,trace(X));sol.solvertime
<font color="#000000">ans =</font></pre>
					<pre><font color="#000000">    3.8430</font></pre>
					<pre>F = dissect(F);
sol = solvesdp(F,trace(X));sol.solvertime
<font color="#000000">ans =</font></pre>
					<pre><font color="#000000">    3.9370</font></pre>
                  </td>
                </tr>
              </table>
              <p>Note that the dissection command can be applied to arbitrary 
				SDP problems in YALMIP (nonlinear problems, mixed semidefinite 
				and second order cone problems etc).</p>
				<p>The algorithm in the command is based on finding a vertex 
				separator of the matrix in the SDP constraint, applying a 
				Dulmage-Mendelsohn permutation to detect corresponding blocks, 
				followed by a series of Schur completions. Details will be available in an 
				accompanying report soon...
              </td>
            </tr>
            <tr>
              <th class="doc" valign="top" nowrap align="left" bgcolor="#eeeeee" rowspan="2">
              Related commands</th>
            </tr>
            <tr>
              <td class="tabxpl"><a href="reference.htm#set">set</a>, <a href="reference.htm#unblkdiag">unblkdiag</a></td>
            </tr>
          </table>
          </td>
        </tr>
      </table>
      <p>&nbsp;</p>
      <table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" width="100%" bordercolor="#FF9933">
        <tr>
          <td class="tableheader">
          <p class="tableheader"><a name="double">DOUBLE</a></p>
          </td>
        </tr>
        <tr>
          <td>
          <table cellspacing="0" cellpadding="4" width="100%" border="0">
            <tr>
              <th class="doc" valign="top" nowrap align="left" bgcolor="#eeeeee" rowspan="2">
              Syntax</th>
              <td class="code" valign="top" nowrap width="100%"><code>Y = double(X)</code></td>
            </tr>
            <tr>
              <td class="tabxpl">
              <table border="0">
                <tr>
                  <td>
                  <p align="right"><font face="Courier New" size="2">Y:</font></p>
                  </td>
                  <td>double</td>
                </tr>
                <tr>
                  <td>
                  <p align="right"><font face="Courier New" size="2">X:</font></p>
                  </td>
                  <td>sdpvar or set object</td>
                </tr>
              </table>
              </td>
            </tr>
            <tr>
              <th class="doc" valign="top" nowrap align="left" bgcolor="#eeeeee" rowspan="2">
              Description</th>
            </tr>
            <tr>
              <td class="tabxpl">double is used to extract the numerical value of 
              a decision variable, or the residual of a constraint</td>
            </tr>
            <tr>
              <th class="doc" valign="top" nowrap align="left" bgcolor="#eeeeee" rowspan="2">
              Examples</th>
            </tr>
            <tr>
              <td class="tabxpl"><p>After solving an optimization problem we might, 
              e.g., extract the optimal objective value.</p><table cellpadding="10" width="100%">
                <tr>
                  <td class="xmpcode">
                  <pre>solvesdp(F,obj);
optobj = double(obj);</pre>
                  </td>
                </tr>
              </table>
              <p>It can also be used to extract the residual of a constraint </p>
              <table cellpadding="10" width="100%">
                <tr>
                  <td class="xmpcode">
                  <pre>solvesdp(F,obj);
res = double(F(1));</pre>
                  </td>
                </tr>
              </table>
              </td>
            </tr>
            <tr>
              <th class="doc" valign="top" nowrap align="left" bgcolor="#eeeeee" rowspan="2">
              Related commands</th>
            </tr>
            <tr>
              <td class="tabxpl"><a href="reference.htm#sdpvar">sdpvar</a>,
              <a href="reference.htm#solvesdp">solvesdp</a>,
              <a href="reference.htm#assign">assign</a></td>
            </tr>
          </table>
          </td>
        </tr>
      </table>
      <p>&nbsp;</p>
      <table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" width="100%" bordercolor="#FF9933">
        <tr>
          <td class="tableheader">
          <p class="tableheader"><a name="dual">DUAL</a></p>
          </td>
        </tr>
        <tr>
          <td>
          <table cellspacing="0" cellpadding="4" width="100%" border="0">
            <tr>
              <th class="doc" valign="top" nowrap align="left" bgcolor="#eeeeee" rowspan="2">
              Syntax</th>
              <td class="code" valign="top" nowrap width="100%"><code>Z = dual(F)</code></td>
            </tr>
            <tr>
              <td class="tabxpl">
              <table border="0">
                <tr>
                  <td>
                  <p align="right"><font face="Courier New" size="2">Z:</font></p>
                  </td>
                  <td>double</td>
                </tr>
                <tr>
                  <td>
                  <p align="right"><font face="Courier New" size="2">F:</font></p>
                  </td>
                  <td>set object (with one constraint)</td>
                </tr>
              </table>
              </td>
            </tr>
            <tr>
              <th class="doc" valign="top" nowrap align="left" bgcolor="#eeeeee" rowspan="2">
              Description</th>
            </tr>
            <tr>
              <td class="tabxpl">dual is used to extract the dual variable related 
              to a constraint</td>
            </tr>
            <tr>
              <th class="doc" valign="top" nowrap align="left" bgcolor="#eeeeee" rowspan="2">
              Examples</th>
            </tr>
            <tr>
              <td class="tabxpl"><p>After solving an optimization problem we might, 
              e.g., extract the dual variable of the 2nd constraint.</p><table cellpadding="10" width="100%">
                <tr>
                  <td class="xmpcode">
                  <pre>solvesdp(F,obj);
Z2 = dual(F(2));</pre>
                  </td>
                </tr>
              </table>
              <p>If the constraints in the set object have been tagged, we can use 
              the tag instead </p>
              <table cellpadding="10" width="100%">
                <tr>
                  <td class="xmpcode">
                  <pre>solvesdp(F,obj);
Z2 = dual(F(&#39;Lyapunov constraint&#39;));</pre>
                  </td>
                </tr>
              </table>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -