diff options
Diffstat (limited to 'help/en_US/cbcintlinprog.xml')
-rw-r--r-- | help/en_US/cbcintlinprog.xml | 369 |
1 files changed, 369 insertions, 0 deletions
diff --git a/help/en_US/cbcintlinprog.xml b/help/en_US/cbcintlinprog.xml new file mode 100644 index 0000000..e95f92d --- /dev/null +++ b/help/en_US/cbcintlinprog.xml @@ -0,0 +1,369 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<!-- + * + * This help file was generated from cbcintlinprog.sci using help_from_sci(). + * + --> + +<refentry version="5.0-subset Scilab" xml:id="cbcintlinprog" xml:lang="en" + xmlns="http://docbook.org/ns/docbook" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns:ns3="http://www.w3.org/1999/xhtml" + xmlns:mml="http://www.w3.org/1998/Math/MathML" + xmlns:scilab="http://www.scilab.org" + xmlns:db="http://docbook.org/ns/docbook"> + + <refnamediv> + <refname>cbcintlinprog</refname> + <refpurpose>Solves a mixed integer linear programming constrained optimization problem in intlinprog format.</refpurpose> + </refnamediv> + + +<refsynopsisdiv> + <title>Calling Sequence</title> + <synopsis> + xopt = cbcintlinprog(c,intcon,A,b) + xopt = cbcintlinprog(c,intcon,A,b,Aeq,beq) + xopt = cbcintlinprog(c,intcon,A,b,Aeq,beq,lb,ub) + xopt = cbcintlinprog(c,intcon,A,b,Aeq,beq,lb,ub,options) + xopt = cbcintlinprog('path_to_mps_file') + xopt = cbcintlinprog('path_to_mps_file',options) + [xopt,fopt,status,output] = cbcintlinprog( ... ) + + </synopsis> +</refsynopsisdiv> + +<refsection> + <title>Input Parameters</title> + <variablelist> + <varlistentry><term>c :</term> + <listitem><para> a vector of double, contains coefficients of the variables in the objective</para></listitem></varlistentry> + <varlistentry><term>intcon :</term> + <listitem><para> Vector of integer constraints, specified as a vector of positive integers. The values in intcon indicate the components of the decision variable x that are integer-valued. intcon has values from 1 through number of variable.</para></listitem></varlistentry> + <varlistentry><term>A :</term> + <listitem><para> A matrix of doubles, containing the coefficients of linear inequality constraints of size (m X n) where 'm' is the number of linear inequality constraints.</para></listitem></varlistentry> + <varlistentry><term>b :</term> + <listitem><para> A vector of doubles, related to 'A' and containing the the Right hand side equation of the linear inequality constraints of size (m X 1).</para></listitem></varlistentry> + <varlistentry><term>Aeq :</term> + <listitem><para> A matrix of doubles, containing the coefficients of linear equality constraints of size (m1 X n) where 'm1' is the number of linear equality constraints.</para></listitem></varlistentry> + <varlistentry><term>beq :</term> + <listitem><para> A vector of doubles, related to 'Aeq' and containing the the Right hand side equation of the linear equality constraints of size (m1 X 1).</para></listitem></varlistentry> + <varlistentry><term>lb :</term> + <listitem><para> A vector of doubles, containing the lower bounds of the variables of size (1 X n) or (n X 1) where 'n' is the number of variables.</para></listitem></varlistentry> + <varlistentry><term>ub :</term> + <listitem><para> A vector of doubles, containing the upper bounds of the variables of size (1 X n) or (n X 1) where 'n' is the number of variables.</para></listitem></varlistentry> + <varlistentry><term>options :</term> + <listitem><para> A list, containing the option for user to specify. See below for details.</para></listitem></varlistentry> + </variablelist> +</refsection> +<refsection> +<title> Outputs</title> + <variablelist> + <varlistentry><term>xopt :</term> + <listitem><para> A vector of doubles, containing the computed solution of the optimization problem.</para></listitem></varlistentry> + <varlistentry><term>fopt :</term> + <listitem><para> A double, containing the the function value at x.</para></listitem></varlistentry> + <varlistentry><term>status :</term> + <listitem><para> An integer, containing the flag which denotes the reason for termination of algorithm. See below for details.</para></listitem></varlistentry> + <varlistentry><term>output :</term> + <listitem><para> A structure, containing the information about the optimization. See below for details.</para></listitem></varlistentry> + </variablelist> +</refsection> + +<refsection> + <title>Description</title> + <para> +Search the minimum or maximum of a constrained mixed integer linear programming optimization problem specified by : + </para> + <para> +<latex> +\begin{eqnarray} +&\mbox{min}_{x} +& C^T⋅x \\ +& \text{Subjected to:} & A⋅x \leq b \\ +& & Aeq⋅x = beq \\ +& & lb \leq x \leq ub \\ +& & x_i \in \!\, \mathbb{Z}, i \in \!\, intcon\\ +\end{eqnarray} +</latex> +</para> + <para> +CBC, an optimization library written in C++, is used for solving the linear programming problems. + + </para> +<para> +<title>Options</title> +The options allow the user to set various parameters of the Optimization problem. The syntax for the options is given by: + </para> + <para> +options= list("IntegerTolerance", [---], "MaxNodes",[---], "MaxIter", [---], "AllowableGap",[---] "CpuTime", [---],"gradobj", "off", "hessian", "off" ); +<itemizedlist> +<listitem>IntegerTolerance : A Scalar, a number with that value of an integer is considered integer.</listitem> +<listitem>MaxNodes : A Scalar, containing the maximum number of nodes that the solver should search.</listitem> +<listitem>MaxTime : A scalar, specifying the maximum amount of CPU Time in seconds that the solver should take.</listitem> +<listitem>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.</listitem> +</itemizedlist> + The default values for the various items are given as: + </para> + <para> + options = list('integertolerance',1d-06,'maxnodes',2147483647,'cputime',1d10,'allowablegap') + </para> +<para> +The exitflag allows the user to know the status of the optimization which is returned by OSI-CBC. The values it can take and what they indicate is described below: +<itemizedlist> +<listitem> 0 : Optimal Solution Found </listitem> +<listitem> 1 : Converged to a point of primal infeasibility.</listitem> +<listitem> 2 : Solution Limit is reached</listitem> +<listitem> 3 : Node Limit is reached. Output may not be optimal.</listitem> +<listitem> 4 : Numerical Difficulties.</listitem> +<listitem> 5 : Maximum amount of CPU Time exceeded. </listitem> +<listitem> 6 : Continuous Solution Unbounded.</listitem> +<listitem> 7 : Converged to a point of dual infeasibility.</listitem> +</itemizedlist> + </para> + <para> +For more details on exitflag, see the Bonmin documentation which can be found on http://www.coin-or.org/Cbc + </para> + <para> +</para> + +</refsection> + +<para> +A few examples displaying the various functionalities of cbcintlinprog have been provided below. You will find a series of problems and the appropriate code snippets to solve them. + </para> + +<refsection> + <title>Example</title> + <para> + Here we solve a simple objective function, subjected to three linear inequality constraints. + </para> + <para> +Find x in R^8 such that it minimizes: + </para> + <para> +<latex> + \begin{eqnarray} +\mbox{min}_{x}\ f(x) = 1750x_{1} + 990x_{2} + 1240x_{3} + 1680x_{4} + 500x_{5} + 450x_{6} + 400x_{7} + 100x_{8} \\ +\end{eqnarray}\\ +\text{Subjected to:}\\ +\begin{eqnarray} +\hspace{70pt} &6x_{1} + 4.25x_{2} + 5.5x_{3} + 7.75x_{4} + 3x_{5} + 3.25x_{6} + 3.5x_{7} + 3.75x_{8}&\leq 100\\ +\hspace{70pt} &1.25x_{1} + 1.37x_{2} + 1.7x_{3} + 1.93x_{4} + 2.08x_{5} + 2.32x_{6} + 2.56x_{7} + 2.78x_{8}&\leq 205\\ +\hspace{70pt} &1.15x_{1} + 1.34x_{2} + 1.66x_{3} + 1.99x_{4} + 2.06x_{5} + 2.32x_{6} + 2.58x_{7} + 2.84x_{8}&\leq 409\\ +\end{eqnarray}\\ +\text{With integer constraints as: } +\begin{eqnarray} +\begin{array}{cccccc} +[1 & 2 & 3 & 4] \\ +\end{array} +\end{eqnarray} + </latex> +</para> + <programlisting role="example"><![CDATA[ +// Example 1: +// Reference: Westerberg, Carl-Henrik, Bengt Bjorklund, and Eskil Hultman. "An application of mixed integer +// programming in a Swedish steel mill." Interfaces 7, no. 2 (1977): 39-43. Modified acc. to requirements. +c = [350*5,330*3,310*4,280*6,500,450,400,100]'; +A = [6,4.25, 5.5, 7.75, 3, 3.25, 3.5,3.75; + 1.25,1.37,1.7,1.93,2.08,2.32,2.56,2.78; + 1.15,1.34,1.66,1.99,2.06,2.32,2.58,2.84 ]; +b = [100 ,205, 249 ]; +//Defining the integer constraints +intcon = [1 2 3 4]; +// Calling Symphony +[x,f,status,output] = cbcintlinprog(c,intcon,A,b) +// Press ENTER to continue + + ]]></programlisting> +</refsection> + +<refsection> + <title>Example</title> + <para> +Here we build up on the previous example by adding upper and lower bounds to the variables. +We add the following bounds to the problem specified above: </para> + <para> +<latex> +\begin{eqnarray} +0 &\leq x_{1} &\leq 1\\ +0 &\leq x_{2} &\leq 1\\ +0 &\leq x_{3} &\leq 1\\ +0 &\leq x_{4} &\leq 1\\ +0 &\leq x_{5} &\leq \infty\\ +0 &\leq x_{6} &\leq \infty\\ +0 &\leq x_{7} &\leq \infty\\ +0 &\leq x_{8} &\leq \infty +\end{eqnarray} + </latex> +</para> + <programlisting role="example"><![CDATA[ +// Example 2: +// Reference: Westerberg, Carl-Henrik, Bengt Bjorklund, and Eskil Hultman. "An application of mixed integer +// programming in a Swedish steel mill." Interfaces 7, no. 2 (1977): 39-43. Modified acc. to requirements. + c = [350*5,330*3,310*4,280*6,500,450,400,100]'; + //Inequality constraints + A = [6,4.25, 5.5, 7.75, 3, 3.25, 3.5,3.75; + 1.25,1.37,1.7,1.93,2.08,2.32,2.56,2.78; + 1.15,1.34,1.66,1.99,2.06,2.32,2.58,2.84 ]; + b = [100 ,205, 249 ]; + + // Lower Bound of variable +lb = repmat(0,1,8); +// Upper Bound of variables +ub = [repmat(1,1,4) repmat(%inf,1,4)]; + //Integer Constraints + intcon = [1 2 3 4]; + // Calling Symphony + [x,f,status,output] = cbcintlinprog(c,intcon,A,b,[],[],lb,ub) +// Press ENTER to continue + + ]]></programlisting> +</refsection> + +<refsection> + <title>Example</title> + <para> +In this example, we proceed to add the linear equality constraints to the objective function. + </para> + + <para> +<latex> +\begin{eqnarray} +&5x_{1} + 3x_{2} + 4x_{3} + 6x_{4} + x_{5} + x_{6} + x_{7} + x_{8}&= 25\\ +&0.25x_{1} + 0.12x_{2} + 0.2x_{3} + 0.18x_{4} + 0.08x_{5} + 0.07x_{6} + 0.06x_{7} + 0.03x_{8}&= 1.25\\ +&0.15x_{1} + 0.09x_{2} + 0.16x_{3} + 0.24x_{4} + 0.06x_{5} + 0.07x_{6} + 0.08x_{7} + 0.09x_{8}&= 1.25\\ +\end{eqnarray} + </latex> +</para> + <programlisting role="example"><![CDATA[ +// Example 3: +// Reference: Westerberg, Carl-Henrik, Bengt Bjorklund, and Eskil Hultman. "An application of mixed integer +// programming in a Swedish steel mill." Interfaces 7, no. 2 (1977): 39-43. Modified acc. to requirements. +c = [350*5,330*3,310*4,280*6,500,450,400,100]'; +//Inequality constraints +A = [6,4.25, 5.5, 7.75, 3, 3.25, 3.5,3.75; + 1.25,1.37,1.7,1.93,2.08,2.32,2.56,2.78; + 1.15,1.34,1.66,1.99,2.06,2.32,2.58,2.84 ]; +b = [100 ,205, 249 ]; +// Lower Bound of variable +lb = repmat(0,1,8); +// Upper Bound of variables +ub = [repmat(1,1,4) repmat(%inf,1,4)]; +// Equality Constraints +Aeq = [5,3,4,6,1,1,1,1; +5*0.05,3*0.04,4*0.05,6*0.03,0.08,0.07,0.06,0.03; +5*0.03,3*0.03,4*0.04,6*0.04,0.06,0.07,0.08,0.09;] +beq = [ 25, 1.25, 1.25]; + //Integer Constraints +intcon = [1 2 3 4]; +// Calling CBC +[x,f,status,output] = cbcintlinprog(c,intcon,A,b,Aeq,beq,lb,ub) +// Press ENTER to continue + + ]]></programlisting> +</refsection> + +<refsection> + <title>Example</title> + <para> +Primal Infeasible Problems: Find x in R^8 such that it minimizes: + </para> + <para> +Find x in R^8 such that it minimizes: + </para> + <para> +<latex> + \begin{eqnarray} +\mbox{min}_{x}\ f(x) = 1750x_{1} + 990x_{2} + 1240x_{3} + 1680x_{4} + 500x_{5} + 450x_{6} + 400x_{7} + 100x_{8} \\ +\end{eqnarray}\\ +\text{Subjected to:}\\ +\begin{eqnarray} +\hspace{70pt} &6x_{1} + 4.25x_{2} + 5.5x_{3} + 7.75x_{4} + 3x_{5} + 3.25x_{6} + 3.5x_{7} + 3.75x_{8}&\leq 26.333\\ +\hspace{70pt} &1.25x_{1} + 1.37x_{2} + 1.7x_{3} + 1.93x_{4} + 2.08x_{5} + 2.32x_{6} + 2.56x_{7} + 2.78x_{8}&\leq 3.916\\ +\hspace{70pt} &1.15x_{1} + 1.34x_{2} + 1.66x_{3} + 1.99x_{4} + 2.06x_{5} + 2.32x_{6} + 2.58x_{7} + 2.84x_{8}&\leq 5.249\\ +\end{eqnarray}\\ +\text{With integer constraints as: } +\begin{eqnarray} +\begin{array}{cccc} +[1 & 2 & 3 & 4] +\end{array} +\end{eqnarray} + </latex> +</para> + <programlisting role="example"><![CDATA[ +// Example 4: +// Reference: Westerberg, Carl-Henrik, Bengt Bjorklund, and Eskil Hultman. "An application of mixed integer +// programming in a Swedish steel mill." Interfaces 7, no. 2 (1977): 39-43. Modified acc. to requirements. +c = [350*5,330*3,310*4,280*6,500,450,400,100]'; +//Inequality constraints +A = [6,4.25, 5.5, 7.75, 3, 3.25, 3.5,3.75; + 1.25,1.37,1.7,1.93,2.08,2.32,2.56,2.78; + 1.15,1.34,1.66,1.99,2.06,2.32,2.58,2.84 ]; +b = [26.333 ,3.916 ,5.249 ]; + //Integer Constraints +intcon = [1 2 3 4]; + +// Calling CBC + +[x,f,status,output] = cbcintlinprog(c,intcon,A,b) +// Press ENTER to continue + + ]]></programlisting> +</refsection> + +<refsection> + <title>Example</title> + <para> +Unbounded Problems. Find x in R^8 such that it minimizes: + </para> + <para> +<latex> + \begin{eqnarray} +\mbox{min}_{x}\ f(x) = 1750x_{1} + 990x_{2} + 1240x_{3} + 1680x_{4} + 500x_{5} + 450x_{6} + 400x_{7} + 100x_{8} \\ +\end{eqnarray}\\ +\text{Subjected to:}\\ +\begin{eqnarray} +\hspace{70pt} &5x_{1} + 3x_{2} + 4x_{3} + 6x_{4} + x_{5} + x_{6} + x_{7} + x_{8}&= 25\\ +\hspace{70pt} &0.25x_{1} + 0.12x_{2} + 0.2x_{3} + 0.18x_{4} + 0.08x_{5} + 0.07x_{6} + 0.06x_{7} + 0.03x_{8}&= 1.25\\ +\hspace{70pt} &0.15x_{1} + 0.09x_{2} + 0.16x_{3} + 0.24x_{4} + 0.06x_{5} + 0.07x_{6} + 0.08x_{7} + 0.09x_{8}&= 1.25\\ +\end{eqnarray}\\ +\text{With integer constraints as: } +\begin{eqnarray} +\begin{array}{cccccc} +[1 & 2 & 3 & 4] \\ +\end{array} +\end{eqnarray} + </latex> +</para> + <programlisting role="example"><![CDATA[ +// Example 5: +// Reference: Westerberg, Carl-Henrik, Bengt Bjorklund, and Eskil Hultman. "An application of mixed integer +// programming in a Swedish steel mill." Interfaces 7, no. 2 (1977): 39-43. Modified acc. to requirements. +c = [350*5,330*3,310*4,280*6,500,450,400,100]'; +//Inequality constraints +A = []; +b = []; +// Equality Constraints +Aeq = [5,3,4,6,1,1,1,1; +5*0.05,3*0.04,4*0.05,6*0.03,0.08,0.07,0.06,0.03; +5*0.03,3*0.03,4*0.04,6*0.04,0.06,0.07,0.08,0.09;] +beq = [ 25, 1.25, 1.25]; + //Integer Constraints +intcon = [1 2 3 4]; +// Calling CBC +[x,f,status,output] = cbcintlinprog(c,intcon,A,b,Aeq,beq) +// Press ENTER to continue + + ]]></programlisting> +</refsection> + +<refsection> + <title>Authors</title> + <simplelist type="vert"> + <member>Akshay Miterani and Pranav Deshpande</member> + </simplelist> +</refsection> +</refentry> |