summaryrefslogtreecommitdiff
path: root/help/en_US/scilab_en_US_help/intfminunc.html
diff options
context:
space:
mode:
Diffstat (limited to 'help/en_US/scilab_en_US_help/intfminunc.html')
-rw-r--r--help/en_US/scilab_en_US_help/intfminunc.html173
1 files changed, 173 insertions, 0 deletions
diff --git a/help/en_US/scilab_en_US_help/intfminunc.html b/help/en_US/scilab_en_US_help/intfminunc.html
new file mode 100644
index 0000000..a188795
--- /dev/null
+++ b/help/en_US/scilab_en_US_help/intfminunc.html
@@ -0,0 +1,173 @@
+<html><head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+ <title>intfminunc</title>
+ <style type="text/css" media="all">
+ @import url("scilab_code.css");
+ @import url("xml_code.css");
+ @import url("c_code.css");
+ @import url("style.css");
+ </style>
+ </head>
+ <body>
+ <div class="manualnavbar">
+ <table width="100%"><tr>
+ <td width="30%">
+ <span class="previous"><a href="intfminimax.html">&lt;&lt; intfminimax</a></span>
+
+ </td>
+ <td width="40%" class="center">
+ <span class="top"><a href="section_44e1f57c5225357b5fe53cb5fad967e9.html">FOSSEE Optimization Toolbox</a></span>
+
+ </td>
+ <td width="30%" class="next">
+ <span class="next"><a href="intqpipopt.html">intqpipopt &gt;&gt;</a></span>
+
+ </td>
+ </tr></table>
+ <hr />
+ </div>
+
+
+
+ <span class="path"><a href="index.html">FOSSEE Optimization Toolbox</a> &gt;&gt; <a href="section_44e1f57c5225357b5fe53cb5fad967e9.html">FOSSEE Optimization Toolbox</a> &gt; intfminunc</span>
+
+ <br /><br />
+ <div class="refnamediv"><h1 class="refname">intfminunc</h1>
+ <p class="refpurpose">Solves an unconstrainted multi-variable mixed integer non linear programming optimization problem</p></div>
+
+
+<div class="refsynopsisdiv"><h3 class="title">Calling Sequence</h3>
+ <div class="synopsis"><pre><span class="default">xopt</span><span class="default"> = </span><span class="functionid">intfminunc</span><span class="default">(</span><span class="default">f</span><span class="default">,</span><span class="default">x0</span><span class="default">)</span>
+<span class="default">xopt</span><span class="default"> = </span><span class="functionid">intfminunc</span><span class="default">(</span><span class="default">f</span><span class="default">,</span><span class="default">x0</span><span class="default">,</span><span class="default">intcon</span><span class="default">)</span>
+<span class="default">xopt</span><span class="default"> = </span><span class="functionid">intfminunc</span><span class="default">(</span><span class="default">f</span><span class="default">,</span><span class="default">x0</span><span class="default">,</span><span class="default">intcon</span><span class="default">,</span><span class="default">options</span><span class="default">)</span>
+<span class="default">[</span><span class="default">xopt</span><span class="default">,</span><span class="default">fopt</span><span class="default">] = </span><span class="functionid">intfminunc</span><span class="default">(.....)</span>
+<span class="default">[</span><span class="default">xopt</span><span class="default">,</span><span class="default">fopt</span><span class="default">,</span><span class="default">exitflag</span><span class="default">]= </span><span class="functionid">intfminunc</span><span class="default">(.....)</span>
+<span class="default">[</span><span class="default">xopt</span><span class="default">,</span><span class="default">fopt</span><span class="default">,</span><span class="default">exitflag</span><span class="default">,</span><span class="default">gradient</span><span class="default">,</span><span class="default">hessian</span><span class="default">]= </span><span class="functionid">intfminunc</span><span class="default">(.....)</span></pre></div></div>
+
+<div class="refsection"><h3 class="title">Input Parameters</h3>
+ <dl><dt><span class="term">f :</span>
+ <dd><p class="para">A function, representing the objective function of the problem.</p></dd></dt>
+ <dt><span class="term">x0 :</span>
+ <dd><p class="para">A vector of doubles, containing the starting values of variables of size (1 X n) or (n X 1) where &#0039;n&#0039; is the number of Variables.</p></dd></dt>
+ <dt><span class="term">intcon :</span>
+ <dd><p class="para">A vector of integers, representing the variables that are constrained to be integers.</p></dd></dt>
+ <dt><span class="term">options :</span>
+ <dd><p class="para">A list, containing the option for user to specify. See below for details.</p></dd></dt></dl></div>
+<div class="refsection"><h3 class="title">Outputs</h3>
+ <dl><dt><span class="term">xopt :</span>
+ <dd><p class="para">A vector of doubles, containing the computed solution of the optimization problem.</p></dd></dt>
+ <dt><span class="term">fopt :</span>
+ <dd><p class="para">A double, containing the the function value at x.</p></dd></dt>
+ <dt><span class="term">exitflag :</span>
+ <dd><p class="para">An integer, containing the flag which denotes the reason for termination of algorithm. See below for details.</p></dd></dt>
+ <dt><span class="term">gradient :</span>
+ <dd><p class="para">A vector of doubles, containing the objective&#0039;s gradient of the solution.</p></dd></dt>
+ <dt><span class="term">hessian :</span>
+ <dd><p class="para">A matrix of doubles, containing the Lagrangian&#0039;s hessian of the solution.</p></dd></dt></dl></div>
+
+<div class="refsection"><h3 class="title">Description</h3>
+ <p class="para">Search the minimum of a multi-variable mixed integer non linear programming unconstrained optimization problem specified by :
+Find the minimum of f(x) such that</p>
+ <p class="para"><span><img src='./_LaTeX_intfminunc.xml_1.png' style='position:relative;top:9px;width:213px;height:26px'/></span></p>
+ <p class="para">intfminunc calls Bonmin, which is an optimization library written in C++, to solve the bound optimization problem.</p>
+ <p class="para"><h3 class="title">Options</h3>
+The options allow the user to set various parameters of the Optimization problem. The syntax for the options is given by:</p>
+ <p class="para">options= list(&#0034;IntegerTolerance&#0034;, [---], &#0034;MaxNodes&#0034;,[---], &#0034;MaxIter&#0034;, [---], &#0034;AllowableGap&#0034;,[---] &#0034;CpuTime&#0034;, [---],&#0034;gradobj&#0034;, &#0034;off&#0034;, &#0034;hessian&#0034;, &#0034;off&#0034; );
+<ul class="itemizedlist"><li>IntegerTolerance : A Scalar, a number with that value of an integer is considered integer.</li>
+<li>MaxNodes : A Scalar, containing the maximum number of nodes that the solver should search.</li>
+<li>CpuTime : A scalar, specifying the maximum amount of CPU Time in seconds that the solver should take.</li>
+<li>AllowableGap : A scalar, that specifies the gap between the computed solution and the the objective value of the best known solution stop, at which the tree search can be stopped.</li>
+<li>MaxIter : A scalar, specifying the maximum number of iterations that the solver should take.</li>
+<li>gradobj : A string, to turn on or off the user supplied objective gradient.</li>
+<li>hessian : A scalar, to turn on or off the user supplied objective hessian.</li></ul>
+ The default values for the various items are given as:</p>
+ <p class="para">options = list(&#0039;integertolerance&#0039;,1d-06,&#0039;maxnodes&#0039;,2147483647,&#0039;cputime&#0039;,1d10,&#0039;allowablegap&#0039;,0,&#0039;maxiter&#0039;,2147483647,&#0039;gradobj&#0039;,&#0034;off&#0034;,&#0039;hessian&#0039;,&#0034;off&#0034;)</p>
+ <p class="para"></p>
+ <p class="para">The exitflag allows to know the status of the optimization which is given back by Ipopt.
+<ul class="itemizedlist"><li>0 : Optimal Solution Found</li>
+<li>1 : InFeasible Solution.</li>
+<li>2 : Objective Function is Continuous Unbounded.</li>
+<li>3 : Limit Exceeded.</li>
+<li>4 : User Interrupt.</li>
+<li>5 : MINLP Error.</li></ul></p>
+ <p class="para">For more details on exitflag, see the Bonmin documentation which can be found on http://www.coin-or.org/Bonmin</p>
+ <p class="para"></p></div>
+<p class="para">A few examples displaying the various functionalities of intfminunc have been provided below. You will find a series of problems and the appropriate code snippets to solve them.</p>
+
+<div class="refsection"><h3 class="title">Example</h3>
+<p class="para">We begin with the minimization of a simple non-linear function.</p>
+ <p class="para">Find x in R^2 such that it minimizes:</p>
+ <p class="para"><span><img src='./_LaTeX_intfminunc.xml_2.png' style='position:relative;top:12px;width:213px;height:83px'/></span></p>
+ <p class="para"></p>
+ <div class="programlisting"><table border="0" width="100%"><tr><td width="98%"><pre class="scilabcode"><span class="scilabcomment">//Example 1:</span>
+<span class="scilabcomment">//Objective function to be minimised</span>
+<span class="scilabfkeyword">function</span> <span class="scilabinputoutputargs">y</span><span class="scilaboperator">=</span><span class="scilabfunctionid">f</span><span class="scilabopenclose">(</span><span class="scilabinputoutputargs">x</span><span class="scilabopenclose">)</span>
+<span class="scilabinputoutputargs">y</span><span class="scilaboperator">=</span> <span class="scilabinputoutputargs">x</span><span class="scilabopenclose">(</span><span class="scilabnumber">1</span><span class="scilabopenclose">)</span><span class="scilaboperator">^</span><span class="scilabnumber">2</span> <span class="scilaboperator">+</span> <span class="scilabinputoutputargs">x</span><span class="scilabopenclose">(</span><span class="scilabnumber">2</span><span class="scilabopenclose">)</span><span class="scilaboperator">^</span><span class="scilabnumber">2</span><span class="scilabdefault">;</span>
+<span class="scilabfkeyword">endfunction</span>
+<span class="scilabcomment">//Starting point</span>
+<span class="scilabid">x0</span><span class="scilaboperator">=</span><span class="scilabopenclose">[</span><span class="scilabnumber">2</span><span class="scilabdefault">,</span><span class="scilabnumber">1</span><span class="scilabopenclose">]</span><span class="scilabdefault">;</span>
+<span class="scilabid">intcon</span> <span class="scilaboperator">=</span> <span class="scilabopenclose">[</span><span class="scilabnumber">1</span><span class="scilabopenclose">]</span><span class="scilabdefault">;</span>
+<span class="scilabopenclose">[</span><span class="scilabid">xopt</span><span class="scilabdefault">,</span><span class="scilabid">fopt</span><span class="scilabopenclose">]</span><span class="scilaboperator">=</span><span class="scilabid">intfminunc</span><span class="scilabopenclose">(</span><span class="scilabfunctionid">f</span><span class="scilabdefault">,</span><span class="scilabid">x0</span><span class="scilabdefault">,</span><span class="scilabid">intcon</span><span class="scilabopenclose">)</span>
+<span class="scilabcomment">// Press ENTER to continue</span></pre></td><td valign="top"><a href="scilab://scilab.execexample/"><img src="ScilabExecute.png" border="0"/></a></td><td valign="top"><a href="scilab://scilab.editexample/"><img src="ScilabEdit.png" border="0"/></a></td><td></td></tr></table></div></div>
+
+<div class="refsection"><h3 class="title">Example</h3>
+ <p class="para">We now look at the Rosenbrock function, a non-convex performance test problem for optimization routines. We use this example to illustrate how we can enhance the functionality of intfminunc by setting input options. We can pre-define the gradient of the objective function and/or the hessian of the lagrange function and thereby improve the speed of computation. This is elaborated on in example 2. We also set solver parameters using the options.</p>
+ <p class="para"><span><img src='./_LaTeX_intfminunc.xml_3.png' style='position:relative;top:12px;width:287px;height:83px'/></span></p>
+ <p class="para"></p>
+ <div class="programlisting"><table border="0" width="100%"><tr><td width="98%"><pre class="scilabcode"><span class="scilabcomment">///Example 2:</span>
+<span class="scilabcomment">//Objective function to be minimised</span>
+<span class="scilabfkeyword">function</span> <span class="scilabinputoutputargs">y</span><span class="scilaboperator">=</span><span class="scilabfunctionid">f</span><span class="scilabopenclose">(</span><span class="scilabinputoutputargs">x</span><span class="scilabopenclose">)</span>
+<span class="scilabinputoutputargs">y</span><span class="scilaboperator">=</span> <span class="scilabnumber">100</span><span class="scilaboperator">*</span><span class="scilabopenclose">(</span><span class="scilabinputoutputargs">x</span><span class="scilabopenclose">(</span><span class="scilabnumber">2</span><span class="scilabopenclose">)</span> <span class="scilaboperator">-</span> <span class="scilabinputoutputargs">x</span><span class="scilabopenclose">(</span><span class="scilabnumber">1</span><span class="scilabopenclose">)</span><span class="scilaboperator">^</span><span class="scilabnumber">2</span><span class="scilabopenclose">)</span><span class="scilaboperator">^</span><span class="scilabnumber">2</span> <span class="scilaboperator">+</span> <span class="scilabopenclose">(</span><span class="scilabnumber">1</span><span class="scilaboperator">-</span><span class="scilabinputoutputargs">x</span><span class="scilabopenclose">(</span><span class="scilabnumber">1</span><span class="scilabopenclose">)</span><span class="scilabopenclose">)</span><span class="scilaboperator">^</span><span class="scilabnumber">2</span><span class="scilabdefault">;</span>
+<span class="scilabfkeyword">endfunction</span>
+<span class="scilabcomment">//Starting point</span>
+<span class="scilabid">x0</span><span class="scilaboperator">=</span><span class="scilabopenclose">[</span><span class="scilaboperator">-</span><span class="scilabnumber">1</span><span class="scilabdefault">,</span><span class="scilabnumber">2</span><span class="scilabopenclose">]</span><span class="scilabdefault">;</span>
+<span class="scilabid">intcon</span> <span class="scilaboperator">=</span> <span class="scilabopenclose">[</span><span class="scilabnumber">2</span><span class="scilabopenclose">]</span>
+<span class="scilabcomment">//Options</span>
+<span class="scilabid">options</span><span class="scilaboperator">=</span><a class="scilabcommand" href="scilab://list">list</a><span class="scilabopenclose">(</span><span class="scilabstring">&#0034;</span><span class="scilabstring">MaxIter</span><span class="scilabstring">&#0034;</span><span class="scilabdefault">,</span> <span class="scilabopenclose">[</span><span class="scilabnumber">1500</span><span class="scilabopenclose">]</span><span class="scilabdefault">,</span> <span class="scilabstring">&#0034;</span><span class="scilabstring">CpuTime</span><span class="scilabstring">&#0034;</span><span class="scilabdefault">,</span> <span class="scilabopenclose">[</span><span class="scilabnumber">500</span><span class="scilabopenclose">]</span><span class="scilabopenclose">)</span><span class="scilabdefault">;</span>
+<span class="scilabcomment">//Calling</span>
+<span class="scilabopenclose">[</span><span class="scilabid">xopt</span><span class="scilabdefault">,</span><span class="scilabid">fopt</span><span class="scilabdefault">,</span><span class="scilabid">exitflag</span><span class="scilabdefault">,</span><span class="scilabid">gradient</span><span class="scilabdefault">,</span><span class="scilabid">hessian</span><span class="scilabopenclose">]</span><span class="scilaboperator">=</span><span class="scilabid">intfminunc</span><span class="scilabopenclose">(</span><span class="scilabfunctionid">f</span><span class="scilabdefault">,</span><span class="scilabid">x0</span><span class="scilabdefault">,</span><span class="scilabid">intcon</span><span class="scilabdefault">,</span><span class="scilabid">options</span><span class="scilabopenclose">)</span>
+<span class="scilabcomment">// Press ENTER to continue</span></pre></td><td valign="top"><a href="scilab://scilab.execexample/"><img src="ScilabExecute.png" border="0"/></a></td><td valign="top"><a href="scilab://scilab.editexample/"><img src="ScilabEdit.png" border="0"/></a></td><td></td></tr></table></div></div>
+
+
+
+<div class="refsection"><h3 class="title">Example</h3>
+ <p class="para">Unbounded Problems: Find x in R^2 such that it minimizes:</p>
+ <p class="para"><span><img src='./_LaTeX_intfminunc.xml_4.png' style='position:relative;top:12px;width:213px;height:83px'/></span></p>
+ <p class="para"></p>
+ <div class="programlisting"><table border="0" width="100%"><tr><td width="98%"><pre class="scilabcode"><span class="scilabcomment">//The below problem is an unbounded problem:</span>
+<span class="scilabcomment">//Find x in R^2 such that the below function is minimum</span>
+<span class="scilabcomment">//f = - x1^2 - x2^2</span>
+<span class="scilabcomment">//Objective function to be minimised</span>
+<span class="scilabfkeyword">function</span> <span class="scilabopenclose">[</span><span class="scilabinputoutputargs">y</span><span class="scilabdefault">, </span><span class="scilabinputoutputargs">g</span><span class="scilabdefault">, </span><span class="scilabinputoutputargs">h</span><span class="scilabopenclose">]</span><span class="scilaboperator">=</span><span class="scilabfunctionid">f</span><span class="scilabopenclose">(</span><span class="scilabinputoutputargs">x</span><span class="scilabopenclose">)</span>
+<span class="scilabinputoutputargs">y</span> <span class="scilaboperator">=</span> <span class="scilaboperator">-</span><span class="scilabinputoutputargs">x</span><span class="scilabopenclose">(</span><span class="scilabnumber">1</span><span class="scilabopenclose">)</span><span class="scilaboperator">^</span><span class="scilabnumber">2</span> <span class="scilaboperator">-</span> <span class="scilabinputoutputargs">x</span><span class="scilabopenclose">(</span><span class="scilabnumber">2</span><span class="scilabopenclose">)</span><span class="scilaboperator">^</span><span class="scilabnumber">2</span><span class="scilabdefault">;</span>
+<span class="scilabinputoutputargs">g</span> <span class="scilaboperator">=</span> <span class="scilabopenclose">[</span><span class="scilaboperator">-</span><span class="scilabnumber">2</span><span class="scilaboperator">*</span><span class="scilabinputoutputargs">x</span><span class="scilabopenclose">(</span><span class="scilabnumber">1</span><span class="scilabopenclose">)</span><span class="scilabdefault">,</span><span class="scilaboperator">-</span><span class="scilabnumber">2</span><span class="scilaboperator">*</span><span class="scilabinputoutputargs">x</span><span class="scilabopenclose">(</span><span class="scilabnumber">2</span><span class="scilabopenclose">)</span><span class="scilabopenclose">]</span><span class="scilabdefault">;</span>
+<span class="scilabinputoutputargs">h</span> <span class="scilaboperator">=</span> <span class="scilabopenclose">[</span><span class="scilaboperator">-</span><span class="scilabnumber">2</span><span class="scilabdefault">,</span><span class="scilabnumber">0</span><span class="scilabdefault">;</span><span class="scilabnumber">0</span><span class="scilabdefault">,</span><span class="scilaboperator">-</span><span class="scilabnumber">2</span><span class="scilabopenclose">]</span><span class="scilabdefault">;</span>
+<span class="scilabfkeyword">endfunction</span>
+<span class="scilabcomment">//Starting point</span>
+<span class="scilabid">x0</span><span class="scilaboperator">=</span><span class="scilabopenclose">[</span><span class="scilabnumber">2</span><span class="scilabdefault">,</span><span class="scilabnumber">1</span><span class="scilabopenclose">]</span><span class="scilabdefault">;</span>
+<span class="scilabid">intcon</span> <span class="scilaboperator">=</span> <span class="scilabopenclose">[</span><span class="scilabnumber">1</span><span class="scilabopenclose">]</span>
+<span class="scilabid">options</span> <span class="scilaboperator">=</span> <a class="scilabcommand" href="scilab://list">list</a><span class="scilabopenclose">(</span><span class="scilabstring">&#0034;</span><span class="scilabstring">gradobj</span><span class="scilabstring">&#0034;</span><span class="scilabdefault">,</span><span class="scilabstring">&#0034;</span><span class="scilabstring">ON</span><span class="scilabstring">&#0034;</span><span class="scilabdefault">,</span><span class="scilabstring">&#0034;</span><span class="scilabstring">hessian</span><span class="scilabstring">&#0034;</span><span class="scilabdefault">,</span><span class="scilabstring">&#0034;</span><span class="scilabstring">on</span><span class="scilabstring">&#0034;</span><span class="scilabopenclose">)</span><span class="scilabdefault">;</span>
+<span class="scilabopenclose">[</span><span class="scilabid">xopt</span><span class="scilabdefault">,</span><span class="scilabid">fopt</span><span class="scilabdefault">,</span><span class="scilabid">exitflag</span><span class="scilabdefault">,</span><span class="scilabid">gradient</span><span class="scilabdefault">,</span><span class="scilabid">hessian</span><span class="scilabopenclose">]</span><span class="scilaboperator">=</span><span class="scilabid">intfminunc</span><span class="scilabopenclose">(</span><span class="scilabfunctionid">f</span><span class="scilabdefault">,</span><span class="scilabid">x0</span><span class="scilabdefault">,</span><span class="scilabid">intcon</span><span class="scilabdefault">,</span><span class="scilabid">options</span><span class="scilabopenclose">)</span></pre></td><td valign="top"><a href="scilab://scilab.execexample/"><img src="ScilabExecute.png" border="0"/></a></td><td valign="top"><a href="scilab://scilab.editexample/"><img src="ScilabEdit.png" border="0"/></a></td><td></td></tr></table></div></div>
+ <br />
+
+ <div class="manualnavbar">
+ <table width="100%">
+ <tr><td colspan="3" class="next"><a href="http://bugzilla.scilab.org/enter_bug.cgi?product=Scilab%20software&component=Documentation%20pages" class="ulink">Report an issue</a></td></tr>
+<tr>
+ <td width="30%">
+ <span class="previous"><a href="intfminimax.html">&lt;&lt; intfminimax</a></span>
+
+ </td>
+ <td width="40%" class="center">
+ <span class="top"><a href="section_44e1f57c5225357b5fe53cb5fad967e9.html">FOSSEE Optimization Toolbox</a></span>
+
+ </td>
+ <td width="30%" class="next">
+ <span class="next"><a href="intqpipopt.html">intqpipopt &gt;&gt;</a></span>
+
+ </td>
+ </tr></table>
+ <hr />
+ </div>
+ </body>
+</html>