참조
카테고리 : 슬롯 커뮤니티 NOA 라이브러리
메인파일 : polygon.gms
$onText
다각형
nv 변을 갖는 모든 다각형 중에서 최대 면적의 다각형을 찾습니다.
직경이 1보다 작거나 같습니다.
$offText
$if 세트 n $set nv %n%
$설정되지 않은 경우 nv $set nv 10
i 면 설정 /i1 * i%nv%/;
별칭(i,j)
스칼라 파이
긍정적인 변수
r(i)
세타(i)
변수
다각형_지역;
방정식
객체
거리(i,j)
주문한(i);
* 목적 함수:
obj..polygon_area =E= 0.5 * sum(j(i+1), r(i)*r(i+1)*sin(theta(i+1)-theta(i)));
* 제약:
거리(i,j)$(ord(j)>ord(i)).. sqr(r(i))+sqr(r(j))-
2*r(i)*r(j)*cos(세타(j)-세타(i)) =L=1;
순서(i+1).. 세타(i) =L= 세타(i+1);
파이 = 2*arctan(inf);
r.up(i) = 1;
theta.up(i) = 파이;
r.l(i) = 4*ord(i)*(카드(i)+1-ord(i))/sqr(카드(i)+1);
theta.l(i) = pi*ord(i)/card(i);
모델 다각형 /all/;
$ifThenI x%mode%==xbook
다각형.iterlim=5000;
옵션 reslim = 3620;
$endIf
Polygon_area를 최대화하는 nlp를 사용하여 다각형을 해결합니다.
다각형 영역을 표시합니다.l;
* 끝 다각형