circlesp.gms : 원 둘러싸는 점 - 확률론적 예

설명

이것은 무료 슬롯 사이트/SNOPT 매뉴얼의 예입니다. 가장 작은 원 찾기
여기에는 주어진 포인트 수가 포함되어 있습니다.

소형 모델 유형 :SP


카테고리 : 무료 슬롯 사이트 EMP 라이브러리


메인 파일 : circlesp.gms

$title 원 둘러싸는 점 - 확률론적 예(CIRCLESP,SEQ=88)
$onText

이는 무료 슬롯 사이트/SNOPT 매뉴얼의 예입니다. 가장 작은 원 찾기
여기에는 여러 개의 특정 포인트가 포함되어 있습니다.

Gill, P E, Murray, W 및 Saunders, MA, 무료 슬롯 사이트/SNOPT: SQP 알고리즘
대규모 제약 최적화, 1988.

$offText
$크기를 설정하지 않은 경우 $크기 3 설정
i 포인트 설정 /p1*p%size%/;

매개변수
   x(i) x 좌표,
   y(i) y 좌표;

* 무작위 데이터로 채우기
x(i) = 균일(1,10);
y(i) = 균일(1,10);

변수
   원 중심의 x 좌표
   원 중심의 y 좌표
   r 반경;

방정식
   e(i) 점은 원 안에 있어야 합니다.

e(i)..sqr(x(i)-a) + sqr(y(i)-b) =l= sqr(r);

r.lo = 0;

매개변수 xmin,ymin,xmax,ymax;
xmin = smin(i, x(i));
ymin = smin(i, y(i));
xmax = smax(i, x(i));
ymax = smax(i, y(i));

* 시작점 설정
a.l = (x최소+x최대)/2;
b.l = (ymin+ymax)/2;
r.l = sqrt( sqr(a.l-xmin) + sqr(b.l-ymin) );

s 시나리오 s /s1*s27/ 설정
매개변수
    s_x(s,i), s_y(s,i);

dict / s.scenario를 설정하세요.''
           x.randvar.s_x
           y.randvar.s_y /;

파일 emp / '%emp.info%' /; put emp '* 문제 %무료 슬롯 사이트i%'; emp.pc=0;
루프(나,
   put / 'jrandvar x("' i.tl:0 '") y("' i.tl:0 '") '
           (1/3):6:2 법선(x(i),1):6:2 법선(y(i),1):6:2
           (1/3):6:2 법선(x(i),1):6:2 법선(y(i),1):6:2
           (1/3):6:2 일반(x(i),1):6:2 일반(y(i),1):6:2;
)
putclose / 'modeltype nlp' / '2단계 x y e r'

모델 m /all/;
r 시나리오 dict를 최소화하는 emp를 사용하여 m을 해결합니다.

* 이전 해결 시나리오를 사용하여 무료 슬롯 사이트의 암시적 NA 제약 조건으로 DE를 확장했습니다.
방정식 es(s,i), defobj;
양의 변수 rs(s);
변수 obj;

es(s,i).. sqr(s_x(s,i)-a) + sqr(s_y(s,i)-b) =l= sqr(rs(s));
defobj..obj =e= 합계(들, 1/카드(들)*rs(들));

모델 msi /es, defobj/;

xmin = smin((s,i), s_x(s,i));
ymin = smin((s,i), s_y(S,i));
xmax = smax((s,i), s_x(s,i));
ymax = smax((s,i), s_y(S,i));

* 시작점 설정
a.l = (x최소+x최대)/2;
b.l = (ymin+ymax)/2;
rs.l(s) = sqrt( sqr(a.l-xmin) + sqr(b.l-ymin) );

obj를 최소화하는 nlp를 사용하여 msi를 해결합니다.
abort$(abs(r.l-obj.l)>1e-6) 'EMP와 DE(암시적 NA) 솔루션이 다름', r.l, obj.l;

* 이전 해결 시나리오를 사용하여 무료 슬롯 사이트에서 명시적인 NA 제약 조건으로 DE를 확장했습니다.
방정식 ese(s,i), defnaa(s), defnab(s);
양수 변수 as(s), bs(s);

ese(s,i).. sqr(s_x(s,i)-as(s)) + sqr(s_y(s,i)-bs(s)) =l= sqr(rs(s));
defnaa(s-1)..as('s1') =e= as(s);
defnab(s-1).. bs('s1') =e= bs(s);

모델 mse /ese, defnaa, defnab, defobj/;

as.l(s) = (xmin+xmax)/2;
bs.l(s) = (ymin+ymax)/2;
rs.l(s) = sqrt( sqr(as.l(s)-xmin) + sqr(bs.l(s)-ymin) );

obj를 최소화하는 nlp를 사용하여 mse를 해결합니다.
abort$(abs(r.l-obj.l)>1e-6) 'EMP와 DE(명시적 NA) 솔루션이 다름', r.l, obj.l;