(*********************************************************************** 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[ 36683, 1181]*) (*NotebookOutlinePosition[ 37650, 1214]*) (* CellTagsIndexPosition[ 37606, 1210]*) (*WindowFrame->Normal*) Notebook[{ Cell[TextData[ "Augmented Lagrange Multiplier Method"], "Title", Evaluatable->False, AspectRatioFixed->True], Cell[TextData[{ " by \n Zafer Gurdal ", StyleBox["\[Copyright]", FontFamily->"Symbol", FontSlant->"Plain"], " Copyright 1996\n Departments of Aerospace and Ocean Engineering\n and \ Engineering Science and Mechanics \n Virginia Polytehnic Institute and State \ University\n Blacksburg, VA 24061-0219" }], "Subsubtitle", Evaluatable->False, AspectRatioFixed->True], Cell[TextData[StyleBox[ "Method of Lagrange Multipliers is a way to incorporate the optimality \ conditions into the penalty function optimization algorithm to improve its \ performance and reliability. The method seeks the minimimum of the \ Lagrangian while imposing the constraints satisfaction throug the use of \ penalty terms. The lagrange multipliers are typically unknown quantities. \ However, rather than treating them as additional variables, the method is \ based on estimating the multipliers and updating them as the algorithm \ approaches to the optimal solution so that the multipliers approach to their \ optimal values as well. In the following we will first demonstrate the \ countours of the augmented lagrangian for the same problem that we used in \ the Penalty Function method to constrast the difference. Then we will \ introduce the update formula for the lagrange multipliers. The method will \ be demonstrated firts for equality constrained problems followed by the \ inequality problems. ", FontSize->14, FontWeight->"Bold"]], "Text", Evaluatable->False, AspectRatioFixed->True, FontSize->18], Cell[CellGroupData[{ Cell[TextData["Sample Equality Constrained Problem"], "Section", Evaluatable->False, AspectRatioFixed->True], Cell[CellGroupData[{ Cell[TextData[{ StyleBox["Minimize ", FontSize->14], StyleBox["f(x1,x2) = (2 x1 - 5)", FontSize->14, FontColor->RGBColor[1, 0, 0]], StyleBox["2 ", FontSize->14, FontColor->RGBColor[1, 0, 0], FontVariations->{"CompatibilityType"->"Superscript"}], StyleBox["+ (x2 - 7)", FontSize->14, FontColor->RGBColor[1, 0, 0]], StyleBox["2", FontSize->14, FontColor->RGBColor[1, 0, 0], FontVariations->{"CompatibilityType"->"Superscript"}], StyleBox[" ", FontFamily->"Symbol", FontSize->14, FontWeight->"Plain", FontColor->RGBColor[1, 0, 0]], StyleBox["- 100", FontSize->14, FontColor->RGBColor[1, 0, 0]], StyleBox[" \nSubjected to ", FontSize->14], StyleBox["h(x1,x2) = x1 - 2 x2", FontSize->14, FontColor->RGBColor[1, 0, 0]], StyleBox[" ", FontFamily->"Symbol", FontSize->14, FontWeight->"Plain", FontColor->RGBColor[1, 0, 0]], StyleBox["- 1 = 0", FontSize->14, FontColor->RGBColor[1, 0, 0]] }], "Subsubsection", Evaluatable->False, AspectRatioFixed->True], Cell[BoxData[{ \(fobj[ X_] := \((2\ X\[LeftDoubleBracket]1\[RightDoubleBracket] - 5)\)\^2 + \ \((X\[LeftDoubleBracket]2\[RightDoubleBracket] - 7)\)\^2 - 100\), "\n", \(h1[X_] := \ \((X\[LeftDoubleBracket]1\[RightDoubleBracket] - 7)\)\^2\ \ + \((X\[LeftDoubleBracket]2\[RightDoubleBracket] + 2)\)\^2 - 16\), "\n", \(\(dvX = {x1, x2};\)\)}], "Input"], Cell[BoxData[{ \(fobj[dvX]\), "\n", \(h1[dvX]\)}], "Input", AspectRatioFixed->True], Cell[BoxData[ \(\(fcontr = ContourPlot[fobj[dvX], {x1, 0, 10}, {x2, 0, 10}, ContourSmoothing \[Rule] Automatic, ContourShading \[Rule] False, Contours \[Rule] {\(-99\), \(-95\), \(-90\), \(-80\), \(-70\), \ \(-60\), \(-45\), \(-25\), 0, 25, 50, 80, 115}, ContourStyle \[Rule] {RGBColor[0, 1, 0]}, DisplayFunction \[Rule] Identity];\)\)], "Input", AspectRatioFixed->True], Cell[BoxData[{ \(<< "\"\), "\n", \(\(hcontr = ImplicitPlot[h1[dvX] == 0, {x1, 0, 10}, {x2, 0, 10}, PlotStyle \[Rule] {Thickness[ .008], RGBColor[1, 0, 0]}, DisplayFunction \[Rule] Identity];\)\)}], "Input", AspectRatioFixed->True], Cell[BoxData[{ \(\(original = {fcontr, hcontr};\)\), "\n", \(\(original = Show[original, DisplayFunction \[Rule] $DisplayFunction];\)\)}], "Input", AspectRatioFixed->True] }, Open ]] }, Closed]], Cell[CellGroupData[{ Cell[TextData["Augmented Lagrangian for Equality Constraints"], "Section", Evaluatable->False, AspectRatioFixed->True], Cell[TextData[StyleBox[ "The necessary conditions for optimality is the requirement that the \ Lagrangian be stationary along with the feasibility requirement of the \ constaraints . It can also be shown that the minimum of the Lagrangian \ subjected to the feasibility constraints imposed using penalty terms \ provides the solution to the original problem. \nFollowing is the generic \ function definition for the augmented lagrangian. ", FontSize->14, FontWeight->"Bold"]], "Text", Evaluatable->False, AspectRatioFixed->True], Cell[BoxData[ \(AugmentedLagrangian[X_List, lamda_, penalty_] := fobj[X] + lamda\ *\ h1[X] + penalty\ *\ h1[X]\^2\)], "Input", AspectRatioFixed->True], Cell[TextData[{ StyleBox[ "A specific version of this may then be obtained by either substituting \ symbolic or numeric values into the argument list. ", FontSize->14, FontWeight->"Bold"], " " }], "Text", Evaluatable->False, AspectRatioFixed->True], Cell[BoxData[ \(AugmentedLagrangian[dvX, lam, rp]\)], "Input", AspectRatioFixed->True], Cell[BoxData[ \(augmented = AugmentedLagrangian[dvX, 0.0, 0.0001]\)], "Input", AspectRatioFixed->True], Cell[BoxData[ \(\(faugm = ContourPlot[augmented, {x1, 0, 10}, {x2, 0, 10}, ContourSmoothing \[Rule] Automatic, ContourShading \[Rule] False, Contours \[Rule] {\(-99\), \(-95\), \(-90\), \(-80\), \(-70\), \ \(-60\), \(-45\), \(-25\), 0, 25, 50, 80, 115}, ContourStyle \[Rule] {RGBColor[0, 0, 1]}];\)\)], "Input", AspectRatioFixed->True], Cell[BoxData[ \(\(Show[original, faugm];\)\)], "Input", AspectRatioFixed->True], Cell[TextData[{ StyleBox["For this problem the value of the lagrange multiplier at the \ optimum point can be computed to be around 2.245 . If we fix the value of \ the penalty multiplier and change the lamda from 0 to about 2.245 in \ increments of 0.2245, we will have the following response (if you are not \ familiar with the", FontSize->14, FontWeight->"Bold"], StyleBox[" ", FontFamily->"Courier New", FontSize->14, FontWeight->"Bold"], StyleBox["Do", FontFamily->"Courier New", FontSize->14, FontWeight->"Bold", FontColor->RGBColor[1, 0, 0]], StyleBox[", type", FontSize->14, FontWeight->"Bold"], StyleBox[" ", FontFamily->"Courier New", FontSize->14, FontWeight->"Bold"], StyleBox["?Do", FontFamily->"Courier New", FontSize->14, FontWeight->"Bold", FontColor->RGBColor[1, 0, 0]], StyleBox[" to see the argument list and the usage of it) . ", FontSize->14, FontWeight->"Bold"] }], "Text", Evaluatable->False, AspectRatioFixed->True], Cell[BoxData[{ \(rp = 0.001; lam = 0.0; Show[original];\), "\n", \(Do[augmented = AugmentedLagrangian[dvX, lam, rp]; faugm = ContourPlot[augmented, {x1, 0, 10}, {x2, 0, 10}, ContourSmoothing \[Rule] Automatic, ContourShading \[Rule] False, Contours \[Rule] {\(-99\), \(-95\), \(-90\), \(-80\), \(-70\), \ \(-60\), \(-45\), \(-25\), 0, 25, 50, 80, 115}, ContourStyle \[Rule] {RGBColor[0, 0, 1]}, DisplayFunction \[Rule] Identity]; Show[original, faugm, DisplayFunction \[Rule] $DisplayFunction]; lam = lam + 0.2245;, {11}]\)}], "Input", AspectRatioFixed->True], Cell[BoxData[ \(lam\)], "Input"], Cell[TextData[{ StyleBox[ "Compared to the contours of the penalty function only, you can see that \ the contours of the lagrangian for a fixed value of the penalty multiplier is \ not distorted even at, or very close to, the optimal valu of the lagrange \ multiplier.", FontSize->14, FontWeight->"Bold"], " " }], "Text", Evaluatable->False, AspectRatioFixed->True] }, Closed]], Cell[CellGroupData[{ Cell[TextData[ "Estimation of the Lagrange Multiplier and Iterations"], "Section", Evaluatable->False, AspectRatioFixed->True], Cell[TextData[{ StyleBox[ "The value of the lagrange multiplier is unknown at the optimum. However, \ one can start from an initial guess value of it and update it using the \ update formula\n\t\t\t ", FontSize->14, FontWeight->"Bold"], StyleBox["\[Lambda]", FontFamily->"Symbol", FontSize->14, FontWeight->"Bold"], StyleBox["k+1", FontSize->14, FontWeight->"Bold", FontVariations->{"CompatibilityType"->"Superscript"}], StyleBox[" = ", FontSize->14, FontWeight->"Bold"], StyleBox["\[Lambda]", FontFamily->"Symbol", FontSize->14, FontWeight->"Bold"], StyleBox["k", FontSize->14, FontWeight->"Bold", FontVariations->{"CompatibilityType"->"Superscript"}], StyleBox[" + 2 r", FontSize->14, FontWeight->"Bold"], StyleBox["k", FontSize->14, FontWeight->"Bold", FontVariations->{"CompatibilityType"->"Superscript"}], StyleBox[" h(x", FontSize->14, FontWeight->"Bold"], StyleBox["k", FontSize->14, FontWeight->"Bold", FontVariations->{"CompatibilityType"->"Superscript"}], StyleBox[ "). \nNote that the initial value of lam = 0 reduces the augmented \ lagrangian to the penalty function. In order to use the formula lam", FontSize->14, FontWeight->"Bold"], StyleBox["k+1", FontSize->14, FontWeight->"Bold", FontVariations->{"CompatibilityType"->"Superscript"}], StyleBox[" = lam", FontSize->14, FontWeight->"Bold"], StyleBox["k", FontSize->14, FontWeight->"Bold", FontVariations->{"CompatibilityType"->"Superscript"}], StyleBox[" + 2 r", FontSize->14, FontWeight->"Bold"], StyleBox["k", FontSize->14, FontWeight->"Bold", FontVariations->{"CompatibilityType"->"Superscript"}], StyleBox[" h(x", FontSize->14, FontWeight->"Bold"], StyleBox["k", FontSize->14, FontWeight->"Bold", FontVariations->{"CompatibilityType"->"Superscript"}], StyleBox[ "), we need to evaluate the value of the equality constraint at the design \ points as we iterate. \nThe value of the deisgn points is obtained by \ performing unconstraint minimization for each augmented Lagrangian (for \ specified values of the lagrange multiplier and the penalty multiplier. \ Lets use four iterations of the steepest descent for that purpose. ", FontSize->14, FontWeight->"Bold"] }], "Text", Evaluatable->False, AspectRatioFixed->True], Cell[BoxData[ \(FileNames[]\)], "Input"], Cell[BoxData[ \(<< "\"\)], "Input", AspectRatioFixed->True], Cell[TextData[{ StyleBox["FIRST CYCLE", FontColor->RGBColor[1, 0, 0]], " " }], "Text", Evaluatable->False, AspectRatioFixed->True], Cell[BoxData[{ \(lam = 0.0; rp = 0.001;\), "\n", \(\(x0 = {8, 1};\)\)}], "Input", AspectRatioFixed->True], Cell[BoxData[{ \(\(augmented = AugmentedLagrangian[dvX, lam, rp];\)\), "\n", \(\(faugm = ContourPlot[augmented, {x1, 0, 10}, {x2, 0, 10}, ContourSmoothing \[Rule] Automatic, ContourShading \[Rule] False, Contours \[Rule] {\(-99\), \(-95\), \(-90\), \(-80\), \(-70\), \ \(-60\), \(-45\), \(-25\), 0, 25, 50, 80, 115}, ContourStyle \[Rule] {RGBColor[0, 0, 1]}, DisplayFunction \[Rule] Identity];\)\), "\n", \(\(history = {original, faugm};\)\)}], "Input", AspectRatioFixed->True], Cell[BoxData[ \(\(?SteepestDescent\)\)], "Input", AspectRatioFixed->True], Cell[BoxData[ \(augmented = Simplify[AugmentedLagrangian[dvX, lam, rp]]\)], "Input", AspectRatioFixed->True], Cell[BoxData[ \(grOfpts = SteepestDescent[augmented, dvX, x0, PlotHistory \[Rule] True, MaxIterations \[Rule] 3]\)], "Input", AspectRatioFixed->True], Cell[BoxData[ \(\(history = ProgressPlot[history, grOfpts];\)\)], "Input", AspectRatioFixed->True], Cell[TextData[{ StyleBox["SECOND CYCLE", FontColor->RGBColor[1, 0, 0]], " " }], "Text", Evaluatable->False, AspectRatioFixed->True], Cell[BoxData[ \(x0 = Last[grOfpts]\)], "Input", AspectRatioFixed->True], Cell[BoxData[ \(lam = lam + 2\ rp\ h1[x0]\)], "Input", AspectRatioFixed->True], Cell[BoxData[ \(rp = rp\ 2\)], "Input", AspectRatioFixed->True], Cell[BoxData[{ \(\(augmented = Simplify[AugmentedLagrangian[dvX, lam, rp]];\)\), "\n", \(\(faugm = ContourPlot[augmented, {x1, 0, 10}, {x2, 0, 10}, ContourSmoothing \[Rule] Automatic, ContourShading \[Rule] False, Contours \[Rule] {\(-99\), \(-95\), \(-90\), \(-80\), \(-70\), \ \(-60\), \(-45\), \(-25\), 0, 25, 50, 80, 115}, ContourStyle \[Rule] {RGBColor[0, 0, 1]}, DisplayFunction \[Rule] Identity];\)\), "\n", \(\(history = {original, faugm};\)\)}], "Input", AspectRatioFixed->True], Cell[BoxData[ \(grOfpts = SteepestDescent[augmented, dvX, x0, PlotHistory \[Rule] True, MaxIterations \[Rule] 3]\)], "Input", AspectRatioFixed->True], Cell[BoxData[ \(\(ProgressPlot[history, grOfpts];\)\)], "Input", AspectRatioFixed->True], Cell[TextData[{ StyleBox["THIRD CYCLE", FontColor->RGBColor[1, 0, 0]], " " }], "Text", Evaluatable->False, AspectRatioFixed->True], Cell[BoxData[{ \(x0 = Last[grOfpts]\), "\n", \(lam = lam + 2\ rp\ h1[x0]\), "\n", \(rp = rp\ 2\)}], "Input", AspectRatioFixed->True], Cell[BoxData[{ \(\(augmented = Simplify[AugmentedLagrangian[dvX, lam, rp]];\)\), "\n", \(\(faugm = ContourPlot[augmented, {x1, 0, 10}, {x2, 0, 10}, ContourSmoothing \[Rule] Automatic, ContourShading \[Rule] False, Contours \[Rule] {\(-99\), \(-95\), \(-90\), \(-80\), \(-70\), \ \(-60\), \(-45\), \(-25\), 0, 25, 50, 80, 115}, ContourStyle \[Rule] {RGBColor[0, 0, 1]}, DisplayFunction \[Rule] Identity];\)\), "\n", \(\(history = {original, faugm};\)\), "\n", \(\(grOfpts = SteepestDescent[augmented, dvX, x0, PlotHistory \[Rule] True, MaxIterations \[Rule] 3];\)\), "\n", \(\(ProgressPlot[history, grOfpts];\)\)}], "Input", AspectRatioFixed->True], Cell[TextData[{ StyleBox["FOURTH CYCLE", FontColor->RGBColor[1, 0, 0]], " " }], "Text", Evaluatable->False, AspectRatioFixed->True], Cell[BoxData[{ \(x0 = Last[grOfpts]\), "\n", \(lam = lam + 2\ rp\ h1[x0]\), "\n", \(rp = rp\ 2\), "\n", \(\(augmented = Simplify[AugmentedLagrangian[dvX, lam, rp]];\)\), "\n", \(\(faugm = ContourPlot[augmented, {x1, 0, 10}, {x2, 0, 10}, ContourSmoothing \[Rule] Automatic, ContourShading \[Rule] False, Contours \[Rule] {\(-99\), \(-95\), \(-90\), \(-80\), \(-70\), \ \(-60\), \(-45\), \(-25\), 0, 25, 50, 80, 115}, ContourStyle \[Rule] {RGBColor[0, 0, 1]}, DisplayFunction \[Rule] Identity];\)\), "\n", \(\(history = {original, faugm};\)\), "\n", \(\(grOfpts = SteepestDescent[augmented, dvX, x0, PlotHistory \[Rule] True, MaxIterations \[Rule] 3];\)\), "\n", \(\(ProgressPlot[history, grOfpts];\)\)}], "Input", AspectRatioFixed->True], Cell[BoxData[ \(h1[x0]\)], "Input"] }, Closed]], Cell[CellGroupData[{ Cell[TextData["Iterations Performed in a Do Loop"], "Section", Evaluatable->False, AspectRatioFixed->True], Cell[BoxData[{ \(lam = 0.0; rp = 0.001;\), "\n", \(\(x0 = {2, 8};\)\), "\n", \(\(grOfpts = {};\)\), "\n", \(\(Show[original, Graphics[{PointSize[0.02], Point[x0]}]];\)\), "\n", \(Do[augmented = Simplify[AugmentedLagrangian[dvX, lam, rp]]; faugm = ContourPlot[augmented, {x1, 0, 10}, {x2, 0, 10}, ContourSmoothing \[Rule] Automatic, ContourShading \[Rule] False, Contours \[Rule] {\(-99\), \(-95\), \(-90\), \(-80\), \(-70\), \ \(-60\), \(-45\), \(-25\), 0, 25, 50, 80, 115}, ContourStyle \[Rule] {RGBColor[0, 0, 1]}, DisplayFunction \[Rule] Identity]; grOfpts = Join[grOfpts, SteepestDescent[augmented, dvX, x0, PlotHistory \[Rule] True, MaxIterations \[Rule] 3]]; ProgressPlot[{original, faugm}, grOfpts]; x0 = Last[grOfpts]; lam = lam + 2\ rp\ h1[x0]; rp = rp\ 2, {10}]\)}], "Input", AspectRatioFixed->True], Cell[BoxData[ \(lam\)], "Input"], Cell[BoxData[ \(rp\)], "Input"] }, Closed]], Cell[CellGroupData[{ Cell[TextData["Augmented Lagrangian for Inequality Constraints"], "Section", Evaluatable->False, AspectRatioFixed->True], Cell[TextData[{ StyleBox[ "The lagrangian for an inequality constraint function would include the \ slack variables as unknown quantities as well as the lagrange multipliers. \ The lagrangian augmented by the penalty terms for a function with inequality \ constraints would become, \n AL(x, ", FontSize->14, FontWeight->"Bold"], StyleBox["\[Lambda]", FontFamily->"Symbol", FontSize->14, FontWeight->"Bold"], StyleBox[", s, r) = f(x) + Sum{ ", FontSize->14, FontWeight->"Bold"], StyleBox["\[Lambda]", FontFamily->"Symbol", FontSize->14, FontWeight->"Bold"], StyleBox["j", FontSize->14, FontWeight->"Bold", FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox[" [ g", FontSize->14, FontWeight->"Bold"], StyleBox["j", FontSize->14, FontWeight->"Bold", FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox["(x) + s", FontSize->14, FontWeight->"Bold"], StyleBox["j", FontSize->14, FontWeight->"Bold", FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox["2", FontSize->14, FontWeight->"Bold", FontVariations->{"CompatibilityType"->"Superscript"}], StyleBox[" ] + r [ g", FontSize->14, FontWeight->"Bold"], StyleBox["j", FontSize->14, FontWeight->"Bold", FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox["(x) + s", FontSize->14, FontWeight->"Bold"], StyleBox["j", FontSize->14, FontWeight->"Bold", FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox["2", FontSize->14, FontWeight->"Bold", FontVariations->{"CompatibilityType"->"Superscript"}], StyleBox[" ]", FontSize->14, FontWeight->"Bold"], StyleBox["2", FontSize->14, FontWeight->"Bold", FontVariations->{"CompatibilityType"->"Superscript"}], StyleBox[ " } . \nHowever, in this form we have added as many new unknowns (the slack \ variables) as the number of constraints. \nIt can be shown that the \ minimization of the above prpoblem is equivalent to the following \ minimization problem\n AL(x, ", FontSize->14, FontWeight->"Bold"], StyleBox["\[Lambda]", FontFamily->"Symbol", FontSize->14, FontWeight->"Bold"], StyleBox[", r) = f(x) + Sum{ ", FontSize->14, FontWeight->"Bold"], StyleBox["\[Lambda]", FontFamily->"Symbol", FontSize->14, FontWeight->"Bold"], StyleBox["j", FontSize->14, FontWeight->"Bold", FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox[" ", FontSize->14, FontWeight->"Bold"], StyleBox["\[Psi]", FontFamily->"Symbol", FontSize->14, FontWeight->"Bold"], StyleBox["j", FontSize->14, FontWeight->"Bold", FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox[" + r ", FontSize->14, FontWeight->"Bold"], StyleBox["\[Psi]", FontFamily->"Symbol", FontSize->14, FontWeight->"Bold"], StyleBox["j", FontSize->14, FontWeight->"Bold", FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox["2", FontSize->14, FontWeight->"Bold", FontVariations->{"CompatibilityType"->"Superscript"}], StyleBox[" } , \n where\n \t\t ", FontSize->14, FontWeight->"Bold"], StyleBox["\[Psi]", FontFamily->"Symbol", FontSize->14, FontWeight->"Bold"], StyleBox["j", FontSize->14, FontWeight->"Bold", FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox[" = max[ g", FontSize->14, FontWeight->"Bold"], StyleBox["j", FontSize->14, FontWeight->"Bold", FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox["(x), -", FontSize->14, FontWeight->"Bold"], StyleBox["\[Lambda]", FontFamily->"Symbol", FontSize->14, FontWeight->"Bold"], StyleBox["j ", FontSize->14, FontWeight->"Bold", FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox["/ (2 r) ] \nWe use the following inequality function. ", FontSize->14, FontWeight->"Bold"] }], "Text", Evaluatable->False, AspectRatioFixed->True], Cell[BoxData[ \(g1[X_List] := \(-X\[LeftDoubleBracket]1\[RightDoubleBracket]\) - X\[LeftDoubleBracket]2\[RightDoubleBracket] + 8\)], "Input", AspectRatioFixed->True], Cell[BoxData[ \(\(gcontr = ImplicitPlot[{g1[dvX] == 0, g1[dvX] == 0.2}, {x1, 0, 10}, {x2, 0, 10}, PlotStyle \[Rule] {{Thickness[ .002]}, {Thickness[ .01], RGBColor[1, 0, 0]}}, DisplayFunction \[Rule] Identity];\)\)], "Input", AspectRatioFixed->True], Cell[BoxData[ \(\(original = Show[fcontr, hcontr, gcontr, \ DisplayFunction \[Rule] $DisplayFunction];\)\)], "Input", AspectRatioFixed->True], Cell[BoxData[ \(rp =. \)], "Input", AspectRatioFixed->True], Cell[TextData[StyleBox[ "The new generic augmented lagrangian in terms of both the equality and \ inequality constraints, and the Max functions are. Note that this time lamda \ is a list. ", FontSize->14, FontWeight->"Bold"]], "Text", Evaluatable->False, AspectRatioFixed->True], Cell[BoxData[ \(lamda = {lam1, lam2}\)], "Input", AspectRatioFixed->True], Cell[BoxData[ \(AugmentedLagrangian = fobj[dvX]\ + \ lamda[\([1]\)]*h1[dvX]\ + \ penalty\ *\ h1[dvX]\^2\ \ + lamda[\([2]\)]\ *\ Max[\ g1[dvX], \ \(-lamda[\([2]\)]\)/\((2*penalty)\)]\ + \ penalty\ *\ Max[\ g1[dvX], \ \(-lamda[\([2]\)]\)/\((2*penalty)\)]\^2\)], "Input",\ AspectRatioFixed->True], Cell[TextData[{ StyleBox["For initial values of ", FontSize->14, FontWeight->"Bold"], StyleBox[" \[Lambda]", FontFamily->"Symbol", FontSize->14, FontWeight->"Bold"], StyleBox["1", FontSize->14, FontWeight->"Bold", FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox[" = 0, ", FontSize->14, FontWeight->"Bold"], StyleBox["\[Lambda]", FontFamily->"Symbol", FontSize->14, FontWeight->"Bold"], StyleBox["2", FontSize->14, FontWeight->"Bold", FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox[" = 0, and r", FontSize->14, FontWeight->"Bold"], StyleBox["p", FontSize->14, FontWeight->"Bold", FontVariations->{"CompatibilityType"->"Subscript"}], StyleBox[" = 0.1, we have. ", FontSize->14, FontWeight->"Bold"] }], "Text", Evaluatable->False, AspectRatioFixed->True], Cell[BoxData[ \(augmented\ = \ AugmentedLagrangian\ /. \ {lam1 -> \ 0.0, \ lam2 -> 0.0, \ penalty -> 0.001}\)], "Input"], Cell[BoxData[ \(\(faugm = ContourPlot[augmented, {x1, 0, 10}, {x2, 0, 10}, ContourSmoothing \[Rule] Automatic, ContourShading \[Rule] False, Contours \[Rule] {\(-99\), \(-95\), \(-90\), \(-80\), \(-70\), \ \(-60\), \(-45\), \(-25\), 0, 25, 50, 80, 115}, ContourStyle \[Rule] {RGBColor[0, 0, 1]}, DisplayFunction \[Rule] Identity];\)\)], "Input", AspectRatioFixed->True], Cell[BoxData[ \(\(Show[original, \ faugm, DisplayFunction \[Rule] $DisplayFunction];\)\)], "Input", AspectRatioFixed->True] }, Closed]], Cell[CellGroupData[{ Cell[TextData["Estimation of the Lagrange Multiplier Iteratively"], "Section", Evaluatable->False, AspectRatioFixed->True], Cell[TextData[{ StyleBox["We still use the formula lam", FontSize->14, FontWeight->"Bold"], StyleBox["k+1", FontSize->14, FontWeight->"Bold", FontVariations->{"CompatibilityType"->"Superscript"}], StyleBox[" = lam", FontSize->14, FontWeight->"Bold"], StyleBox["k", FontSize->14, FontWeight->"Bold", FontVariations->{"CompatibilityType"->"Superscript"}], StyleBox[" + 2 r", FontSize->14, FontWeight->"Bold"], StyleBox["k", FontSize->14, FontWeight->"Bold", FontVariations->{"CompatibilityType"->"Superscript"}], StyleBox[" h(x", FontSize->14, FontWeight->"Bold"], StyleBox["k", FontSize->14, FontWeight->"Bold", FontVariations->{"CompatibilityType"->"Superscript"}], StyleBox["), however for the inequality constraint we replace h(x", FontSize->14, FontWeight->"Bold"], StyleBox["k", FontSize->14, FontWeight->"Bold", FontVariations->{"CompatibilityType"->"Superscript"}], StyleBox[") by ", FontSize->14, FontWeight->"Bold"], StyleBox["\[Psi]", FontFamily->"Symbol", FontSize->14, FontWeight->"Bold"], StyleBox["(x", FontSize->14, FontWeight->"Bold"], StyleBox["k", FontSize->14, FontWeight->"Bold", FontVariations->{"CompatibilityType"->"Superscript"}], StyleBox[")", FontSize->14, FontWeight->"Bold"] }], "Text", Evaluatable->False, AspectRatioFixed->True], Cell[TextData[{ StyleBox["FIRST CYCLE", FontColor->RGBColor[1, 0, 0]], " " }], "Text", Evaluatable->False, AspectRatioFixed->True], Cell[BoxData[{ \(L1 = 0.0; L2 = 0.0; P = 0.0001;\), "\n", \(\(x0 = {8, 8};\)\), "\[IndentingNewLine]", \(\(grafpts = {};\)\)}], "Input", AspectRatioFixed->True], Cell[BoxData[{ \(\(augmented = Simplify[ AugmentedLagrangian\ /. \ {lam1 -> \ L1, \ lam2 -> L2, \ penalty -> P}];\)\), "\n", \(\(faugm = ContourPlot[augmented, {x1, 0, 10}, {x2, 0, 10}, ContourSmoothing \[Rule] Automatic, ContourShading \[Rule] False, Contours \[Rule] {\(-99\), \(-95\), \(-90\), \(-80\), \(-70\), \ \(-60\), \(-45\), \(-25\), 0, 25, 50, 80, 115}, ContourStyle \[Rule] {RGBColor[0, 0, 1]}, DisplayFunction \[Rule] Identity];\)\), "\n", \(\(history = {original, faugm};\)\)}], "Input", AspectRatioFixed->True], Cell[BoxData[ \(augmented\)], "Input"], Cell[TextData[{ StyleBox["Because of the ", FontSize->14, FontWeight->"Bold"], StyleBox["Max[ ]", FontFamily->"Courier", FontSize->14, FontWeight->"Bold", FontColor->RGBColor[1, 0, 0]], StyleBox[ " function, for the n-dimensional unconstrained minimization we need a \ method that does not require derivatives (", FontSize->14, FontWeight->"Bold"], StyleBox["Mathematica", FontSize->14, FontWeight->"Bold", FontSlant->"Italic"], StyleBox[ " cannot take the derivative of a Max function). Note that even if some \ of the the n-dimensional function minimization functions that we introduce \ do not use derivative based methods, they typically use ", FontSize->14, FontWeight->"Bold"], StyleBox["FindMinimum", FontFamily->"Courier", FontSize->14, FontWeight->"Bold", FontColor->RGBColor[1, 0, 0]], StyleBox[ " for one dimensional minimization which uses derivative information. Of \ the n-dimensional minimization algorithms we provided ony ", FontSize->14, FontWeight->"Bold"], StyleBox["SequentialSimplex", FontFamily->"Courier", FontSize->14, FontWeight->"Bold", FontColor->RGBColor[1, 0, 0]], StyleBox[" does not use derivative information at all. ", FontSize->14, FontWeight->"Bold"] }], "Text", Evaluatable->False, AspectRatioFixed->True], Cell[BoxData[ \(\(?SequentialSimplex\)\)], "Input", AspectRatioFixed->True], Cell[BoxData[ \(size = 1.0\)], "Input", AspectRatioFixed->True], Cell[BoxData[ \(dvX\)], "Input", AspectRatioFixed->True], Cell[BoxData[ \(x0\)], "Input", AspectRatioFixed->True], Cell[BoxData[ \(\(lastPt = SequentialSimplex[augmented, dvX, x0, size, PlotHistory \[Rule] True, MaxIterations \[Rule] 10, Epsilon \[Rule] 1\/10\^2];\)\)], "Input", AspectRatioFixed->True], Cell[BoxData[{ \(\(grafpts\ = \ Join[grafpts, \ lastPt];\)\), "\[IndentingNewLine]", \(history = ProgressPlot[history, grafpts]\)}], "Input", AspectRatioFixed->True], Cell[TextData[{ StyleBox["SECOND CYCLE", FontColor->RGBColor[1, 0, 0]], " " }], "Text", Evaluatable->False, AspectRatioFixed->True], Cell[BoxData[ \(x0 = \(Last[ lastPt]\)\[LeftDoubleBracket]3\[RightDoubleBracket]\)], "Input", AspectRatioFixed->True], Cell[BoxData[ \(L1 = L1 + 2\ *\ P*\ h1[x0]\)], "Input", AspectRatioFixed->True], Cell[BoxData[ \(L2 = L2 + 2\ *\ P\ *\ \ Max[g1[x0], \(-\(L2\/\(2*\ P\)\)\)]\)], "Input",\ AspectRatioFixed->True], Cell[BoxData[ \(P = \ 1.25\ *\ P\)], "Input", AspectRatioFixed->True], Cell[BoxData[ \(size = 0.9\ *\ size\)], "Input", AspectRatioFixed->True], Cell[BoxData[{ \(\(augmented = Simplify[ AugmentedLagrangian\ /. \ {lam1 -> \ L1, \ lam2 -> L2, \ penalty -> P}]\ ;\)\), "\n", \(\(faugm = ContourPlot[augmented, {x1, 0, 10}, {x2, 0, 10}, ContourSmoothing \[Rule] Automatic, ContourShading \[Rule] False, Contours \[Rule] {\(-99\), \(-95\), \(-90\), \(-80\), \(-70\), \ \(-60\), \(-45\), \(-25\), 0, 25, 50, 80, 115}, ContourStyle \[Rule] {RGBColor[0, 0, 1]}, DisplayFunction \[Rule] Identity];\)\), "\n", \(\(history = {original, faugm};\)\)}], "Input", AspectRatioFixed->True], Cell[BoxData[ \(\(lastPt = SequentialSimplex[augmented, dvX, x0, size, PlotHistory \[Rule] True, MaxIterations \[Rule] 10, Epsilon \[Rule] 1\/10\^2];\)\)], "Input", AspectRatioFixed->True], Cell[BoxData[{ \(\(grafpts\ = \ Join[grafpts, \ lastPt];\)\), "\[IndentingNewLine]", \(\(ProgressPlot[history, grafpts];\)\)}], "Input", AspectRatioFixed->True], Cell[BoxData[ \(x0 = \(Last[ lastPt]\)\[LeftDoubleBracket]3\[RightDoubleBracket]\)], "Input", AspectRatioFixed->True], Cell[TextData[{ StyleBox["THIRD CYCLE", FontColor->RGBColor[1, 0, 0]], " " }], "Text", Evaluatable->False, AspectRatioFixed->True], Cell[BoxData[{ \(x0 = \(Last[ lastPt]\)\[LeftDoubleBracket]3\[RightDoubleBracket]\), "\n", \(L1 = L1 + 2\ *P*\ h1[x0]\), "\n", \(L2 = L2 + 2\ *\ P\ *\ Max[g1[x0], \(-\(L2\/\(2*\ P\)\)\)]\), "\n", \(P = 1.25\ *\ P\ \), "\n", \(size = 0.9*\ size\)}], "Input", AspectRatioFixed->True], Cell[BoxData[{ \(\(augmented = Simplify[ AugmentedLagrangian\ /. \ {lam1 -> \ L1, \ lam2 -> L2, \ penalty -> P}];\)\), "\n", \(\(faugm = ContourPlot[augmented, {x1, 0, 10}, {x2, 0, 10}, ContourSmoothing \[Rule] Automatic, ContourShading \[Rule] False, Contours \[Rule] {\(-99\), \(-95\), \(-90\), \(-80\), \(-70\), \ \(-60\), \(-45\), \(-25\), 0, 25, 50, 80, 115}, ContourStyle \[Rule] {RGBColor[0, 0, 1]}, DisplayFunction \[Rule] Identity];\)\), "\n", \(\(history = {original, faugm};\)\), "\n", \(\(lastPt = SequentialSimplex[augmented, dvX, x0, size, PlotHistory \[Rule] True, MaxIterations \[Rule] 10, Epsilon \[Rule] 1\/10\^2];\)\), "\n", \(\(grafpts\ = \ Join[grafpts, \ lastPt];\)\), "\[IndentingNewLine]", \(\(ProgressPlot[history, grafpts];\)\)}], "Input", AspectRatioFixed->True], Cell[TextData[{ StyleBox["FOURTH CYCLE", FontColor->RGBColor[1, 0, 0]], " " }], "Text", Evaluatable->False, AspectRatioFixed->True], Cell[BoxData[{ \(\(x0 = \(Last[ lastPt]\)\[LeftDoubleBracket]3\[RightDoubleBracket];\)\), "\n", \(L1 = L1 + 2\ *\ P\ *\ h1[x0]\), "\n", \(L2 = L2 + 2\ *\ P\ *\ Max[g1[x0], \(-\(L2\/\(2*\ P\)\)\)]\), "\n", \(\(P = 1.25\ *\ P\ ;\)\), "\n", \(\(size = 0.9\ *\ size;\)\), "\n", \(\(augmented = Simplify[ AugmentedLagrangian\ /. \ {lam1 -> \ L1, \ lam2 -> L2, \ penalty -> P}];\)\), "\n", \(\(faugm = ContourPlot[augmented, {x1, 0, 10}, {x2, 0, 10}, ContourSmoothing \[Rule] Automatic, ContourShading \[Rule] False, Contours \[Rule] {\(-99\), \(-95\), \(-90\), \(-80\), \(-70\), \ \(-60\), \(-45\), \(-25\), 0, 25, 50, 80, 115}, ContourStyle \[Rule] {RGBColor[0, 0, 1]}, DisplayFunction \[Rule] Identity];\)\), "\n", \(\(history = {original, faugm};\)\), "\n", \(\(lastPt = SequentialSimplex[augmented, dvX, x0, size, PlotHistory \[Rule] True, MaxIterations \[Rule] 10, Epsilon \[Rule] 1\/10\^2];\)\), "\n", \(\(grafpts\ = \ Join[grafpts, \ lastPt];\)\), "\[IndentingNewLine]", \(\(ProgressPlot[history, grafpts];\)\)}], "Input", AspectRatioFixed->True], Cell[TextData[{ StyleBox["Fifth CYCLE", FontColor->RGBColor[1, 0, 0]], " " }], "Text", Evaluatable->False, AspectRatioFixed->True], Cell[BoxData[{ \(\(x0 = \(Last[ lastPt]\)\[LeftDoubleBracket]3\[RightDoubleBracket];\)\), "\n", \(L1 = L1 + 2\ *\ P\ *\ h1[x0]\), "\n", \(L2 = L2 + 2\ *\ P\ *\ Max[g1[x0], \(-\(L2\/\(2*\ P\)\)\)]\), "\n", \(\(P = 1.25\ *\ P\ ;\)\), "\n", \(\(size = 0.9\ *\ size;\)\), "\n", \(\(augmented = Simplify[ AugmentedLagrangian\ /. \ {lam1 -> \ L1, \ lam2 -> L2, \ penalty -> P}];\)\), "\n", \(\(faugm = ContourPlot[augmented, {x1, 0, 10}, {x2, 0, 10}, ContourSmoothing \[Rule] Automatic, ContourShading \[Rule] False, Contours \[Rule] {\(-99\), \(-95\), \(-90\), \(-80\), \(-70\), \ \(-60\), \(-45\), \(-25\), 0, 25, 50, 80, 115}, ContourStyle \[Rule] {RGBColor[0, 0, 1]}, DisplayFunction \[Rule] Identity];\)\), "\n", \(\(history = {original, faugm};\)\), "\n", \(\(lastPt = SequentialSimplex[augmented, dvX, x0, size, PlotHistory \[Rule] True, MaxIterations \[Rule] 10, Epsilon \[Rule] 1\/10\^2];\)\), "\n", \(\(grafpts\ = \ Join[grafpts, \ lastPt];\)\), "\[IndentingNewLine]", \(\(ProgressPlot[history, grafpts];\)\)}], "Input", AspectRatioFixed->True], Cell[BoxData[ \(x0\)], "Input"], Cell[BoxData[ \(h1[x0]\)], "Input"], Cell[BoxData[ \(g1[x0]\)], "Input"], Cell[BoxData[ \(P\)], "Input"] }, Closed]] }, FrontEndVersion->"4.0 for Microsoft Windows", ScreenRectangle->{{0, 1024}, {0, 723}}, WindowToolbars->{}, Evaluator->"Local", CellGrouping->Automatic, WindowSize->{996, 674}, WindowMargins->{{2, Automatic}, {Automatic, 2}}, PrivateNotebookOptions->{"ColorPalette"->{RGBColor, 128}}, ShowCellLabel->True, ShowCellTags->False, RenderingOptions->{"ObjectDithering"->True, "RasterDithering"->False}, CharacterEncoding->"XAutomaticEncoding", StyleDefinitions -> "Classroom.nb" ] (*********************************************************************** 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[1717, 49, 112, 3, 67, "Title", Evaluatable->False], Cell[1832, 54, 384, 10, 149, "Subsubtitle", Evaluatable->False], Cell[2219, 66, 1140, 19, 157, "Text", Evaluatable->False], Cell[CellGroupData[{ Cell[3384, 89, 112, 2, 62, "Section", Evaluatable->False], Cell[CellGroupData[{ Cell[3521, 95, 1084, 40, 84, "Subsubsection", Evaluatable->False], Cell[4608, 137, 371, 6, 90, "Input"], Cell[4982, 145, 94, 3, 70, "Input"], Cell[5079, 150, 429, 8, 90, "Input"], Cell[5511, 160, 297, 6, 90, "Input"], Cell[5811, 168, 202, 5, 70, "Input"] }, Open ]] }, Closed]], Cell[CellGroupData[{ Cell[6062, 179, 122, 2, 42, "Section", Evaluatable->False], Cell[6187, 183, 540, 10, 106, "Text", Evaluatable->False], Cell[6730, 195, 163, 3, 50, "Input"], Cell[6896, 200, 268, 9, 31, "Text", Evaluatable->False], Cell[7167, 211, 92, 2, 50, "Input"], Cell[7262, 215, 108, 2, 50, "Input"], Cell[7373, 219, 383, 7, 70, "Input"], Cell[7759, 228, 85, 2, 50, "Input"], Cell[7847, 232, 1041, 34, 75, "Text", Evaluatable->False], Cell[8891, 268, 635, 11, 150, "Input"], Cell[9529, 281, 36, 1, 50, "Input"], Cell[9568, 284, 385, 11, 52, "Text", Evaluatable->False] }, Closed]], Cell[CellGroupData[{ Cell[9990, 300, 130, 3, 42, "Section", Evaluatable->False], Cell[10123, 305, 2465, 80, 213, "Text", Evaluatable->False], Cell[12591, 387, 44, 1, 50, "Input"], Cell[12638, 390, 86, 2, 50, "Input"], Cell[12727, 394, 142, 6, 29, "Text", Evaluatable->False], Cell[12872, 402, 116, 3, 70, "Input"], Cell[12991, 407, 546, 10, 130, "Input"], Cell[13540, 419, 79, 2, 50, "Input"], Cell[13622, 423, 114, 2, 50, "Input"], Cell[13739, 427, 171, 4, 50, "Input"], Cell[13913, 433, 104, 2, 50, "Input"], Cell[14020, 437, 143, 6, 29, "Text", Evaluatable->False], Cell[14166, 445, 77, 2, 50, "Input"], Cell[14246, 449, 84, 2, 50, "Input"], Cell[14333, 453, 69, 2, 50, "Input"], Cell[14405, 457, 556, 10, 130, "Input"], Cell[14964, 469, 171, 4, 50, "Input"], Cell[15138, 475, 94, 2, 50, "Input"], Cell[15235, 479, 142, 6, 29, "Text", Evaluatable->False], Cell[15380, 487, 148, 4, 90, "Input"], Cell[15531, 493, 746, 14, 170, "Input"], Cell[16280, 509, 143, 6, 29, "Text", Evaluatable->False], Cell[16426, 517, 850, 17, 230, "Input"], Cell[17279, 536, 39, 1, 50, "Input"] }, Closed]], Cell[CellGroupData[{ Cell[17355, 542, 110, 2, 42, "Section", Evaluatable->False], Cell[17468, 546, 940, 18, 230, "Input"], Cell[18411, 566, 36, 1, 50, "Input"], Cell[18450, 569, 35, 1, 50, "Input"] }, Closed]], Cell[CellGroupData[{ Cell[18522, 575, 124, 2, 42, "Section", Evaluatable->False], Cell[18649, 579, 4140, 148, 298, "Text", Evaluatable->False], Cell[22792, 729, 180, 3, 50, "Input"], Cell[22975, 734, 305, 6, 70, "Input"], Cell[23283, 742, 167, 4, 50, "Input"], Cell[23453, 748, 65, 2, 50, "Input"], Cell[23521, 752, 287, 7, 52, "Text", Evaluatable->False], Cell[23811, 761, 79, 2, 50, "Input"], Cell[23893, 765, 360, 9, 70, "Input"], Cell[24256, 776, 895, 35, 41, "Text", Evaluatable->False], Cell[25154, 813, 144, 3, 50, "Input"], Cell[25301, 818, 428, 8, 90, "Input"], Cell[25732, 828, 138, 3, 50, "Input"] }, Closed]], Cell[CellGroupData[{ Cell[25907, 836, 126, 2, 42, "Section", Evaluatable->False], Cell[26036, 840, 1450, 55, 41, "Text", Evaluatable->False], Cell[27489, 897, 142, 6, 29, "Text", Evaluatable->False], Cell[27634, 905, 176, 4, 90, "Input"], Cell[27813, 911, 629, 13, 130, "Input"], Cell[28445, 926, 42, 1, 50, "Input"], Cell[28490, 929, 1378, 44, 97, "Text", Evaluatable->False], Cell[29871, 975, 81, 2, 50, "Input"], Cell[29955, 979, 69, 2, 50, "Input"], Cell[30027, 983, 62, 2, 50, "Input"], Cell[30092, 987, 61, 2, 50, "Input"], Cell[30156, 991, 214, 4, 62, "Input"], Cell[30373, 997, 177, 3, 70, "Input"], Cell[30553, 1002, 143, 6, 29, "Text", Evaluatable->False], Cell[30699, 1010, 133, 3, 50, "Input"], Cell[30835, 1015, 85, 2, 50, "Input"], Cell[30923, 1019, 120, 3, 62, "Input"], Cell[31046, 1024, 75, 2, 50, "Input"], Cell[31124, 1028, 78, 2, 50, "Input"], Cell[31205, 1032, 631, 13, 130, "Input"], Cell[31839, 1047, 214, 4, 62, "Input"], Cell[32056, 1053, 172, 3, 70, "Input"], Cell[32231, 1058, 133, 3, 50, "Input"], Cell[32367, 1063, 142, 6, 29, "Text", Evaluatable->False], Cell[32512, 1071, 317, 7, 144, "Input"], Cell[32832, 1080, 929, 18, 204, "Input"], Cell[33764, 1100, 143, 6, 29, "Text", Evaluatable->False], Cell[33910, 1108, 1225, 24, 318, "Input"], Cell[35138, 1134, 142, 6, 29, "Text", Evaluatable->False], Cell[35283, 1142, 1225, 24, 318, "Input"], Cell[36511, 1168, 35, 1, 50, "Input"], Cell[36549, 1171, 39, 1, 50, "Input"], Cell[36591, 1174, 39, 1, 50, "Input"], Cell[36633, 1177, 34, 1, 50, "Input"] }, Closed]] } ] *) (*********************************************************************** End of Mathematica Notebook file. ***********************************************************************)