home

PDF (letter size)

CDF Mathematica file (download to run on your PC with Mathematica free player)

Unit simplex animation showing feasibility region

Nasser M. Abbasi

March 16, 2016   Compiled on January 30, 2024 at 4:28am

This small animation shows the feasibility region and the the intersection line between a1x1+a2x2+a3x3=1 and b1x1+b2x2+b3x3=1 and with xi0. The light Green region is the one in which a1x1+a2x2+a3x31 and b1x1+b2x2+b3x31. The optimal solution will be on a vertix on the line of interesection between the two planes shown. Done for class HW.

This small animation shows the feasibility region which is the intersection line between unit simplex given by x1+x2+x3=1 and plane 2x1+3x2=1.

Source code used to generate the first movie is

Manipulate[ 
 len = 1.5; 
 h = a1 x1 + a2 x2 + a3 x3; 
 g = b1 x1 + b2 x2 + b3 x3; 
 
 g1 = ContourPlot3D[{h == 1, g == 1}, {x1, 0, len}, {x2, 0, len}, {x3, 0, len}, 
   PlotRange -> {{0, len}, {0, len}, {0, len}}, 
   SphericalRegion -> True, MeshStyle -> {{Thick, Blue}}, Mesh -> {{0}}, 
   Lighting -> {{"Ambient", White}} 
   ]; 
 g2 = RegionPlot3D[h <= 1 && g <= 1, {x1, 0, len}, {x2, 0, len}, {x3, 0, len}, 
   PlotRange -> {{0, len}, {0, len}, {0, len}}, 
   SphericalRegion -> True, Mesh -> 0, 
   PlotStyle -> Directive[Green, Opacity[0.2]], 
   Lighting -> {{"Ambient", White}}]; 
 
 g3 = Graphics3D[{ 
    Arrow[{{0, 0, -len}, {0, 0, len}}], 
    Text[Style[z, Bold], {0, 0, 1.1 len}], 
    Arrow[{{0, -len, 0}, {0, len, 0}}], 
    Text[Style[y, Bold], {0, 1.1 len, 0}], 
    Arrow[{{-len, 0, 0}, {len, 0, 0}}], 
    Text[Style[x, Bold], {1.1 len, 0, 0}] 
    }]; 
 Grid[{ 
   {h}, 
   {g}, 
   { 
    If[showRegion, 
     Show[g1, g2, g3, ImageSize -> 400, ImagePadding -> 5] 
     , 
     Show[g1, g3, ImageSize -> 400, ImagePadding -> 5] 
     ] 
    }}, Frame -> All], 
 {{a1, 1, "a1"}, 0, 5, .01, Appearance -> "Labeled", ImageSize -> Tiny}, 
 {{a2, 1, "a2"}, 0, 5, .01, Appearance -> "Labeled", ImageSize -> Tiny}, 
 {{a3, 1, "a3"}, 0, 5, .01, Appearance -> "Labeled", ImageSize -> Tiny}, 
 {{b1, 2, "b1"}, 0, 5, .01, Appearance -> "Labeled", ImageSize -> Tiny}, 
 {{b2, 3, "b2"}, 0, 5, .01, Appearance -> "Labeled", ImageSize -> Tiny}, 
 {{b3, 0, "b3"}, 0, 5, .01, Appearance -> "Labeled", ImageSize -> Tiny}, 
 Row[{"show feasbility region ", Checkbox[Dynamic[showRegion]]}], 
 ControlPlacement -> Left 
 ]
 

Source code used to generate the second movie is

eq1 = 2 x1 + 3 x2 == 1; 
eq2 = x1 + x2 + x3 == 1; 
len = 2; 
g2 = Graphics3D[Simplex[{{1, 0, 0}, {0, 1, 0}, {0, 0, 1}}]]; 
g1 = ContourPlot3D[Evaluate@eq1, {x1, -1, 1}, {x2, -1, 1}, {x3, -1, 1}, 
   ContourStyle -> Directive[FaceForm[Yellow], Opacity[.5]], Mesh -> None, 
   Lighting -> {{"Ambient", White}}, Boxed -> True, Axes -> False]; 
g3 = Graphics3D[{ 
    Arrow[{{0, 0, -len}, {0, 0, len}}], Text[Style[z, Bold], {0, 0, 1.1 len}], 
    Arrow[{{0, -len, 0}, {0, len, 0}}], Text[Style[y, Bold], {0, 1.1 len, 0}], 
    Arrow[{{-len, 0, 0}, {len, 0, 0}}], Text[Style[x, Bold], {1.1 len, 0, 0}], 
    {Blue, Sphere[{0, 1/3, 2/3}, .05]}, 
    {Blue, Sphere[{1/2, 0, 1/2}, .05]}, 
    {Red, Thick, Line[{{0, 1/3, 2/3}, {1/2, 0, 1/2}}]} 
    }]; 
Grid[{{Column[{eq1, eq2}]}, 
  {Show[g1, g2, g3, PlotRange -> All, ImageSize -> 400, 
    SphericalRegion -> True]}}]
 

The following is the Mathematica notebook note.nb