$ontext Polygon Find the polygon of maximal area, among all polygons with nv sides and diameter less than or equal to 1. $offtext $if set n $set nv %n% $if not set nv $set nv 10 set i sides /i1 * i%nv%/; alias(i,j) scalar pi positive variables r(i) theta(i) variable polygon_area; equations obj distance(i,j) ordered(i); * Objective function: obj.. polygon_area =E= 0.5 * sum(j(i+1), r(i)*r(i+1)*sin(theta(i+1)-theta(i))); * Constraints: distance(i,j)$(ord(j)>ord(i)).. sqr(r(i))+sqr(r(j))- 2*r(i)*r(j)*cos(theta(j)-theta(i)) =L=1; ordered(i+1).. theta(i) =L= theta(i+1); pi = 2*arctan(inf); r.up(i) = 1; theta.up(i) = pi; r.l(i) = 4*ord(i)*(card(i)+1-ord(i))/sqr(card(i)+1); theta.l(i) = pi*ord(i)/card(i); model polygon /all/; $iftheni x%mode%==xbook polygon.iterlim=5000; option reslim = 3620; $endif solve polygon using nlp maximizing polygon_area; display polygon_area.l; * End polygon