number XSIZE 200 number YSIZE 150 dim XSIZE YSIZE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Gradiente operator - Nabla %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% procedure Nabla { L bl P1x P1y } { %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Parameters %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % L: length of sides % bl: baseline % P1x: x coordinate of the lower vertex % P1y: y-coordinate of the lower vertex %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% number pi 3.1415926535897932384626433832795 expression P2x {P1x+L*cos(pi/3)} expression P2y {P1y+L*sin(pi/3)+bl} expression P3x {P1x-L*cos(pi/3)} expression P3y {P1y+L*sin(pi/3)+bl} ang_point P1 P1x P1y ang_point P2 P2x P2y ang_point P3 P3x P3y drawsegment P1 P2 drawsegment P2 P3 drawsegment P3 P1 } %===================================== % The problem % Please, do not change the font type! %===================================== point Obj 145 76 point comp 160 78.3 fontsize 4 printat_r comp {2 2} fontsize 5 point comp 158 77.1 printat_r comp {(1) (2)} fontsize 8 printat_r Obj {Minimize x + x,} point st 145 70 fontsize 5 point comp 162.5 71.2 printat_r comp {(1) (2)} fontsize 8 printat_r st {s.t.: g(x) = 8 - x - 2x < 0.} point st 172.5 69.25 printat st {-} point st 172 69.25 printat st {-} %%%%%%%%%%%%%%%%%%%%%%%%%%%%% number pi 3.1416 number ox 55 number oy 55 number unit 6 ang_unit unit ang_origin ox oy ang_drawsystem_p 2 2 2 1 2 %%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Feasible region %%%%%%%%%%%%%%%%%%%%%%%%%%%%% color 250 250 180 ang_point p1 -6.2 7.1 ang_point p2 13.8 7.1 ang_point p3 13.8 -2.9 ang_point p4 13.8 13.8 filltriangle p1 p2 p3 fillrectangle p1 p4 %%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Animation %%%%%%%%%%%%%%%%%%%%%%%%%%%%% color 255 255 255 animation_frames 80 10 point mov 20 10 130 10 %cmark mov getx t mov color 0 100 0 point Ini 20 9 point End 130 9 linethickness 0.64 drawsegment Ini End linethickness 0.16 %%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Conversion & KKT point %%%%%%%%%%%%%%%%%%%%%%%%%%%%% expression xk1 {(t-20)/unit-6} trace mov 10 10 240 expression xk2 {(8-xk1)/2} ang_point xk xk1 xk2 cmark xk % linethickness .1 % drawdashsegment xk mov linethickness .4 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Objective function gradient %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% color 10 10 240 expression gf1 {xk1+2*xk1} expression gf2 {xk2+2*xk2} expression Egf1 {xk1+2*xk1+0.6} expression Egf2 {xk2+2*xk2+0.2} ang_point gf gf1 gf2 ang_point Egf Egf1 Egf2 drawvector xk gf color 10 10 10 call Nabla { 0.35 0.1 gf1 gf2 } printat Egf {f(x)} expression f {pow(xk1,2)+pow(xk2,2)} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Quadratic function level curves %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ang_picture 18 20 138 138 circleprecision 500 number A 1.6 number n 1 linethickness .25 color 128 128 255 while { n<=17 } { expression red {255-15*n} expression green {255-15*n} expression blue {255} expression thick {n*0.045} color red green blue ang_draw_parametric_curve t {0;t<2*pi;t+0.1}{A*cos(t);A*sin(t)} expression A {A+1} expression n {n+1} } ang_drawsystem_p 2 2 2 2 2 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Active Constraint Gradient %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% color 240 10 10 linethickness .32 expression u1 {16/16} expression gg11 {xk1-u1*1} expression gg12 {xk2-u1*2} expression Egg11 {xk1-u1*1-0.6} expression Egg12 {xk2-u1*2-0.6} ang_point gg1 gg11 gg12 ang_point Egg1 Egg11 Egg12 drawvector xk gg1 color 10 10 10 call Nabla { 0.35 0.1 Egg11 Egg12 } printat_b gg1 {g(x)} %mark_b gg1 linethickness .2 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Axis label %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ang_point Etx1 12.8 -0.6 ang_point Etx2 13.1 -0.4 printat Etx1 {x} fontsize 6 printat Etx2 {(1)} fontsize 8 ang_point Ety1 -0.8 13 ang_point Ety2 -0.5 13.15 printat Ety1 {x} fontsize 6 printat Ety2 {(2)} fontsize 8 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Solution report %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% point aEtqx0 103.9 119.5 %8.2 10.1 % point aEtqx 106 119 % 8.5 10 point aEtqx1 112 119 % 9.5 10 point aEtqp1 116.0 119 %10.2 10 point aEtqx2 119.2 119 %10.7 10 point aEtqp2 122.6 119 %11.3 10 point aEtqp3 124 120.8 %11.5 10.3 point aEtqf1 106 114 %8.5 9 point aEtqf2 113.8 114 %9.8 9 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Reporting results %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% point C1 101 111 point C2 125.5 122.0 color 255 255 255 fillrectangle C1 C2 color 0 0 0 printat aEtqx0 {^} printat aEtqx {x = (} printvalueat aEtqx1 xk1 printat aEtqp1 {,} printvalueat aEtqx2 xk2 printat aEtqp2 {)} printat aEtqp3 {t} printat aEtqf1 {f(x) =} printvalueat aEtqf2 f %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Active restriction %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% linethickness 0.48 color 255 50 50 ang_draw_parametric_curve x {-8;x<14;x+0.1}{x;(8-x)/2} linethickness .16 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Level curve @ xk %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% expression B {sqrt(f)} expression cB {90+f} color 10 10 cB ang_draw_parametric_curve t0 {0;t0<2*pi;t0+0.1}{B*cos(t0);B*sin(t0)} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Curve of objective function f(x) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% color 10 10 10 number ofx 18 number ofy 6 ang_point p0 18 6 ang_point p1 18 13 ang_point p1r 18.2 13 ang_point p2 14 6 ang_point p3 23 6 expression px {ofx+xk1/3} expression py {ofy+f/25} printat_rb p1r {f(x)} ang_point p px py drawvector p0 p1 linethickness .4 color 200 0 0 drawvector p2 p3 color 0 0 0 cmark p linethickness .4 trace p 10 10 240 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%