diff options
Diffstat (limited to 'help/en_US/scilab_en_US_help/intfminunc.html')
-rw-r--r-- | help/en_US/scilab_en_US_help/intfminunc.html | 173 |
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"><< 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 >></a></span> + + </td> + </tr></table> + <hr /> + </div> + + + + <span class="path"><a href="index.html">FOSSEE Optimization Toolbox</a> >> <a href="section_44e1f57c5225357b5fe53cb5fad967e9.html">FOSSEE Optimization Toolbox</a> > 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 'n' 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'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'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("IntegerTolerance", [---], "MaxNodes",[---], "MaxIter", [---], "AllowableGap",[---] "CpuTime", [---],"gradobj", "off", "hessian", "off" ); +<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('integertolerance',1d-06,'maxnodes',2147483647,'cputime',1d10,'allowablegap',0,'maxiter',2147483647,'gradobj',"off",'hessian',"off")</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">"</span><span class="scilabstring">MaxIter</span><span class="scilabstring">"</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">"</span><span class="scilabstring">CpuTime</span><span class="scilabstring">"</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">"</span><span class="scilabstring">gradobj</span><span class="scilabstring">"</span><span class="scilabdefault">,</span><span class="scilabstring">"</span><span class="scilabstring">ON</span><span class="scilabstring">"</span><span class="scilabdefault">,</span><span class="scilabstring">"</span><span class="scilabstring">hessian</span><span class="scilabstring">"</span><span class="scilabdefault">,</span><span class="scilabstring">"</span><span class="scilabstring">on</span><span class="scilabstring">"</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"><< 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 >></a></span> + + </td> + </tr></table> + <hr /> + </div> + </body> +</html> |