summaryrefslogtreecommitdiff
path: root/help/en_US/cbcintlinprog.xml
diff options
context:
space:
mode:
Diffstat (limited to 'help/en_US/cbcintlinprog.xml')
-rw-r--r--help/en_US/cbcintlinprog.xml369
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}
+&amp;\mbox{min}_{x}
+&amp; C^T⋅x \\
+&amp; \text{Subjected to:} &amp; A⋅x \leq b \\
+&amp; &amp; Aeq⋅x = beq \\
+&amp; &amp; lb \leq x \leq ub \\
+&amp; &amp; 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} &amp;6x_{1} + 4.25x_{2} + 5.5x_{3} + 7.75x_{4} + 3x_{5} + 3.25x_{6} + 3.5x_{7} + 3.75x_{8}&amp;\leq 100\\
+\hspace{70pt} &amp;1.25x_{1} + 1.37x_{2} + 1.7x_{3} + 1.93x_{4} + 2.08x_{5} + 2.32x_{6} + 2.56x_{7} + 2.78x_{8}&amp;\leq 205\\
+\hspace{70pt} &amp;1.15x_{1} + 1.34x_{2} + 1.66x_{3} + 1.99x_{4} + 2.06x_{5} + 2.32x_{6} + 2.58x_{7} + 2.84x_{8}&amp;\leq 409\\
+\end{eqnarray}\\
+\text{With integer constraints as: }
+\begin{eqnarray}
+\begin{array}{cccccc}
+[1 &amp; 2 &amp; 3 &amp; 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 &amp;\leq x_{1} &amp;\leq 1\\
+0 &amp;\leq x_{2} &amp;\leq 1\\
+0 &amp;\leq x_{3} &amp;\leq 1\\
+0 &amp;\leq x_{4} &amp;\leq 1\\
+0 &amp;\leq x_{5} &amp;\leq \infty\\
+0 &amp;\leq x_{6} &amp;\leq \infty\\
+0 &amp;\leq x_{7} &amp;\leq \infty\\
+0 &amp;\leq x_{8} &amp;\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}
+&amp;5x_{1} + 3x_{2} + 4x_{3} + 6x_{4} + x_{5} + x_{6} + x_{7} + x_{8}&amp;= 25\\
+&amp;0.25x_{1} + 0.12x_{2} + 0.2x_{3} + 0.18x_{4} + 0.08x_{5} + 0.07x_{6} + 0.06x_{7} + 0.03x_{8}&amp;= 1.25\\
+&amp;0.15x_{1} + 0.09x_{2} + 0.16x_{3} + 0.24x_{4} + 0.06x_{5} + 0.07x_{6} + 0.08x_{7} + 0.09x_{8}&amp;= 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} &amp;6x_{1} + 4.25x_{2} + 5.5x_{3} + 7.75x_{4} + 3x_{5} + 3.25x_{6} + 3.5x_{7} + 3.75x_{8}&amp;\leq 26.333\\
+\hspace{70pt} &amp;1.25x_{1} + 1.37x_{2} + 1.7x_{3} + 1.93x_{4} + 2.08x_{5} + 2.32x_{6} + 2.56x_{7} + 2.78x_{8}&amp;\leq 3.916\\
+\hspace{70pt} &amp;1.15x_{1} + 1.34x_{2} + 1.66x_{3} + 1.99x_{4} + 2.06x_{5} + 2.32x_{6} + 2.58x_{7} + 2.84x_{8}&amp;\leq 5.249\\
+\end{eqnarray}\\
+\text{With integer constraints as: }
+\begin{eqnarray}
+\begin{array}{cccc}
+[1 &amp; 2 &amp; 3 &amp; 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} &amp;5x_{1} + 3x_{2} + 4x_{3} + 6x_{4} + x_{5} + x_{6} + x_{7} + x_{8}&amp;= 25\\
+\hspace{70pt} &amp;0.25x_{1} + 0.12x_{2} + 0.2x_{3} + 0.18x_{4} + 0.08x_{5} + 0.07x_{6} + 0.06x_{7} + 0.03x_{8}&amp;= 1.25\\
+\hspace{70pt} &amp;0.15x_{1} + 0.09x_{2} + 0.16x_{3} + 0.24x_{4} + 0.06x_{5} + 0.07x_{6} + 0.08x_{7} + 0.09x_{8}&amp;= 1.25\\
+\end{eqnarray}\\
+\text{With integer constraints as: }
+\begin{eqnarray}
+\begin{array}{cccccc}
+[1 &amp; 2 &amp; 3 &amp; 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>