(*********************************************************************** Mathematica-Compatible Notebook This notebook can be used on any computer system with Mathematica 4.0, MathReader 4.0, or any compatible application. The data for the notebook starts with the line containing stars above. To get the notebook into a Mathematica-compatible application, do one of the following: * Save the data starting with the line of stars above into a file with a name ending in .nb, then open the file inside the application; * Copy the data starting with the line of stars above to the clipboard, then use the Paste menu command inside the application. Data for notebooks contains only printable 7-bit ASCII and can be sent directly in email or through ftp in text mode. Newlines can be CR, LF or CRLF (Unix, Macintosh or MS-DOS style). NOTE: If you modify the data for this notebook not in a Mathematica- compatible application, you must delete the line below containing the word CacheID, otherwise Mathematica-compatible applications may try to use invalid cache data. For more information on notebooks and Mathematica-compatible applications, contact Wolfram Research: web: http://www.wolfram.com email: info@wolfram.com phone: +1-217-398-0700 (U.S.) Notebook reader applications are available free of charge from Wolfram Research. ***********************************************************************) (*CacheID: 232*) (*NotebookFileLineBreakTest NotebookFileLineBreakTest*) (*NotebookOptionsPosition[ 45522, 1731]*) (*NotebookOutlinePosition[ 70730, 2650]*) (* CellTagsIndexPosition[ 70686, 2646]*) (*WindowFrame->Normal*) Notebook[{ Cell[CellGroupData[{ Cell["PLEMATH", "Title", Evaluatable->False, CellHorizontalScrolling->False, TextAlignment->Center, FontSize->28, FontColor->RGBColor[0, 0, 0.996109]], Cell["\<\ PROGRAMACION LINEAL Y ENTERA EN EL SISTEMA MATHEMATICA\ \>", "Subtitle", Evaluatable->False, CellHorizontalScrolling->False, TextAlignment->Center, FontSize->18, FontColor->RGBColor[0, 0, 0.996109]], Cell["\<\ Authors: Mijail Borges-Quintana, Miguel A. Borges-Trenard Department of Mathematics. Faculty of Sciences. University of Oriente. Santiago de Cuba, 90500 Cuba {mijail, mborges}@csd.uo.edu.cu} Edgar Martinez-Moro Applied Mathematics Department. E.T.S. Arquitectura University of Valladolid. Valladolid, 47014 Spain edgar@vax631.cpd.uva.es Students Collaborators: Liliana Puente Maury ( Mathematics \ Specialty) Daniel Guerra Mars\[AAcute]n (Computer \ Science Specialty)\ \>", "Subsubtitle", Evaluatable->False, CellHorizontalScrolling->False, FontSize->12] }, Open ]], Cell[CellGroupData[{ Cell["PLEMATH COURSE", "Subsubtitle", Evaluatable->False, CellHorizontalScrolling->False, TextAlignment->Center, FontSize->16, FontColor->RGBColor[0, 0, 0.996109]], Cell["\<\ PLEMATH System has been built to be used in Linear Programming as well as in Linear Integer Programming, mainly with teaching purposes. It is performed in the programming language of the Mathematica System for Windows, which has various advantages, such as having a great number of implemented functions and a user's friendly environment. Moreover, it works with exact rational arithmetic. The algorithms belonging to PLEMATH can be performed step by step, allowing interaction with the user as needed by the learning process. It means that although the functions that carry out the steps are present when solving a fixed problem, their sequence and the different criteria must be known. Therefore, the procedure is similar to the problem's resolution without the computer's aid, having the advantages that it is not necessary to do the calculations by hand, and that the partial results are shown on the display. The system counts on direct calculation functions too, and enables to know the number of iterations when solving a problem with a certain algorithm, and to stop the calculation process, previously keeping the data so that they could be used later on as a starting point. In this course several examples explaining how to work with the system are shown. It is described, too, in a general way, how the functions that carry out the different algorithms have been built, their possibilities and limitations. Some of the work directions in which PLEMATH could be enlarged are also pointed out. We advise the readers to follow the order in which the examples are exposed so as to guarantee a better comprehension. \ \>", "Text", PageWidth->WindowWidth, TextJustification->1, FontFamily->"Courier New", FontSize->12, FontWeight->"Bold"] }, Open ]], Cell[CellGroupData[{ Cell["Example No.1:", "Text", Evaluatable->False, FontSize->14, FontWeight->"Bold", FontColor->RGBColor[0.996109, 0, 0]], Cell[CellGroupData[{ Cell["\<\ Let us use the following Linear Programming problem to show some of PLEMATH's possibilities.\ \>", "Text", PageWidth->Infinity, FontSize->14, FontWeight->"Bold", Background->None], Cell["\<\ (1) Max f = -5x1 - 21x3 Subject to : x1 - x2 + 6x3 >= 2 x1 + x2 + 2x3 >= 1 Which can be transformed into the standard form: (2) Max f = -5x1 - 21x3 Subject to: x1 -x2 + 6x3 -x4 == 2 x1 + x2 + 2x3 - x5 == 1 First, this problem will be solved by applying the Simplex Algorithm step by \ step. Observing the previous problem carefully we realize there exist \ surplus variables, since there are \"greater than or equal to\" inequalities. \ Thus, the initial basic solution can not be obtained by taking the surplus \ variables as the basic ones. It is well-known that this problem can be solved \ by applying the Two-phase Method, which requires a new cost function and \ artificial variables whose values are zero for the problem (1). According to the Two-phase Method, the following auxiliary problem must be \ solved in phase 1: (3) Max aux = -x6 - x7 = -3 + 2x1 + 8x3 - x4 - x5 f = -5x1 -21x3 Subject to: x1 - x2 + 6x3 - x4 + x6 == 2 x1 + x2 + 2x3 - x5 + x7 == 1 The problem established above is solved as follows: \ \>", "Text", Evaluatable->False, FontWeight->"Bold"] }, Open ]], Cell[CellGroupData[{ Cell["var={x1,x2,x3,x4,x5,x6,x7}", "Input", PageWidth->Infinity], Cell[BoxData[ \({x1, x2, x3, x4, x5, x6, x7}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell["restric={x1-x2+6x3-x4+x6==2,x1+x2+2x3-x5+x7==1}", "Input", PageWidth->Infinity], Cell[BoxData[ \({x1 - x2 + 6\ x3 - x4 + x6 == 2, x1 + x2 + 2\ x3 - x5 + x7 == 1}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell["funobj={-3+2x1+8x3-x4-x5,-5x1-21x3}", "Input", PageWidth->Infinity], Cell[BoxData[ \({\(-3\) + 2\ x1 + 8\ x3 - x4 - x5, \(-5\)\ x1 - 21\ x3}\)], "Output"] }, Open ]], Cell["\<\ PLEMATH's variables \" var\", \"restric\" and \"funobj\" are the ones used \ to get the variables, the constraints and the cost function respectively. The \ variable \"funobj\" consists of a list of cost functions that appear in the \ order they will be analyzed by the different optimization functions that \ admit working with various cost functions. \ \>", "Text", Evaluatable->False, FontWeight->"Bold", FontTracking->"Plain", FontVariations->{"Outline"->False, "Shadow"->False}], Cell[CellGroupData[{ Cell["varbas={x6,x7}", "Input", PageWidth->Infinity], Cell[BoxData[ \({x6, x7}\)], "Output"] }, Open ]], Cell["\<\ PLEMATH program must be loaded with the Mathematica's function \"Get\" to \ use any PLEMATH's function, this program contains the definitions of them \ all. After loading PLEMATH, it is not necessary nor advisable reloading it while \ staying in the Mathematica. To use the function \"Get\" we proceed as follows: Get[\"path\"] For example: \ \>", "Text", Evaluatable->False, FontWeight->"Bold", FontTracking->"Plain", FontVariations->{"Outline"->False, "Shadow"->False}], Cell[CellGroupData[{ Cell["Get[\"a:\\math\\plemath\"]", "Input", PageWidth->Infinity], Cell[BoxData[ \("SISTEMA PLEMATH"\)], "Print"], Cell[BoxData[ \("VERSION 1.1"\)], "Print"], Cell[BoxData[ \("PROGRAMACION LINEAL Y ENTERA EN EL SISTEMA MATHEMATICA"\)], "Print"], Cell[BoxData[ \("Authors: Mijail Borges-Quintana,"\)], "Print"], Cell[BoxData[ \(" Miguel A. Borges-Trenard"\)], "Print"], Cell[BoxData[ \("Department of Mathematics. Faculty of Sciences."\)], "Print"], Cell[BoxData[ \("University of Oriente. Santiago de Cuba, 90500 Cuba"\)], "Print"], Cell[BoxData[ \("e-mail: {mijail,mborges}@csd.uo.edu.cu}"\)], "Print"], Cell[BoxData[ \(""\)], "Print"], Cell[BoxData[ \(" Edgar Martinez-Moro"\)], "Print"], Cell[BoxData[ \("Applied Mathematics Department. E.T.S. Arquitectura"\)], "Print"], Cell[BoxData[ \("University of Valladolid. Valladolid, 47014 Spain"\)], "Print"], Cell[BoxData[ \("e-mail: edgar@vax631.cpd.uva.es"\)], "Print"], Cell[BoxData[ \(""\)], "Print"], Cell[BoxData[ \("Students Collaborators:"\)], "Print"], Cell[BoxData[ \("Liliana Puente Maury ( Mathematics Specialty)"\)], "Print"], Cell[BoxData[ \("Daniel Guerra Marsan (Computer Science Specialty)"\)], "Print"] }, Open ]], Cell[CellGroupData[{ Cell["begin[funobj,restric,var,varbas]", "Input", PageWidth->Infinity], Cell["\<\ The starting function is \"begin\". It paves the way for the application of \ any other function of PLEMATH. There are some functions requiring \"begin\" \ previous application and some others having it implicitly. \ \>", "Text", Evaluatable->False, FontWeight->"Bold", FontTracking->"Plain", FontVariations->{"Outline"->False, "Shadow"->False}] }, Open ]], Cell[CellGroupData[{ Cell["showtable[]", "Input", PageWidth->Infinity], Cell[BoxData[ TagBox[ RowBox[{"(", GridBox[{ {\(" "\), \(" "\), \("x1"\), \("x2"\), \("x3"\), \("x4"\), \("x5"\)}, {\("fobj1"\), \(-3\), \(-2\), "0", \(-8\), "1", "1"}, {\("fobj2"\), "0", "5", "0", "21", "0", "0"}, {\("x6"\), "2", "1", \(-1\), "6", \(-1\), "0"}, {\("x7"\), "1", "1", "1", "2", "0", \(-1\)} }], ")"}], (MatrixForm[ #]&)]], "Output"], Cell["\<\ The function \"showtable\" shows the current Simplex table. By applying this \ function, it is gotten, for this example, the table shown above.\ \>", "Text", Evaluatable->False, FontWeight->"Bold", FontTracking->"Plain", FontVariations->{"Outline"->False, "Shadow"->False}], Cell["\<\ While optimizing the first cost function, the second row (second cost \ function) varies according to the Simplex Method. \ \>", "Text", Evaluatable->False, FontWeight->"Bold", FontTracking->"Plain", FontVariations->{"Outline"->False, "Shadow"->False}] }, Open ]], Cell[CellGroupData[{ Cell["findmin[row[1],2]", "Input", PageWidth->Infinity], Cell[BoxData[ \({\(-8\), {4}}\)], "Output"], Cell["\<\ Searching through the first row the smallest value ( -8) is noted at fourth \ column. This is easily verified by watching the table. A nonbasic variable is \ selected to become basic by this step. It should be noticed that in simple \ cases like this it is not necessary to use the function findmin, since this \ step can be easily done by observing the table. \ \>", "Text", Evaluatable->False, FontWeight->"Bold", FontTracking->"Plain", FontVariations->{"Outline"->False, "Shadow"->False}] }, Open ]], Cell[CellGroupData[{ Cell["mincocient[colum[1],colum[4]]", "Input", PageWidth->Infinity], Cell[BoxData[ \({1\/3, {3}}\)], "Output"], Cell["\<\ This function selects the basic variable that will become nonbasic. To carry \ out this step it is important to know the criterion for selecting this \ variable so as to properly write the mincocient arguments. You must even \ know that this is the function to be used with the Simplex Method, since \ there also exists maxcocient. In this example, the results of this function \ shows that the selected basic variable is the one that belongs to the third \ row of the former table, i.e., x6. If the column corresponding to the \ nonbasic variable selected to become basic does not have positive figures, \ the function mincocient produces a list whose second argument is an empty one \ (corresponding to an unbounded problem). \ \>", "Text", Evaluatable->False, FontWeight->"Bold", FontTracking->"Plain", FontVariations->{"Outline"->False, "Shadow"->False}] }, Open ]], Cell[CellGroupData[{ Cell["simplexpiv[3,4]", "Input", PageWidth->Infinity], Cell[BoxData[ \({\(-\(1\/3\)\), {"x1" \[Rule] 0, "x2" \[Rule] 0, "x3" \[Rule] 1\/3, "x4" \[Rule] 0, "x5" \[Rule] 0, "x6" \[Rule] 0, "x7" \[Rule] 1\/3}} \)], "Output"], Cell["\<\ The function \"simplexpiv\" is just the Simplex pivot process. The product of \ this function is a list consisting of two elements. The first of them is the \ value of the cost function, and the second is another list whose elements are \ the values of each variable. Thus, we have -1/3 for the cost function and \ x1=x2=x4=x5=x6=0, x3=1/3, x7=1/3 for the variables.\ \>", "Text", Evaluatable->False, FontWeight->"Bold", FontTracking->"Plain", FontVariations->{"Outline"->False, "Shadow"->False}] }, Open ]], Cell[CellGroupData[{ Cell["\<\ showtable[]\ \>", "Input", PageWidth->Infinity], Cell[BoxData[ TagBox[ RowBox[{"(", GridBox[{ {\(" "\), \(" "\), \("x1"\), \("x2"\), \("x6"\), \("x4"\), \("x5"\)}, {\("fobj1"\), \(-\(1\/3\)\), \(-\(2\/3\)\), \(-\(4\/3\)\), \(4\/3\), \(-\(1\/3\)\), "1"}, {\("fobj2"\), \(-7\), \(3\/2\), \(7\/2\), \(-\(7\/2\)\), \(7\/2\), "0"}, {\("x3"\), \(1\/3\), \(1\/6\), \(-\(1\/6\)\), \(1\/6\), \(-\(1\/6\)\), "0"}, {\("x7"\), \(1\/3\), \(2\/3\), \(4\/3\), \(-\(1\/3\)\), \(1\/3\), \(-1\)} }], ")"}], (MatrixForm[ #]&)]], "Output"] }, Open ]], Cell["\<\ We will iterate now in the same way. \ \>", "Text", Evaluatable->False, FontSize->14, FontWeight->"Bold", FontTracking->"Plain", FontColor->RGBColor[1, 0, 0], FontVariations->{"Outline"->False, "Shadow"->False}], Cell[CellGroupData[{ Cell["findmin[row[1],2]", "Input", PageWidth->Infinity], Cell[BoxData[ \({\(-\(4\/3\)\), {3}}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell["mincocient[colum[1],colum[3]]", "Input", PageWidth->Infinity], Cell[BoxData[ \({1\/4, {4}}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell["simplexpiv[4,3]", "Input", PageWidth->Infinity], Cell[BoxData[ \({0, {"x1" \[Rule] 0, "x2" \[Rule] 1\/4, "x3" \[Rule] 3\/8, "x4" \[Rule] 0, "x5" \[Rule] 0, "x6" \[Rule] 0, "x7" \[Rule] 0}}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell["showtable[] ", "Input", PageWidth->Infinity], Cell[BoxData[ TagBox[ RowBox[{"(", GridBox[{ {\(" "\), \(" "\), \("x1"\), \("x7"\), \("x6"\), \("x4"\), \("x5"\)}, {\("fobj1"\), "0", "0", "1", "1", "0", "0"}, {\("fobj2"\), \(-\(63\/8\)\), \(-\(1\/4\)\), \(-\(21\/8\)\), \(-\(21\/8\)\), \(21\/8\), \(21\/8\)}, {\("x3"\), \(3\/8\), \(1\/4\), \(1\/8\), \(1\/8\), \(-\(1\/8\)\), \(-\(1\/8\)\)}, {\("x2"\), \(1\/4\), \(1\/2\), \(3\/4\), \(-\(1\/4\)\), \(1\/4\), \(-\(3\/4\)\)} }], ")"}], (MatrixForm[ #]&)]], "Output"] }, Open ]], Cell["\<\ It can be seen in the latter table that the optimality conditions for fobj1 \ have been reached, and thus it is possible to get an initial basic solution \ to minimize fobj2.\ \>", "Text", Evaluatable->False, FontWeight->"Bold", FontTracking->"Plain", FontVariations->{"Outline"->False, "Shadow"->False}], Cell[TextData[{ StyleBox["delrow[i]", FontColor->RGBColor[1, 0, 0]], ": This function erases the ith row of the simplex table and eliminates any \ trace of the variable corresponding to this row. \"delrow\" will be used to \ remove the row concerning fobj1.\n" }], "Text", Evaluatable->False, FontWeight->"Bold", FontTracking->"Plain", FontVariations->{"Outline"->False, "Shadow"->False}], Cell["delrow[1]", "Input", PageWidth->Infinity], Cell["\<\ In this example it will be seen how the definition of \"funobj\" and the \ simplex table vary. \ \>", "Text", Evaluatable->False, FontWeight->"Bold", FontTracking->"Plain", FontVariations->{"Outline"->False, "Shadow"->False}], Cell[CellGroupData[{ Cell["funobj", "Input", PageWidth->Infinity], Cell[BoxData[ \({\(-5\)\ x1 - 21\ x3}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell["showtable[]", "Input", PageWidth->Infinity], Cell[BoxData[ TagBox[ RowBox[{"(", GridBox[{ {\(" "\), \(" "\), \("x1"\), \("x7"\), \("x6"\), \("x4"\), \("x5"\)}, {\("fobj1"\), \(-\(63\/8\)\), \(-\(1\/4\)\), \(-\(21\/8\)\), \(-\(21\/8\)\), \(21\/8\), \(21\/8\)}, {\("x3"\), \(3\/8\), \(1\/4\), \(1\/8\), \(1\/8\), \(-\(1\/8\)\), \(-\(1\/8\)\)}, {\("x2"\), \(1\/4\), \(1\/2\), \(3\/4\), \(-\(1\/4\)\), \(1\/4\), \(-\(3\/4\)\)} }], ")"}], (MatrixForm[ #]&)]], "Output"] }, Open ]], Cell["\<\ The artificial variables (x6, x7) are also nonbasic, and they belong to the \ third and fourth columns of table No.4, respectively. Of course, they must be \ deleted in the second phase of the Two-phase Method.The function: \ \>", "Text", Evaluatable->False, FontWeight->"Bold", FontTracking->"Plain", FontVariations->{"Outline"->False, "Shadow"->False}], Cell[CellGroupData[{ Cell["delcol[{3,4}]", "Input", PageWidth->Infinity], Cell["\<\ is used to remove the columns mentioned above, eliminating any trace of the \ variables x6 and x7 (see delrow). \ \>", "Text", Evaluatable->False, FontWeight->"Bold", FontTracking->"Plain", FontVariations->{"Outline"->False, "Shadow"->False}] }, Open ]], Cell[CellGroupData[{ Cell["varNbas", "Input", PageWidth->Infinity], Cell[BoxData[ \({1, 4, 5}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell["showtable[]", "Input", PageWidth->Infinity], Cell[BoxData[ TagBox[ RowBox[{"(", GridBox[{ {\(" "\), \(" "\), \("x1"\), \("x4"\), \("x5"\)}, {\("fobj1"\), \(-\(63\/8\)\), \(-\(1\/4\)\), \(21\/8\), \(21\/8\)}, {\("x3"\), \(3\/8\), \(1\/4\), \(-\(1\/8\)\), \(-\(1\/8\)\)}, {\("x2"\), \(1\/4\), \(1\/2\), \(1\/4\), \(-\(3\/4\)\)} }], ")"}], (MatrixForm[ #]&)]], "Output"] }, Open ]] }, Open ]], Cell["\<\ Now, problem No.1 will be solved by applying direct calculation functions.\ \>", "Text", Evaluatable->False, FontWeight->"Bold", FontColor->RGBColor[0, 0, 1]], Cell[CellGroupData[{ Cell["\<\ Example No.2: \ \>", "Text", Evaluatable->False, FontSize->14, FontWeight->"Bold", FontColor->RGBColor[0.996109, 0, 0]], Cell["\<\ If we want to get the basis of the Two-phase Method without performing the \ Simplex Method step by step for each cost function, there exist the functions \ \"simplexLPfobj\" and \"simplexLP1\". The following function must be \ performed if we want to start solving another problem:\ \>", "Text", Evaluatable->False, FontWeight->"Bold", FontTracking->"Plain", FontVariations->{"Outline"->False, "Shadow"->False}], Cell["\<\ clear[] \ \>", "Input", PageWidth->Infinity], Cell[CellGroupData[{ Cell["var={x1,x2,x3,x4,x5,x6,x7}", "Input", PageWidth->Infinity, FontFamily->"Courier New", FontSize->12, FontWeight->"Bold"], Cell[BoxData[ \({x1, x2, x3, x4, x5, x6, x7}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell["restric={x1-x2+6x3-x4+x6==2,x1+x2+2x3-x5+x7==1}", "Input", PageWidth->Infinity, FontFamily->"Courier New", FontSize->12, FontWeight->"Bold"], Cell[BoxData[ \({x1 - x2 + 6\ x3 - x4 + x6 == 2, x1 + x2 + 2\ x3 - x5 + x7 == 1}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell["funobj={-3+2x1+8x3-x4-x5,-5x1-21x3}", "Input", PageWidth->Infinity, FontFamily->"Courier New", FontSize->12, FontWeight->"Bold"], Cell[BoxData[ \({\(-3\) + 2\ x1 + 8\ x3 - x4 - x5, \(-5\)\ x1 - 21\ x3}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell["varbas={x6,x7}", "Input", PageWidth->Infinity, FontFamily->"Courier New", FontSize->12, FontWeight->"Bold"], Cell[BoxData[ \({x6, x7}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell["begin[funobj,restric,var,varbas]", "Input", PageWidth->Infinity], Cell["\<\ ( Getting the variables, constraints, cost functions and basic variables \ concerning problem No.3, and then initializing it by means of begin).\ \>", "Text", Evaluatable->False, FontWeight->"Bold", FontTracking->"Plain", FontVariations->{"Outline"->False, "Shadow"->False}] }, Open ]], Cell[CellGroupData[{ Cell["simplexLPfobj[]", "Input", PageWidth->Infinity], Cell[BoxData[ \({0, {"x1" \[Rule] 0, "x2" \[Rule] 1\/4, "x3" \[Rule] 3\/8, "x4" \[Rule] 0, "x5" \[Rule] 0, "x6" \[Rule] 0, "x7" \[Rule] 0}}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell["showtable[]", "Input", PageWidth->Infinity], Cell[BoxData[ TagBox[ RowBox[{"(", GridBox[{ {\(" "\), \(" "\), \("x1"\), \("x7"\), \("x6"\), \("x4"\), \("x5"\)}, {\("fobj1"\), "0", "0", "1", "1", "0", "0"}, {\("fobj2"\), \(-\(63\/8\)\), \(-\(1\/4\)\), \(-\(21\/8\)\), \(-\(21\/8\)\), \(21\/8\), \(21\/8\)}, {\("x3"\), \(3\/8\), \(1\/4\), \(1\/8\), \(1\/8\), \(-\(1\/8\)\), \(-\(1\/8\)\)}, {\("x2"\), \(1\/4\), \(1\/2\), \(3\/4\), \(-\(1\/4\)\), \(1\/4\), \(-\(3\/4\)\)} }], ")"}], (MatrixForm[ #]&)]], "Output"] }, Open ]], Cell["\<\ If the variables \"morecol\" and \"coladit\" are evaluated after applying \ \"simplexLPfobj\" we have:\ \>", "Text", Evaluatable->False, FontWeight->"Bold", FontTracking->"Plain", FontVariations->{"Outline"->False, "Shadow"->False}], Cell[CellGroupData[{ Cell["morecol", "Input", PageWidth->Infinity], Cell[BoxData[ \(True\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell["coladit", "Input", PageWidth->Infinity], Cell[BoxData[ \(2\)], "Output"] }, Open ]], Cell["\<\ If we had used \"simplexLP1\", after applying it we would have had False for \ \"morecol\" and 0 for \"coladit\". \ \>", "Text", Evaluatable->False, FontWeight->"Bold", FontTracking->"Plain", FontVariations->{"Outline"->False, "Shadow"->False}], Cell["\<\ To eliminate the auxiliary cost function and the artificial variables we \ should proceed as in Example No.1. Then, any of the two functions could be \ used to optimize fobj1. \"simplexLP1\" can not be used since the problem is \ already initialized, i.e., the function \"begin\" has been applied. \ \>", "Text", Evaluatable->False, FontWeight->"Bold", FontTracking->"Plain", FontVariations->{"Outline"->False, "Shadow"->False}], Cell["delrow[1]", "Input", PageWidth->Infinity], Cell["delcol[{3,4}]", "Input", PageWidth->Infinity], Cell[CellGroupData[{ Cell["showtable[]", "Input", PageWidth->Infinity], Cell[BoxData[ TagBox[ RowBox[{"(", GridBox[{ {\(" "\), \(" "\), \("x1"\), \("x4"\), \("x5"\)}, {\("fobj1"\), \(-\(63\/8\)\), \(-\(1\/4\)\), \(21\/8\), \(21\/8\)}, {\("x3"\), \(3\/8\), \(1\/4\), \(-\(1\/8\)\), \(-\(1\/8\)\)}, {\("x2"\), \(1\/4\), \(1\/2\), \(1\/4\), \(-\(3\/4\)\)} }], ")"}], (MatrixForm[ #]&)]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell["simplexLPfobj[]", "Input", PageWidth->Infinity], Cell[BoxData[ \({\(-\(31\/4\)\), {"x1" \[Rule] 1\/2, "x2" \[Rule] 0, "x3" \[Rule] 1\/4, "x4" \[Rule] 0, "x5" \[Rule] 0}}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell["showtable[]", "Input", PageWidth->Infinity], Cell[BoxData[ TagBox[ RowBox[{"(", GridBox[{ {\(" "\), \(" "\), \("x2"\), \("x4"\), \("x5"\)}, {\("fobj1"\), \(-\(31\/4\)\), \(1\/2\), \(11\/4\), \(9\/4\)}, {\("x3"\), \(1\/4\), \(-\(1\/2\)\), \(-\(1\/4\)\), \(1\/4\)}, {\("x1"\), \(1\/2\), "2", \(1\/2\), \(-\(3\/2\)\)} }], ")"}], (MatrixForm[ #]&)]], "Output"] }, Open ]], Cell["\<\ It should be noticed that if \"simplexLP1\" would have been applied to get \ Table No.1, for obtaining Table No.2 by applying \"simplexLP1\" or \ \"simplexLPfobj2, the auxiliary columns must be built again internally, in \ order to avoid cycles. As Table No.1 was got, in the other way, the auxiliary columns remain steady \ and it is not necessary to build them again. \ \>", "Text", Evaluatable->False, FontWeight->"Bold", FontTracking->"Plain", FontVariations->{"Outline"->False, "Shadow"->False}], Cell["\<\ \"simplexLPfobj\" should not be used when the number of basic variables \ varies, and if it is used, afterwards we must apply function \"delcolaux\", \ which deletes the auxiliary columns. But all of this would be the same as \ applying \"simplexLP1\" (see Example No.3). Now, it will be shown how to solve problem No.1 with the function \"simplexLP\ \". \ \>", "Text", Evaluatable->False, FontWeight->"Bold", FontTracking->"Plain", FontVariations->{"Outline"->False, "Shadow"->False}], Cell["clear[]", "Input", PageWidth->Infinity], Cell[CellGroupData[{ Cell["var={x1,x2,x3,x4,x5}", "Input", PageWidth->Infinity, FontFamily->"Courier New", FontSize->12, FontWeight->"Bold"], Cell[BoxData[ \({x1, x2, x3, x4, x5}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell["restric={x1-x2+6x3-x4==2,x1+x2+2x3-x5==1}", "Input", PageWidth->Infinity, FontFamily->"Courier New", FontSize->12, FontWeight->"Bold"], Cell[BoxData[ \({x1 - x2 + 6\ x3 - x4 == 2, x1 + x2 + 2\ x3 - x5 == 1}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell["funobj=-5x1-21x3", "Input", PageWidth->Infinity, FontFamily->"Courier New", FontSize->12, FontWeight->"Bold"], Cell[BoxData[ \(\(-5\)\ x1 - 21\ x3\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell["simplexLP[]", "Input", PageWidth->Infinity], Cell[BoxData[ \({\(-\(31\/4\)\), {"x1" \[Rule] 1\/2, "x2" \[Rule] 0, "x3" \[Rule] 1\/4, "x4" \[Rule] 0, "x5" \[Rule] 0}}\)], "Output"] }, Open ]], Cell["\<\ For applying \"simplexLP\", neither the initial basic variables are gotten, \ nor the problem is initialized with begin. These steps correspond to the \ internal task of \"simplexLP\". Notice that it is not necessary to introduce \ artificial variables for this function, since it does not demand initial \ basic variables. \ \>", "Text", Evaluatable->False, FontWeight->"Bold", FontTracking->"Plain", FontVariations->{"Outline"->False, "Shadow"->False}] }, Open ]], Cell["\<\ Afterwards, an example concerning a linear integer problem will be shown. We \ will deal with problem No.1, specifying that variables are all integer. \ \>", "Text", Evaluatable->False, FontWeight->"Bold", FontColor->RGBColor[0, 0, 1]], Cell[CellGroupData[{ Cell["Example No.3.", "Text", Evaluatable->False, FontSize->14, FontWeight->"Bold", FontColor->RGBColor[0.996109, 0, 0]], Cell["\<\ It will be shown how to solve problem No.1 by applying Gomory 1 Algoritm. \ \>", "Text", Evaluatable->False, FontWeight->"Bold", FontTracking->"Plain", FontVariations->{"Outline"->False, "Shadow"->False}], Cell["clear[]", "Input", PageWidth->Infinity], Cell[CellGroupData[{ Cell["var={x1,x2,x3,x4,x5}", "Input", PageWidth->Infinity], Cell[BoxData[ \({x1, x2, x3, x4, x5}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell["funobj=-5x1-21x3", "Input", PageWidth->Infinity], Cell[BoxData[ \(\(-5\)\ x1 - 21\ x3\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell["restric={x1-x2+6x3-x4==2,x1+x2+2x3-x5==1}", "Input", PageWidth->Infinity], Cell[BoxData[ \({x1 - x2 + 6\ x3 - x4 == 2, x1 + x2 + 2\ x3 - x5 == 1}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell["simplexLP[]", "Input", PageWidth->Infinity], Cell[BoxData[ \({\(-\(31\/4\)\), {"x1" \[Rule] 1\/2, "x2" \[Rule] 0, "x3" \[Rule] 1\/4, "x4" \[Rule] 0, "x5" \[Rule] 0}}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell["showtable[]", "Input", PageWidth->Infinity], Cell[BoxData[ TagBox[ RowBox[{"(", GridBox[{ {\(" "\), \(" "\), \("x2"\), \("x4"\), \("x5"\)}, {\("fobj1"\), \(-\(31\/4\)\), \(1\/2\), \(11\/4\), \(9\/4\)}, {\("x3"\), \(1\/4\), \(-\(1\/2\)\), \(-\(1\/4\)\), \(1\/4\)}, {\("x1"\), \(1\/2\), "2", \(1\/2\), \(-\(3\/2\)\)} }], ")"}], (MatrixForm[ #]&)]], "Output"] }, Open ]], Cell["\<\ Since the solution of the continous problem is not integer, a cut of Gomory \ must be got in. \ \>", "Text", Evaluatable->False, FontWeight->"Bold", FontTracking->"Plain", FontColor->RGBColor[0.996109, 0, 0], FontVariations->{"Outline"->False, "Shadow"->False}], Cell[CellGroupData[{ Cell["newvar[s1]", "Input", PageWidth->Infinity], Cell["\<\ This function defines a new variable in order to get in a new constraint.\ \>", "Text", Evaluatable->False, FontWeight->"Bold", FontTracking->"Plain", FontVariations->{"Outline"->False, "Shadow"->False}] }, Open ]], Cell[CellGroupData[{ Cell["addrestric[s1-1/2x2-3/4x4-1/4x5==-1/4]", "Input", PageWidth->Infinity], Cell["\<\ And this function gets in a Gomory cut-constraint, i.e., the basic variable \ of this constraint is the one that is gotten by means of newvar. \ \>", "Text", Evaluatable->False, FontWeight->"Bold", FontTracking->"Plain", FontVariations->{"Outline"->False, "Shadow"->False}] }, Open ]], Cell[CellGroupData[{ Cell["showtable[]", "Input", PageWidth->Infinity], Cell[BoxData[ TagBox[ RowBox[{"(", GridBox[{ {\(" "\), \(" "\), \("x2"\), \("x4"\), \("x5"\)}, {\("fobj1"\), \(-\(31\/4\)\), \(1\/2\), \(11\/4\), \(9\/4\)}, {\("x3"\), \(1\/4\), \(-\(1\/2\)\), \(-\(1\/4\)\), \(1\/4\)}, {\("x1"\), \(1\/2\), "2", \(1\/2\), \(-\(3\/2\)\)}, {\("s1"\), \(-\(1\/4\)\), \(-\(1\/2\)\), \(-\(3\/4\)\), \(-\(1\/4\)\)} }], ")"}], (MatrixForm[ #]&)]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell["dualsimplex[]", "Input", PageWidth->Infinity], Cell[BoxData[ \({\(-\(42\/5\)\), {"x1" \[Rule] 0, "x2" \[Rule] 1\/5, "x3" \[Rule] 2\/5, "x4" \[Rule] 1\/5, "x5" \[Rule] 0, "s1" \[Rule] 0}}\)], "Output"], Cell["\<\ The dual simplex method is applied in each iteration of Gomory 1 Algorithm, \ since basic variables with negative values are gotten by the cuts. \ \>", "Text", Evaluatable->False, FontWeight->"Bold", FontTracking->"Plain", FontVariations->{"Outline"->False, "Shadow"->False}] }, Open ]], Cell[CellGroupData[{ Cell["showtable[]", "Input", PageWidth->Infinity], Cell[BoxData[ TagBox[ RowBox[{"(", GridBox[{ {\(" "\), \(" "\), \("s1"\), \("x1"\), \("x5"\)}, {\("fobj1"\), \(-\(42\/5\)\), \(21\/5\), \(4\/5\), "0"}, {\("x3"\), \(2\/5\), \(-\(1\/5\)\), \(1\/5\), "0"}, {\("x4"\), \(1\/5\), \(-\(8\/5\)\), \(-\(2\/5\)\), "1"}, {\("x2"\), \(1\/5\), \(2\/5\), \(3\/5\), \(-1\)} }], ")"}], (MatrixForm[ #]&)]], "Output"] }, Open ]], Cell["\<\ As it can be seen in the latter table, the values of the basic variables are \ not integer and that is why another iteration of the algorithm must be done. \ \>", "Text", Evaluatable->False, FontWeight->"Bold", FontTracking->"Plain", FontVariations->{"Outline"->False, "Shadow"->False}], Cell["newvar[s2]", "Input", PageWidth->Infinity], Cell["addrestric[s2-4/5s1-1/5x1== -2/5]", "Input", PageWidth->Infinity], Cell[CellGroupData[{ Cell["showtable[]", "Input", PageWidth->Infinity], Cell[BoxData[ TagBox[ RowBox[{"(", GridBox[{ {\(" "\), \(" "\), \("s1"\), \("x1"\), \("x5"\)}, {\("fobj1"\), \(-\(42\/5\)\), \(21\/5\), \(4\/5\), "0"}, {\("x3"\), \(2\/5\), \(-\(1\/5\)\), \(1\/5\), "0"}, {\("x4"\), \(1\/5\), \(-\(8\/5\)\), \(-\(2\/5\)\), "1"}, {\("x2"\), \(1\/5\), \(2\/5\), \(3\/5\), \(-1\)}, {\("s2"\), \(-\(2\/5\)\), \(-\(4\/5\)\), \(-\(1\/5\)\), "0"} }], ")"}], (MatrixForm[ #]&)]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell["dualsimplex[]", "Input", PageWidth->Infinity], Cell[BoxData[ \({\(-10\), {"x1" \[Rule] 2, "x2" \[Rule] 0, "x3" \[Rule] 0, "x4" \[Rule] 0, "x5" \[Rule] 1, "s1" \[Rule] 0, "s2" \[Rule] 0}}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell["showtable[]", "Input", PageWidth->Infinity], Cell[BoxData[ TagBox[ RowBox[{"(", GridBox[{ {\(" "\), \(" "\), \("s1"\), \("s2"\), \("x2"\)}, {\("fobj1"\), \(-10\), "1", "4", "0"}, {\("x3"\), "0", \(-1\), "1", "0"}, {\("x4"\), "0", \(-2\), "1", "1"}, {\("x5"\), "1", "2", \(-3\), \(-1\)}, {\("x1"\), "2", "4", \(-5\), "0"} }], ")"}], (MatrixForm[ #]&)]], "Output"] }, Open ]], Cell["\<\ On Observing the latter table, it is clear that this solution is optimal, \ i.e., this problem is solved in two iterations by applying Gomory 1 \ Algorithm.\ \>", "Text", Evaluatable->False, FontWeight->"Bold", FontTracking->"Plain", FontVariations->{"Outline"->False, "Shadow"->False}], Cell["\<\ Now, the direct way for solving this problem by applying function \ \"ngomory1\" will be shown. This function will be performed in order to get \ the number of iterations and also to compare the coming solution with the one \ obtained before.\ \>", "Text", Evaluatable->False, FontFamily->"Arial", FontSize->12, FontWeight->"Bold"], Cell["clear[]", "Input", PageWidth->Infinity, FontFamily->"Courier New", FontSize->12, FontWeight->"Bold"], Cell[CellGroupData[{ Cell["var={x1,x2,x3,x4,x5}", "Input", PageWidth->Infinity, FontFamily->"Courier New", FontSize->12, FontWeight->"Bold"], Cell[BoxData[ \({x1, x2, x3, x4, x5}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell["funobj=-5x1-21x3", "Input", PageWidth->Infinity, FontFamily->"Courier New", FontSize->12, FontWeight->"Bold"], Cell[BoxData[ \(\(-5\)\ x1 - 21\ x3\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell["restric={x1-x2+6x3-x4==2,x1+x2+2x3-x5==1}", "Input", PageWidth->Infinity, FontFamily->"Courier New", FontSize->12, FontWeight->"Bold"], Cell[BoxData[ \({x1 - x2 + 6\ x3 - x4 == 2, x1 + x2 + 2\ x3 - x5 == 1}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell["ngomory1[]", "Input", PageWidth->Infinity], Cell[BoxData[ \({\(-10\), {"x1" \[Rule] 2, "x2" \[Rule] 0, "x3" \[Rule] 0, "x4" \[Rule] 0, "x5" \[Rule] 1, "go1" \[Rule] 0, "go2" \[Rule] 0}, 2} \)], "Output"] }, Open ]], Cell["\<\ As it was expected, function \"ngomory1\" produces a list whose last element \ shows that the problem was solved in two iterations of Gomory1 Algorithm.\ \>", "Text", Evaluatable->False, FontWeight->"Bold", FontTracking->"Plain", FontVariations->{"Outline"->False, "Shadow"->False}] }, Open ]], Cell[CellGroupData[{ Cell["\<\ Some other algorithms that could be performed with PLEMATH \ \>", "Text", Evaluatable->False, FontSize->14, FontWeight->"Bold", FontColor->RGBColor[0.996109, 0, 0]], Cell["See PLEMATH7.ma", "Text", Evaluatable->False, FontSize->14, FontWeight->"Bold", FontTracking->"Plain", FontVariations->{"Outline"->False, "Shadow"->False}] }, Open ]], Cell[CellGroupData[{ Cell["\<\ Transforming a set of constraints having rational coefficients and/or \ constraints in equality form into a set of equivalent constraints having \ integer coeficients in equality form:\ \>", "Text", Evaluatable->False, FontWeight->"Bold", FontColor->RGBColor[0.996109, 0, 0]], Cell[CellGroupData[{ Cell["var={x1,x2}", "Input", PageWidth->Infinity], Cell[BoxData[ \({x1, x2}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell["restric={2x1/3+x2/2>=5/2,x1/4+5x2/6<=15/2}", "Input", PageWidth->Infinity], Cell[BoxData[ \({\(2\ x1\)\/3 + x2\/2 \[GreaterEqual] 5\/2, x1\/4 + \(5\ x2\)\/6 \[LessEqual] 15\/2}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell["restric=allint[restric,var]", "Input", PageWidth->Infinity], Cell[BoxData[ \({4\ x1 + 3\ x2 \[GreaterEqual] 15, 3\ x1 + 10\ x2 \[LessEqual] 90}\)], "Output"], Cell["\<\ The function \"allint\" transforms a set of constraints having rational \ coefficients into a set of equivalent constraints having integer \ coefficients. \ \>", "Text", Evaluatable->False, FontWeight->"Bold", FontTracking->"Plain", FontVariations->{"Outline"->False, "Shadow"->False}] }, Open ]], Cell[CellGroupData[{ Cell["restric=equalrestricform[restric]", "Input", PageWidth->Infinity], Cell[BoxData[ \({\(-ex1\) + 4\ x1 + 3\ x2 == 15, ex2 + 3\ x1 + 10\ x2 == 90}\)], "Output"], Cell["\<\ The function \"equalrestricform\" transforms all restric constraints into the \ standard form, adding the required surplus variables to \"var\", named as \ \"ex\"+\"i\". That is why it is not advisable to use \"ex\"+\"i\" to name the \ variables gotten by the user. So happens with the variables named as \ \"aux\"+\"i\" and \"go\"+\"i\", that are used internally by the functions \ related to the Simplex and Gomory1 Algorithms respectively. \ \>", "Text", Evaluatable->False, FontWeight->"Bold", FontTracking->"Plain", FontVariations->{"Outline"->False, "Shadow"->False}] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Exercises:", "Text", Evaluatable->False, FontSize->14, FontWeight->"Bold", FontColor->RGBColor[0.996109, 0, 0]], Cell["\<\ The reader could try to apply to the following problems any of the algorithms \ described before or in the Notebooks from 3 to 7.\ \>", "Text", Evaluatable->False, FontWeight->"Bold", FontTracking->"Plain", FontVariations->{"Outline"->False, "Shadow"->False}], Cell["\<\ The variables are greater or equal to zero in all exercises..\ \>", "Text", Evaluatable->False, FontWeight->"Bold", FontTracking->"Plain", FontVariations->{"Outline"->False, "Shadow"->False}], Cell["\<\ 1- Max z= 3x1 +x2 +3x3 Subject to: x1 - x2 + x3 <= 4 2x1 + 2x2 + x3 <= 12 2- Max z= x1 - x2 + 4x3 Subject to: -3x1 + 2x2 + 2x3 <= 5 x1 + 3x2 + x3 <= 13 3- Max z= 2x1 + 3x2 Subject to: x1 - 3x2 >= 2 2x1 + x2 <= 6 4- Max z= 4x1 + 5x2 + x3 Subject to: 3x1 + 2x2 <= 10 x1 + 4x2 <= 11 3x1 + 3x2 + x3 <= 13 \ \>", "Text", Evaluatable->False, FontWeight->"Bold", FontTracking->"Plain", FontVariations->{"Outline"->False, "Shadow"->False}] }, Open ]], Cell[CellGroupData[{ Cell["Solutions to the exercises.", "Text", Evaluatable->False, FontWeight->"Bold", FontColor->RGBColor[0.996109, 0, 0]], Cell["\<\ These solutions correspond to the integer problems linked to the prior \ problems, \ \>", "Text", Evaluatable->False, FontWeight->"Bold", FontTracking->"Plain", FontVariations->{"Outline"->False, "Shadow"->False}], Cell["\<\ Solutions to the linked continuous problems: 1) Zmax =68/3, x1=0, x2=8/3, x3=20/3 2) Zmax=197/5, x1=21/5, x2=0, x3=44/5 3) Zmax=46/7 , x1=20/7, x2=2/7 4) Zmax=97/5, x1=9/5, x2=23/10, x3=7/10 \ \>", "Text", Evaluatable->False, FontWeight->"Bold", FontTracking->"Plain", FontVariations->{"Outline"->False, "Shadow"->False}], Cell["\<\ Solutions to the linked integer problems: 1) Zmax = 21, x1=0, x2=3, x3=6 2) Zmax= 37, x1=5, x2=0, x3=8 3) Zmax=6, x1=3, x2=0 4) Zmax=19, x1=2, x2=2, x3=1 \ \>", "Text", Evaluatable->False, FontWeight->"Bold", FontTracking->"Plain", FontVariations->{"Outline"->False, "Shadow"->False}] }, Open ]], Cell[CellGroupData[{ Cell[" PLEMATH enlargement.", "Text", Evaluatable->False, FontWeight->"Bold", FontColor->RGBColor[0.996109, 0, 0]], Cell["\<\ There are many subjects in which PLEMATH could be enlarged. We will state \ here those we consider the most important and in which we have worked the \ most. \ \>", "Text", Evaluatable->False, FontWeight->"Bold", FontTracking->"Plain", FontVariations->{"Outline"->False, "Shadow"->False}], Cell["\<\ 1-Building a help file containing all functions and variables, and a comment \ about their use. This help file must give referral to the example notebooks \ where these variables and functions are found in order to get further \ information. It would give the options \"Search\" and \"Glossary\". The \ first one for direct searching of a specific variable or function, or for \ searching them having only a string of characters. The second one would show \ all the variables and functions of PLEMATH. \ \>", "Text", Evaluatable->False, FontWeight->"Bold", FontTracking->"Plain", FontVariations->{"Outline"->False, "Shadow"->False}], Cell["\<\ 2-Adding to Gomory 1 Algorithm the requirements to avoid dual degenerate \ solutions after solving the continuous problem in the first iteration of \ Gomory Algorithm. If the dual degenerate solution remains without any \ transformation, algorithm finiteness could be affected. \ \>", "Text", Evaluatable->False, FontWeight->"Bold", FontTracking->"Plain", FontVariations->{"Outline"->False, "Shadow"->False}], Cell["\<\ 3-Building algorithms for problems with binary variables. \ \>", "Text", Evaluatable->False, FontWeight->"Bold", FontTracking->"Plain", FontVariations->{"Outline"->False, "Shadow"->False}], Cell["\<\ 4-Adding the Primal Cut Algorithm to the integer linear problem and Branch & \ Bound and Gomory 2 Algorithms to the mixed linear programming problem. \ \>", "Text", Evaluatable->False, FontWeight->"Bold", FontTracking->"Plain", FontVariations->{"Outline"->False, "Shadow"->False}], Cell["\<\ 5-Adding helpful algorithms for solving linear programming and integer linear \ programming problems through a direct way. \ \>", "Text", Evaluatable->False, FontWeight->"Bold", FontTracking->"Plain", FontVariations->{"Outline"->False, "Shadow"->False}], Cell["\<\ 6-Updating and improving the example notebooks as the system grows broader. \ \>", "Text", Evaluatable->False, FontWeight->"Bold", FontTracking->"Plain", FontVariations->{"Outline"->False, "Shadow"->False}] }, Open ]], Cell[CellGroupData[{ Cell["Conclusions", "Text", Evaluatable->False, FontSize->14, FontWeight->"Bold", FontColor->RGBColor[0.996109, 0, 0]], Cell["\<\ PLEMATH system has been built mainly with teaching purposes in Mathematics \ and Computer sciences. Our main goal with this report is to spread \ information about PLEMATH, and to show its simplicity and the broad \ possibilities of the system for being used in these subjects for teaching. \ \>", "Text", Evaluatable->False, FontWeight->"Bold", FontTracking->"Plain", FontVariations->{"Outline"->False, "Shadow"->False}], Cell["\<\ PLEMATH is useful for all those courses using linear programming techniques, \ specially for those where algorithm studies go deeper. Now we are trying to \ make PLEMATH a useful system for many more applications in the future. \ \>", "Text", Evaluatable->False, FontWeight->"Bold", FontTracking->"Plain", FontVariations->{"Outline"->False, "Shadow"->False}] }, Open ]], Cell[CellGroupData[{ Cell["References", "Text", Evaluatable->False, FontSize->14, FontWeight->"Bold", FontColor->RGBColor[0.996109, 0, 0]], Cell["\<\ [1] Calvert E. James, Voxman L. Willian (1989). \"Linear Programming\". Harcourt Brace Jovanovich, Inc. [2] Garfinkel S. Robert, Nemhauser L. George (1972). \"Integer Programming\". \ John Wiley \\& Sons, Inc. [3] Handy A. Taha (1997). \"Operations Research, An Introduccion, 6a. Ed\". \ Prentice-Hall, Inc. A Simon & Schuster Company. [4] Mokhtar S. Bazara, John J. Jarvis, Hanif D. Sherali (1998). \"Linear \ Programming and Network flows\". John Wiley & Sons, Inc. [5] Simonnard M (1972). \"Programaci\\'on Lineal\". [6] Wayne L. Winston (1991). \"Operations Research - Aplications and \ Algorithms, 2nd Ed. PWS - Kent Publishing Company. \ \>", "Text", Evaluatable->False, FontWeight->"Bold"] }, Open ]] }, FrontEndVersion->"4.0 for Microsoft Windows", ScreenRectangle->{{0, 1024}, {0, 695}}, WindowToolbars->{}, CellGrouping->Manual, WindowSize->{701, 590}, WindowMargins->{{146, Automatic}, {Automatic, 8}}, PrintingCopies->1, PrintingPageRange->{1, 2}, PrivateNotebookOptions->{"ColorPalette"->{RGBColor, -1}}, ShowCellLabel->True, ShowCellTags->False, RenderingOptions->{"ObjectDithering"->True, "RasterDithering"->False}, StyleDefinitions -> Notebook[{ Cell[CellGroupData[{ Cell["Style Definitions", "Subtitle"], Cell["\<\ Modify the definitions below to change the default appearance of \ all cells in a given style. Make modifications to any definition using \ commands in the Format menu.\ \>", "Text"], Cell[CellGroupData[{ Cell["Style Environment Names", "Section"], Cell[StyleData[All, "Working"], PageWidth->WindowWidth, ScriptMinSize->9], Cell[StyleData[All, "Presentation"], PageWidth->WindowWidth, ScriptMinSize->12, FontSize->16], Cell[StyleData[All, "Condensed"], PageWidth->WindowWidth, CellBracketOptions->{"Margins"->{1, 1}, "Widths"->{0, 5}}, ScriptMinSize->8, FontSize->11], Cell[StyleData[All, "Printout"], PageWidth->PaperWidth, ScriptMinSize->5, FontSize->10, PrivateFontOptions->{"FontType"->"Outline"}] }, Closed]], Cell[CellGroupData[{ Cell["Notebook Options", "Section"], Cell["\<\ The options defined for the style below will be used at the \ Notebook level.\ \>", "Text"], Cell[StyleData["Notebook"], PageHeaders->{{Cell[ TextData[ { CounterBox[ "Page"]}], "PageNumber"], None, Cell[ TextData[ { ValueBox[ "FileName"]}], "Header"]}, {Cell[ TextData[ { ValueBox[ "FileName"]}], "Header"], None, Cell[ TextData[ { CounterBox[ "Page"]}], "PageNumber"]}}, CellFrameLabelMargins->6, StyleMenuListing->None] }, Closed]], Cell[CellGroupData[{ Cell["Styles for Headings", "Section"], Cell[CellGroupData[{ Cell[StyleData["Title"], CellMargins->{{12, Inherited}, {20, 40}}, CellGroupingRules->{"TitleGrouping", 0}, CellHorizontalScrolling->False, PageBreakBelow->False, TextAlignment->Center, LineSpacing->{1, 0}, CounterIncrements->"Title", CounterAssignments->{{"Section", 0}, {"Equation", 0}, {"Figure", 0}, { "Subtitle", 0}, {"Subsubtitle", 0}}, FontFamily->"Arial", FontSize->24, FontWeight->"Bold"], Cell[StyleData["Title", "Presentation"], CellMargins->{{24, 10}, {20, 40}}, LineSpacing->{1, 0}, FontSize->44], Cell[StyleData["Title", "Condensed"], CellMargins->{{8, 10}, {4, 8}}, FontSize->20], Cell[StyleData["Title", "Printout"], CellMargins->{{2, 10}, {15, 30}}, FontSize->24] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["Subtitle"], CellMargins->{{12, Inherited}, {10, 15}}, CellGroupingRules->{"TitleGrouping", 10}, CellHorizontalScrolling->False, PageBreakBelow->False, TextAlignment->Center, LineSpacing->{1, 0}, CounterIncrements->"Subtitle", CounterAssignments->{{"Section", 0}, {"Equation", 0}, {"Figure", 0}, { "Subsubtitle", 0}}, FontFamily->"Arial", FontSize->18, FontWeight->"Bold"], Cell[StyleData["Subtitle", "Presentation"], CellMargins->{{24, 10}, {15, 20}}, LineSpacing->{1, 0}, FontSize->36], Cell[StyleData["Subtitle", "Condensed"], CellMargins->{{8, 10}, {4, 4}}, FontSize->14], Cell[StyleData["Subtitle", "Printout"], CellMargins->{{2, 10}, {10, 15}}, FontSize->18] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["Subsubtitle"], CellMargins->{{12, Inherited}, {10, 20}}, CellGroupingRules->{"TitleGrouping", 20}, CellHorizontalScrolling->False, PageBreakBelow->False, TextAlignment->Center, LineSpacing->{1, 0}, CounterIncrements->"Subsubtitle", CounterAssignments->{{"Section", 0}, {"Equation", 0}, {"Figure", 0}}, FontFamily->"Arial", FontSize->14, FontWeight->"Bold", FontSlant->"Italic"], Cell[StyleData["Subsubtitle", "Presentation"], CellMargins->{{24, 10}, {10, 20}}, LineSpacing->{1, 0}, FontSize->24], Cell[StyleData["Subsubtitle", "Condensed"], CellMargins->{{8, 10}, {8, 12}}, FontSize->12], Cell[StyleData["Subsubtitle", "Printout"], CellMargins->{{2, 10}, {8, 10}}, FontSize->14] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["Section"], CellDingbat->"\[GraySquare]", CellMargins->{{25, Inherited}, {8, 24}}, CellGroupingRules->{"SectionGrouping", 30}, PageBreakBelow->False, LineSpacing->{1, 0}, CounterIncrements->"Section", CounterAssignments->{{"Subsection", 0}, {"Subsubsection", 0}}, FontFamily->"Arial", FontSize->14, FontWeight->"Bold"], Cell[StyleData["Section", "Presentation"], CellMargins->{{40, 10}, {11, 32}}, LineSpacing->{1, 0}, FontSize->24], Cell[StyleData["Section", "Condensed"], CellMargins->{{18, Inherited}, {6, 12}}, FontSize->12], Cell[StyleData["Section", "Printout"], CellMargins->{{13, 0}, {7, 22}}, FontSize->14] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["Subsection"], CellDingbat->"\[FilledSquare]", CellMargins->{{22, Inherited}, {8, 20}}, CellGroupingRules->{"SectionGrouping", 40}, PageBreakBelow->False, LineSpacing->{1, 0}, CounterIncrements->"Subsection", CounterAssignments->{{"Subsubsection", 0}}, FontFamily->"Arial", FontSize->12, FontWeight->"Bold"], Cell[StyleData["Subsection", "Presentation"], CellMargins->{{36, 10}, {11, 32}}, LineSpacing->{1, 0}, FontSize->22], Cell[StyleData["Subsection", "Condensed"], CellMargins->{{16, Inherited}, {6, 12}}, FontSize->12], Cell[StyleData["Subsection", "Printout"], CellMargins->{{9, 0}, {7, 22}}, FontSize->12] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["Subsubsection"], CellDingbat->"\[EmptySquare]", CellMargins->{{22, Inherited}, {8, 18}}, CellGroupingRules->{"SectionGrouping", 50}, PageBreakBelow->False, LineSpacing->{1, 0}, CounterIncrements->"Subsubsection", FontFamily->"Arial", FontSize->10, FontWeight->"Bold"], Cell[StyleData["Subsubsection", "Presentation"], CellMargins->{{34, 10}, {11, 26}}, LineSpacing->{1, 0}, FontSize->18], Cell[StyleData["Subsubsection", "Condensed"], CellMargins->{{17, Inherited}, {6, 12}}, FontSize->10], Cell[StyleData["Subsubsection", "Printout"], CellMargins->{{9, 0}, {7, 14}}, FontSize->11] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell["Styles for Body Text", "Section"], Cell[CellGroupData[{ Cell[StyleData["Text"], CellMargins->{{12, 10}, {7, 7}}, LineSpacing->{1, 0}, CounterIncrements->"Text", FontFamily->"Arial", FontSize->12], Cell[StyleData["Text", "Presentation"], CellMargins->{{24, 10}, {10, 10}}, LineSpacing->{1, 5}], Cell[StyleData["Text", "Condensed"], CellMargins->{{8, 10}, {6, 6}}, LineSpacing->{1, 1}], Cell[StyleData["Text", "Printout"], CellMargins->{{2, 2}, {6, 6}}] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["SmallText"], CellMargins->{{12, 10}, {6, 6}}, LineSpacing->{1, 0}, CounterIncrements->"SmallText", FontFamily->"Arial", FontSize->10], Cell[StyleData["SmallText", "Presentation"], CellMargins->{{24, 10}, {8, 8}}, LineSpacing->{1, 5}, FontSize->12], Cell[StyleData["SmallText", "Condensed"], CellMargins->{{8, 10}, {5, 5}}, LineSpacing->{1, 2}, FontSize->9], Cell[StyleData["SmallText", "Printout"], CellMargins->{{2, 2}, {5, 5}}, FontSize->7] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell["Styles for Input/Output", "Section"], Cell["\<\ The cells in this section define styles used for input and output \ to the kernel. Be careful when modifying, renaming, or removing these \ styles, because the front end associates special meanings with these style \ names.\ \>", "Text"], Cell[CellGroupData[{ Cell[StyleData["Input"], PageWidth->Infinity, CellMargins->{{45, 10}, {5, 7}}, Evaluatable->True, CellGroupingRules->"InputGrouping", CellHorizontalScrolling->True, PageBreakWithin->False, GroupPageBreakWithin->False, CellLabelMargins->{{11, Inherited}, {Inherited, Inherited}}, DefaultFormatType->DefaultInputFormatType, LineSpacing->{1, 0}, AutoItalicWords->{}, FormatType->InputForm, ShowStringCharacters->True, NumberMarks->True, CounterIncrements->"Input", FontFamily->"Courier New", FontSize->12, FontWeight->"Bold"], Cell[StyleData["Input", "Presentation"], CellMargins->{{72, Inherited}, {8, 10}}, LineSpacing->{1, 0}], Cell[StyleData["Input", "Condensed"], CellMargins->{{40, 10}, {2, 3}}], Cell[StyleData["Input", "Printout"], CellMargins->{{39, 0}, {4, 6}}, FontSize->9] }, Closed]], Cell[StyleData["InputOnly"], Evaluatable->True, CellGroupingRules->"InputGrouping", CellHorizontalScrolling->True, DefaultFormatType->DefaultInputFormatType, AutoItalicWords->{}, FormatType->InputForm, ShowStringCharacters->True, NumberMarks->True, CounterIncrements->"Input", StyleMenuListing->None, FontWeight->"Bold"], Cell[CellGroupData[{ Cell[StyleData["Output"], PageWidth->Infinity, CellMargins->{{47, 10}, {7, 5}}, CellEditDuplicate->True, CellGroupingRules->"OutputGrouping", CellHorizontalScrolling->True, PageBreakWithin->False, GroupPageBreakWithin->False, GeneratedCell->True, CellAutoOverwrite->True, CellLabelMargins->{{11, Inherited}, {Inherited, Inherited}}, DefaultFormatType->DefaultOutputFormatType, LineSpacing->{1, 0}, AutoItalicWords->{}, FormatType->InputForm, CounterIncrements->"Output", FontFamily->"Courier New", FontSize->12], Cell[StyleData["Output", "Presentation"], CellMargins->{{72, Inherited}, {10, 8}}, LineSpacing->{1, 0}], Cell[StyleData["Output", "Condensed"], CellMargins->{{41, Inherited}, {3, 2}}], Cell[StyleData["Output", "Printout"], CellMargins->{{39, 0}, {6, 4}}, FontSize->9] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["Message"], PageWidth->Infinity, CellMargins->{{45, Inherited}, {Inherited, Inherited}}, CellGroupingRules->"OutputGrouping", PageBreakWithin->False, GroupPageBreakWithin->False, GeneratedCell->True, CellAutoOverwrite->True, ShowCellLabel->False, CellLabelMargins->{{11, Inherited}, {Inherited, Inherited}}, DefaultFormatType->DefaultOutputFormatType, LineSpacing->{1, 0}, AutoItalicWords->{}, FormatType->InputForm, CounterIncrements->"Message", StyleMenuListing->None, FontFamily->"Courier New", FontSize->10, FontColor->RGBColor[1, 0, 0]], Cell[StyleData["Message", "Presentation"], CellMargins->{{72, Inherited}, {Inherited, Inherited}}, LineSpacing->{1, 0}], Cell[StyleData["Message", "Condensed"], CellMargins->{{41, Inherited}, {Inherited, Inherited}}], Cell[StyleData["Message", "Printout"], CellMargins->{{39, Inherited}, {Inherited, Inherited}}, FontSize->8, FontColor->GrayLevel[0]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["Print"], PageWidth->Infinity, CellMargins->{{45, Inherited}, {Inherited, Inherited}}, CellGroupingRules->"OutputGrouping", CellHorizontalScrolling->True, PageBreakWithin->False, GroupPageBreakWithin->False, GeneratedCell->True, CellAutoOverwrite->True, ShowCellLabel->False, CellLabelMargins->{{11, Inherited}, {Inherited, Inherited}}, DefaultFormatType->DefaultOutputFormatType, LineSpacing->{1, 0}, AutoItalicWords->{}, FormatType->InputForm, CounterIncrements->"Print", StyleMenuListing->None, FontFamily->"Courier New", FontSize->10], Cell[StyleData["Print", "Presentation"], CellMargins->{{72, Inherited}, {Inherited, Inherited}}, LineSpacing->{1, 0}], Cell[StyleData["Print", "Condensed"], CellMargins->{{41, Inherited}, {Inherited, Inherited}}], Cell[StyleData["Print", "Printout"], CellMargins->{{39, Inherited}, {Inherited, Inherited}}, FontSize->8] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["Graphics"], PageWidth->Infinity, CellMargins->{{4, Inherited}, {Inherited, Inherited}}, CellGroupingRules->"GraphicsGrouping", CellHorizontalScrolling->False, PageBreakWithin->False, GeneratedCell->True, CellAutoOverwrite->True, ShowCellLabel->False, DefaultFormatType->DefaultOutputFormatType, LineSpacing->{1, 0}, FormatType->InputForm, CounterIncrements->"Graphics", ImageMargins->{{43, Inherited}, {Inherited, 0}}, StyleMenuListing->None, FontFamily->"Courier New", FontSize->10], Cell[StyleData["Graphics", "Presentation"], ImageMargins->{{62, Inherited}, {Inherited, 0}}], Cell[StyleData["Graphics", "Condensed"], ImageSize->{175, 175}, ImageMargins->{{38, Inherited}, {Inherited, 0}}], Cell[StyleData["Graphics", "Printout"], ImageSize->{250, 250}, ImageMargins->{{30, Inherited}, {Inherited, 0}}, FontSize->9] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["CellLabel"], StyleMenuListing->None, FontFamily->"Helvetica", FontSize->9, FontColor->RGBColor[0, 0, 1]], Cell[StyleData["CellLabel", "Presentation"], FontSize->12], Cell[StyleData["CellLabel", "Condensed"], FontSize->9], Cell[StyleData["CellLabel", "Printout"], FontFamily->"Courier", FontSize->8, FontSlant->"Italic", FontColor->GrayLevel[0]] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell["Formulas and Programming", "Section"], Cell[CellGroupData[{ Cell[StyleData["InlineFormula"], CellMargins->{{10, 4}, {0, 8}}, CellHorizontalScrolling->True, ScriptLevel->1, SingleLetterItalics->True], Cell[StyleData["InlineFormula", "Presentation"], CellMargins->{{24, 10}, {10, 10}}, LineSpacing->{1, 5}], Cell[StyleData["InlineFormula", "Condensed"], CellMargins->{{8, 10}, {6, 6}}, LineSpacing->{1, 1}], Cell[StyleData["InlineFormula", "Printout"], CellMargins->{{2, 0}, {6, 6}}] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["DisplayFormula"], CellMargins->{{42, Inherited}, {Inherited, Inherited}}, CellHorizontalScrolling->True, ScriptLevel->0, SingleLetterItalics->True, StyleMenuListing->None, UnderoverscriptBoxOptions->{LimitsPositioning->True}], Cell[StyleData["DisplayFormula", "Presentation"], LineSpacing->{1, 5}], Cell[StyleData["DisplayFormula", "Condensed"], LineSpacing->{1, 1}], Cell[StyleData["DisplayFormula", "Printout"]] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell["Styles for Headers and Footers", "Section"], Cell[StyleData["Header"], CellMargins->{{0, 0}, {4, 1}}, CellHorizontalScrolling->False, TextAlignment->Right, LineSpacing->{1, 0}, StyleMenuListing->None, FontFamily->"Times New Roman", FontSize->10, FontSlant->"Italic"], Cell[StyleData["Footer"], CellMargins->{{0, 0}, {0, 4}}, CellHorizontalScrolling->False, TextAlignment->Right, LineSpacing->{1, 0}, StyleMenuListing->None, FontFamily->"Times New Roman", FontSize->10, FontSlant->"Italic"], Cell[StyleData["PageNumber"], CellMargins->{{0, 0}, {4, 1}}, StyleMenuListing->None, FontFamily->"Times", FontSize->10] }, Closed]], Cell[CellGroupData[{ Cell["Palette Styles", "Section"], Cell["\<\ The cells below define styles that define standard \ ButtonFunctions, for use in palette buttons.\ \>", "Text"], Cell[StyleData["Paste"], StyleMenuListing->None, ButtonStyleMenuListing->Automatic, ButtonBoxOptions->{ButtonFunction:>(FrontEndExecute[ { FrontEnd`NotebookApply[ FrontEnd`InputNotebook[ ], #, After]}]&)}], Cell[StyleData["Evaluate"], StyleMenuListing->None, ButtonStyleMenuListing->Automatic, ButtonBoxOptions->{ButtonFunction:>(FrontEndExecute[ { FrontEnd`NotebookApply[ FrontEnd`InputNotebook[ ], #, All], SelectionEvaluate[ FrontEnd`InputNotebook[ ], All]}]&)}], Cell[StyleData["EvaluateCell"], StyleMenuListing->None, ButtonStyleMenuListing->Automatic, ButtonBoxOptions->{ButtonFunction:>(FrontEndExecute[ { FrontEnd`NotebookApply[ FrontEnd`InputNotebook[ ], #, All], FrontEnd`SelectionMove[ FrontEnd`InputNotebook[ ], All, Cell, 1], FrontEnd`SelectionEvaluateCreateCell[ FrontEnd`InputNotebook[ ], All]}]&)}], Cell[StyleData["CopyEvaluate"], StyleMenuListing->None, ButtonStyleMenuListing->Automatic, ButtonBoxOptions->{ButtonFunction:>(FrontEndExecute[ { FrontEnd`SelectionCreateCell[ FrontEnd`InputNotebook[ ], All], FrontEnd`NotebookApply[ FrontEnd`InputNotebook[ ], #, All], FrontEnd`SelectionEvaluate[ FrontEnd`InputNotebook[ ], All]}]&)}], Cell[StyleData["CopyEvaluateCell"], StyleMenuListing->None, ButtonStyleMenuListing->Automatic, ButtonBoxOptions->{ButtonFunction:>(FrontEndExecute[ { FrontEnd`SelectionCreateCell[ FrontEnd`InputNotebook[ ], All], FrontEnd`NotebookApply[ FrontEnd`InputNotebook[ ], #, All], FrontEnd`SelectionEvaluateCreateCell[ FrontEnd`InputNotebook[ ], All]}]&)}] }, Closed]], Cell[CellGroupData[{ Cell["Hyperlink Styles", "Section"], Cell["\<\ The cells below define styles useful for making hypertext \ ButtonBoxes. The \"Hyperlink\" style is for links within the same Notebook, \ or between Notebooks.\ \>", "Text"], Cell[CellGroupData[{ Cell[StyleData["Hyperlink"], StyleMenuListing->None, ButtonStyleMenuListing->Automatic, FontColor->RGBColor[0, 0, 1], FontVariations->{"Underline"->True}, ButtonBoxOptions->{ButtonFunction:>(FrontEndExecute[ { FrontEnd`NotebookLocate[ #2]}]&), Active->True, ButtonNote->ButtonData}], Cell[StyleData["Hyperlink", "Presentation"]], Cell[StyleData["Hyperlink", "Condensed"]], Cell[StyleData["Hyperlink", "Printout"], FontColor->GrayLevel[0], FontVariations->{"Underline"->False}] }, Closed]], Cell["\<\ The following styles are for linking automatically to the on-line \ help system.\ \>", "Text"], Cell[CellGroupData[{ Cell[StyleData["MainBookLink"], StyleMenuListing->None, ButtonStyleMenuListing->Automatic, FontColor->RGBColor[0, 0, 1], FontVariations->{"Underline"->True}, ButtonBoxOptions->{ButtonFunction:>(FrontEndExecute[ { FrontEnd`HelpBrowserLookup[ "MainBook", #]}]&), Active->True, ButtonFrame->"None"}], Cell[StyleData["MainBookLink", "Presentation"]], Cell[StyleData["MainBookLink", "Condensed"]], Cell[StyleData["MainBookLink", "Printout"], FontColor->GrayLevel[0], FontVariations->{"Underline"->False}] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["AddOnsLink"], StyleMenuListing->None, ButtonStyleMenuListing->Automatic, FontFamily->"Courier", FontColor->RGBColor[0, 0, 1], FontVariations->{"Underline"->True}, ButtonBoxOptions->{ButtonFunction:>(FrontEndExecute[ { FrontEnd`HelpBrowserLookup[ "AddOns", #]}]&), Active->True, ButtonFrame->"None"}], Cell[StyleData["AddOnsLink", "Presentation"]], Cell[StyleData["AddOnsLink", "Condensed"]], Cell[StyleData["AddOnLink", "Printout"], FontColor->GrayLevel[0], FontVariations->{"Underline"->False}] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefGuideLink"], StyleMenuListing->None, ButtonStyleMenuListing->Automatic, FontFamily->"Courier", FontColor->RGBColor[0, 0, 1], FontVariations->{"Underline"->True}, ButtonBoxOptions->{ButtonFunction:>(FrontEndExecute[ { FrontEnd`HelpBrowserLookup[ "RefGuideLink", #]}]&), Active->True, ButtonFrame->"None"}], Cell[StyleData["RefGuideLink", "Presentation"]], Cell[StyleData["RefGuideLink", "Condensed"]], Cell[StyleData["RefGuideLink", "Printout"], FontColor->GrayLevel[0], FontVariations->{"Underline"->False}] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["GettingStartedLink"], StyleMenuListing->None, ButtonStyleMenuListing->Automatic, FontColor->RGBColor[0, 0, 1], FontVariations->{"Underline"->True}, ButtonBoxOptions->{ButtonFunction:>(FrontEndExecute[ { FrontEnd`HelpBrowserLookup[ "GettingStarted", #]}]&), Active->True, ButtonFrame->"None"}], Cell[StyleData["GettingStartedLink", "Presentation"]], Cell[StyleData["GettingStartedLink", "Condensed"]], Cell[StyleData["GettingStartedLink", "Printout"], FontColor->GrayLevel[0], FontVariations->{"Underline"->False}] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["OtherInformationLink"], StyleMenuListing->None, ButtonStyleMenuListing->Automatic, FontColor->RGBColor[0, 0, 1], FontVariations->{"Underline"->True}, ButtonBoxOptions->{ButtonFunction:>(FrontEndExecute[ { FrontEnd`HelpBrowserLookup[ "OtherInformation", #]}]&), Active->True, ButtonFrame->"None"}], Cell[StyleData["OtherInformationLink", "Presentation"]], Cell[StyleData["OtherInformationLink", "Condensed"]], Cell[StyleData["OtherInformationLink", "Printout"], FontColor->GrayLevel[0], FontVariations->{"Underline"->False}] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell["Placeholder Styles", "Section"], Cell["\<\ The cells below define styles useful for making placeholder \ objects in palette templates.\ \>", "Text"], Cell[CellGroupData[{ Cell[StyleData["Placeholder"], Editable->False, Selectable->False, StyleBoxAutoDelete->True, Placeholder->True, StyleMenuListing->None], Cell[StyleData["Placeholder", "Presentation"]], Cell[StyleData["Placeholder", "Condensed"]], Cell[StyleData["Placeholder", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["SelectionPlaceholder"], Editable->False, Selectable->False, StyleBoxAutoDelete->True, Placeholder->PrimaryPlaceholder, StyleMenuListing->None, DrawHighlighted->True], Cell[StyleData["SelectionPlaceholder", "Presentation"]], Cell[StyleData["SelectionPlaceholder", "Condensed"]], Cell[StyleData["SelectionPlaceholder", "Printout"]] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell["FormatType Styles", "Section"], Cell["\<\ The cells below define styles that are mixed in with the styles \ of most cells. If a cell's FormatType matches the name of one of the styles \ defined below, then that style is applied between the cell's style and its \ own options.\ \>", "Text"], Cell[StyleData["CellExpression"], PageWidth->Infinity, CellMargins->{{6, Inherited}, {Inherited, Inherited}}, ShowCellLabel->False, ShowSpecialCharacters->False, AllowInlineCells->False, AutoItalicWords->{}, StyleMenuListing->None, FontFamily->"Courier", Background->GrayLevel[1]], Cell[StyleData["InputForm"], AllowInlineCells->False, StyleMenuListing->None, FontFamily->"Courier"], Cell[StyleData["OutputForm"], PageWidth->Infinity, TextAlignment->Left, LineSpacing->{1, -5}, StyleMenuListing->None, FontFamily->"Courier"], Cell[StyleData["StandardForm"], LineSpacing->{1.25, 0}, StyleMenuListing->None, FontFamily->"Courier"], Cell[StyleData["TraditionalForm"], LineSpacing->{1.25, 0}, SingleLetterItalics->True, TraditionalFunctionNotation->True, DelimiterMatching->None, StyleMenuListing->None], Cell["\<\ The style defined below is mixed in to any cell that is in an \ inline cell within another.\ \>", "Text"], Cell[StyleData["InlineCell"], TextAlignment->Left, ScriptLevel->1, StyleMenuListing->None], Cell[StyleData["InlineCellEditing"], StyleMenuListing->None, Background->RGBColor[1, 0.749996, 0.8]] }, Closed]] }, Open ]] }] ] (*********************************************************************** Cached data follows. If you edit this Notebook file directly, not using Mathematica, you must remove the line containing CacheID at the top of the file. The cache data will then be recreated when you save this file from within Mathematica. ***********************************************************************) (*CellTagsOutline CellTagsIndex->{} *) (*CellTagsIndex CellTagsIndex->{} *) (*NotebookFileOutline Notebook[{ Cell[CellGroupData[{ Cell[1739, 51, 160, 5, 93, "Title", Evaluatable->False], Cell[1902, 58, 226, 7, 46, "Subtitle", Evaluatable->False], Cell[2131, 67, 810, 20, 240, "Subsubtitle", Evaluatable->False] }, Open ]], Cell[CellGroupData[{ Cell[2978, 92, 173, 5, 48, "Subsubtitle", Evaluatable->False], Cell[3154, 99, 1792, 39, 542, "Text"] }, Open ]], Cell[CellGroupData[{ Cell[4983, 143, 128, 4, 30, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[5136, 151, 198, 7, 46, "Text"], Cell[5337, 160, 1198, 36, 464, "Text", Evaluatable->False] }, Open ]], Cell[CellGroupData[{ Cell[6572, 201, 66, 1, 28, "Input"], Cell[6641, 204, 62, 1, 29, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[6740, 210, 87, 1, 28, "Input"], Cell[6830, 213, 101, 2, 29, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[6968, 220, 75, 1, 28, "Input"], Cell[7046, 223, 89, 1, 29, "Output"] }, Open ]], Cell[7150, 227, 507, 13, 89, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[7682, 244, 54, 1, 28, "Input"], Cell[7739, 247, 42, 1, 29, "Output"] }, Open ]], Cell[7796, 251, 506, 19, 179, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[8327, 274, 66, 1, 28, "Input"], Cell[8396, 277, 50, 1, 22, "Print"], Cell[8449, 280, 46, 1, 22, "Print"], Cell[8498, 283, 89, 1, 22, "Print"], Cell[8590, 286, 67, 1, 23, "Print"], Cell[8660, 289, 68, 1, 23, "Print"], Cell[8731, 292, 82, 1, 23, "Print"], Cell[8816, 295, 86, 1, 23, "Print"], Cell[8905, 298, 74, 1, 23, "Print"], Cell[8982, 301, 35, 1, 23, "Print"], Cell[9020, 304, 63, 1, 23, "Print"], Cell[9086, 307, 86, 1, 23, "Print"], Cell[9175, 310, 84, 1, 23, "Print"], Cell[9262, 313, 66, 1, 23, "Print"], Cell[9331, 316, 35, 1, 23, "Print"], Cell[9369, 319, 58, 1, 23, "Print"], Cell[9430, 322, 81, 1, 23, "Print"], Cell[9514, 325, 84, 1, 23, "Print"] }, Open ]], Cell[CellGroupData[{ Cell[9635, 331, 72, 1, 25, "Input"], Cell[9710, 334, 365, 10, 74, "Text", Evaluatable->False] }, Open ]], Cell[CellGroupData[{ Cell[10112, 349, 51, 1, 22, "Input"], Cell[10166, 352, 464, 11, 102, "Output"], Cell[10633, 365, 294, 9, 59, "Text", Evaluatable->False], Cell[10930, 376, 273, 9, 59, "Text", Evaluatable->False] }, Open ]], Cell[CellGroupData[{ Cell[11240, 390, 57, 1, 22, "Input"], Cell[11300, 393, 47, 1, 27, "Output"], Cell[11350, 396, 513, 12, 89, "Text", Evaluatable->False] }, Open ]], Cell[CellGroupData[{ Cell[11900, 413, 69, 1, 22, "Input"], Cell[11972, 416, 45, 1, 44, "Output"], Cell[12020, 419, 879, 17, 149, "Text", Evaluatable->False] }, Open ]], Cell[CellGroupData[{ Cell[12936, 441, 55, 1, 22, "Input"], Cell[12994, 444, 185, 3, 44, "Output"], Cell[13182, 449, 517, 11, 74, "Text", Evaluatable->False] }, Open ]], Cell[CellGroupData[{ Cell[13736, 465, 60, 4, 35, "Input"], Cell[13799, 471, 698, 19, 162, "Output"] }, Open ]], Cell[14512, 493, 235, 10, 46, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[14772, 507, 57, 1, 25, "Input"], Cell[14832, 510, 54, 1, 44, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[14923, 516, 69, 1, 25, "Input"], Cell[14995, 519, 45, 1, 44, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[15077, 525, 55, 1, 25, "Input"], Cell[15135, 528, 169, 3, 44, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[15341, 536, 52, 1, 25, "Input"], Cell[15396, 539, 664, 17, 147, "Output"] }, Open ]], Cell[16075, 559, 324, 9, 44, "Text", Evaluatable->False], Cell[16402, 570, 406, 11, 59, "Text", Evaluatable->False], Cell[16811, 583, 49, 1, 25, "Input"], Cell[16863, 586, 246, 9, 44, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[17134, 599, 46, 1, 25, "Input"], Cell[17183, 602, 55, 1, 27, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[17275, 608, 51, 1, 25, "Input"], Cell[17329, 611, 607, 16, 131, "Output"] }, Open ]], Cell[17951, 630, 375, 10, 74, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[18351, 644, 53, 1, 25, "Input"], Cell[18407, 647, 263, 9, 59, "Text", Evaluatable->False] }, Open ]], Cell[CellGroupData[{ Cell[18707, 661, 47, 1, 25, "Input"], Cell[18757, 664, 43, 1, 27, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[18837, 670, 51, 1, 25, "Input"], Cell[18891, 673, 426, 10, 131, "Output"] }, Open ]] }, Open ]], Cell[19344, 687, 175, 6, 41, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[19544, 697, 137, 7, 46, "Text", Evaluatable->False], Cell[19684, 706, 433, 10, 59, "Text", Evaluatable->False], Cell[20120, 718, 56, 4, 38, "Input"], Cell[CellGroupData[{ Cell[20201, 726, 133, 4, 28, "Input"], Cell[20337, 732, 62, 1, 27, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[20436, 738, 154, 4, 25, "Input"], Cell[20593, 744, 101, 2, 27, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[20731, 751, 142, 4, 25, "Input"], Cell[20876, 757, 89, 1, 27, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[21002, 763, 121, 4, 25, "Input"], Cell[21126, 769, 42, 1, 27, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[21205, 775, 72, 1, 22, "Input"], Cell[21280, 778, 294, 8, 44, "Text", Evaluatable->False] }, Open ]], Cell[CellGroupData[{ Cell[21611, 791, 55, 1, 22, "Input"], Cell[21669, 794, 169, 3, 44, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[21875, 802, 51, 1, 22, "Input"], Cell[21929, 805, 664, 17, 147, "Output"] }, Open ]], Cell[22608, 825, 254, 8, 26, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[22887, 837, 47, 1, 25, "Input"], Cell[22937, 840, 38, 1, 27, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[23012, 846, 47, 1, 25, "Input"], Cell[23062, 849, 35, 1, 27, "Output"] }, Open ]], Cell[23112, 853, 267, 9, 59, "Text", Evaluatable->False], Cell[23382, 864, 448, 11, 74, "Text", Evaluatable->False], Cell[23833, 877, 49, 1, 25, "Input"], Cell[23885, 880, 53, 1, 25, "Input"], Cell[CellGroupData[{ Cell[23963, 885, 51, 1, 25, "Input"], Cell[24017, 888, 426, 10, 131, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[24480, 903, 55, 1, 22, "Input"], Cell[24538, 906, 147, 2, 44, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[24722, 913, 51, 1, 22, "Input"], Cell[24776, 916, 387, 8, 131, "Output"] }, Open ]], Cell[25178, 927, 520, 13, 101, "Text", Evaluatable->False], Cell[25701, 942, 506, 14, 104, "Text", Evaluatable->False], Cell[26210, 958, 47, 1, 25, "Input"], Cell[CellGroupData[{ Cell[26282, 963, 127, 4, 28, "Input"], Cell[26412, 969, 54, 1, 27, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[26503, 975, 148, 4, 25, "Input"], Cell[26654, 981, 88, 1, 27, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[26779, 987, 123, 4, 25, "Input"], Cell[26905, 993, 53, 1, 27, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[26995, 999, 51, 1, 22, "Input"], Cell[27049, 1002, 147, 2, 44, "Output"] }, Open ]], Cell[27211, 1007, 475, 12, 86, "Text", Evaluatable->False] }, Open ]], Cell[27701, 1022, 251, 7, 56, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[27977, 1033, 128, 4, 30, "Text", Evaluatable->False], Cell[28108, 1039, 224, 8, 44, "Text", Evaluatable->False], Cell[28335, 1049, 47, 1, 25, "Input"], Cell[CellGroupData[{ Cell[28407, 1054, 60, 1, 25, "Input"], Cell[28470, 1057, 54, 1, 27, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[28561, 1063, 56, 1, 25, "Input"], Cell[28620, 1066, 53, 1, 27, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[28710, 1072, 81, 1, 25, "Input"], Cell[28794, 1075, 88, 1, 27, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[28919, 1081, 51, 1, 25, "Input"], Cell[28973, 1084, 147, 2, 44, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[29157, 1091, 51, 1, 25, "Input"], Cell[29211, 1094, 387, 8, 131, "Output"] }, Open ]], Cell[29613, 1105, 283, 10, 44, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[29921, 1119, 50, 1, 25, "Input"], Cell[29974, 1122, 223, 7, 29, "Text", Evaluatable->False] }, Open ]], Cell[CellGroupData[{ Cell[30234, 1134, 78, 1, 22, "Input"], Cell[30315, 1137, 294, 9, 59, "Text", Evaluatable->False] }, Open ]], Cell[CellGroupData[{ Cell[30646, 1151, 51, 1, 22, "Input"], Cell[30700, 1154, 499, 11, 162, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[31236, 1170, 53, 1, 22, "Input"], Cell[31292, 1173, 166, 2, 44, "Output"], Cell[31461, 1177, 296, 9, 59, "Text", Evaluatable->False] }, Open ]], Cell[CellGroupData[{ Cell[31794, 1191, 51, 1, 22, "Input"], Cell[31848, 1194, 439, 9, 162, "Output"] }, Open ]], Cell[32302, 1206, 306, 9, 59, "Text", Evaluatable->False], Cell[32611, 1217, 50, 1, 25, "Input"], Cell[32664, 1220, 73, 1, 25, "Input"], Cell[CellGroupData[{ Cell[32762, 1225, 51, 1, 25, "Input"], Cell[32816, 1228, 513, 10, 193, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[33366, 1243, 53, 1, 25, "Input"], Cell[33422, 1246, 169, 3, 27, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[33628, 1254, 51, 1, 25, "Input"], Cell[33682, 1257, 417, 10, 118, "Output"] }, Open ]], Cell[34114, 1270, 308, 10, 59, "Text", Evaluatable->False], Cell[34425, 1282, 349, 9, 59, "Text", Evaluatable->False], Cell[34777, 1293, 114, 4, 28, "Input"], Cell[CellGroupData[{ Cell[34916, 1301, 127, 4, 28, "Input"], Cell[35046, 1307, 54, 1, 27, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[35137, 1313, 123, 4, 28, "Input"], Cell[35263, 1319, 53, 1, 27, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[35353, 1325, 148, 4, 28, "Input"], Cell[35504, 1331, 88, 1, 27, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[35629, 1337, 50, 1, 25, "Input"], Cell[35682, 1340, 178, 3, 27, "Output"] }, Open ]], Cell[35875, 1346, 302, 8, 44, "Text", Evaluatable->False] }, Open ]], Cell[CellGroupData[{ Cell[36214, 1359, 182, 7, 43, "Text", Evaluatable->False], Cell[36399, 1368, 173, 6, 30, "Text", Evaluatable->False] }, Open ]], Cell[CellGroupData[{ Cell[36609, 1379, 292, 7, 41, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[36926, 1390, 51, 1, 25, "Input"], Cell[36980, 1393, 42, 1, 27, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[37059, 1399, 82, 1, 25, "Input"], Cell[37144, 1402, 125, 2, 44, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[37306, 1409, 67, 1, 25, "Input"], Cell[37376, 1412, 103, 2, 27, "Output"], Cell[37482, 1416, 306, 10, 59, "Text", Evaluatable->False] }, Open ]], Cell[CellGroupData[{ Cell[37825, 1431, 73, 1, 22, "Input"], Cell[37901, 1434, 97, 2, 27, "Output"], Cell[38001, 1438, 595, 14, 119, "Text", Evaluatable->False] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[38645, 1458, 125, 4, 27, "Text", Evaluatable->False], Cell[38773, 1464, 279, 8, 44, "Text", Evaluatable->False], Cell[39055, 1474, 211, 7, 29, "Text", Evaluatable->False], Cell[39269, 1483, 671, 31, 389, "Text", Evaluatable->False] }, Open ]], Cell[CellGroupData[{ Cell[39977, 1519, 126, 3, 26, "Text", Evaluatable->False], Cell[40106, 1524, 235, 9, 44, "Text", Evaluatable->False], Cell[40344, 1535, 357, 15, 149, "Text", Evaluatable->False], Cell[40704, 1552, 316, 15, 149, "Text", Evaluatable->False] }, Open ]], Cell[CellGroupData[{ Cell[41057, 1572, 121, 3, 26, "Text", Evaluatable->False], Cell[41181, 1577, 309, 10, 59, "Text", Evaluatable->False], Cell[41493, 1589, 655, 14, 104, "Text", Evaluatable->False], Cell[42151, 1605, 428, 11, 74, "Text", Evaluatable->False], Cell[42582, 1618, 208, 8, 44, "Text", Evaluatable->False], Cell[42793, 1628, 300, 9, 59, "Text", Evaluatable->False], Cell[43096, 1639, 273, 9, 59, "Text", Evaluatable->False], Cell[43372, 1650, 226, 8, 44, "Text", Evaluatable->False] }, Open ]], Cell[CellGroupData[{ Cell[43635, 1663, 126, 4, 30, "Text", Evaluatable->False], Cell[43764, 1669, 441, 11, 74, "Text", Evaluatable->False], Cell[44208, 1682, 379, 10, 74, "Text", Evaluatable->False] }, Open ]], Cell[CellGroupData[{ Cell[44624, 1697, 125, 4, 30, "Text", Evaluatable->False], Cell[44752, 1703, 754, 25, 314, "Text", Evaluatable->False] }, Open ]] } ] *) (*********************************************************************** End of Mathematica Notebook file. ***********************************************************************)