슬롯 머신gms : 합성 조리개 레이더 감시를 위한 임무 계획

설명

국방과학기술부 마이크로파레이더과
조직은 합성 개구 레이더를 사용하여 획득합니다.
선택된 지상 표적의 고해상도 이미지. 이는 이것을 사용한다
항공기에 장착된 장치로 최대 20개의 직사각형 영역을 스캔합니다.
해상도가 1 이하인 이미지를 얻기 위해 스와스(슬롯 머신)라고 함
미터. 지정된 순서의 스와스와
비행 경로는 매핑 소프트웨어를 사용하여 계획됩니다. 이전에 DSTO는
시각적으로 추적하여 미션에 가장 적합한 투어를 결정해 왔습니다.
시작 베이스부터 종료 베이스까지 가능한 스와스 시퀀스. 이
방법은 시간이 많이 걸리고 최적성을 보장하지 못했습니다.
이동한 거리. 우리는 계획을 세우기 위한 최적화 소프트웨어 도구를 개발했습니다.
미션 투어를 보다 효율적으로 수행할 수 있습니다. DSTO는 이제 최대로 임무를 계획할 수 있습니다.
20개의 스와스를 몇 초 만에 처리하는 데 걸리는 시간이 1시간이 아닙니다.
시각적 접근. 제안된 투어 길이는 평균적으로 다음과 같은 개선을 보여줍니다.
수동으로 생산된 것보다 15% 더 높습니다. 소프트웨어에는 다음이 포함됩니다.
비행 금지 구역의 운영 문제를 처리하는 방법 및
이미지와 관련된 그림자.

대형 모델 유형 :MIP


카테고리 : 슬롯 머신 모델 라이브러리


메인 파일 : 슬롯 머신gms   포함: swathdat.gdx

$title 합성 조리개 레이더 감시를 위한 임무 계획(슬롯 머신SEQ=325)

$onText
국방과학기술부 마이크로파레이더연구부
조직은 합성 개구 레이더를 사용하여 획득합니다.
선택된 지상 표적의 고해상도 이미지. 이는 이것을 사용한다
항공기에 장착된 장치로 최대 20개의 직사각형 영역을 스캔합니다.
해상도가 1 이하인 이미지를 얻기 위해 스와스(슬롯 머신)라고 함
미터. 지정된 순서의 스와스와
비행 경로는 매핑 소프트웨어를 사용하여 계획됩니다. 이전에 DSTO는
시각적으로 추적하여 미션에 가장 적합한 투어를 결정해 왔습니다.
시작 베이스부터 종료 베이스까지 가능한 스와스 시퀀스. 이
방법은 시간이 많이 걸리고 최적성을 보장하지 못했습니다.
이동한 거리. 우리는 계획을 세우기 위한 최적화 소프트웨어 도구를 개발했습니다.
미션 투어를 보다 효율적으로 수행할 수 있습니다. DSTO는 이제 최대로 임무를 계획할 수 있습니다.
20개의 스와스를 몇 초 만에 처리하는 데 걸리는 시간이 1시간이 아닙니다.
시각적 접근. 제안된 투어 길이는 평균적으로 다음과 같은 개선을 보여줍니다.
수동으로 생산된 것보다 15% 더 높습니다. 소프트웨어에는 다음이 포함됩니다.
비행 금지 구역의 운영 문제를 처리하는 방법 및
이미지와 관련된 그림자.

Panton, D M 및 Elbers, AW, 합성 조리개에 대한 임무 계획
레이더 감시. 인터페이스 29, 2(1999), 73-88.

키워드: 혼합 정수 선형 계획법, Miller-Tucker-Zemlin 하위 투어 제거,
          반복적인 하위 투어 제거, 여행하는 세일즈맨 문제, 군사 응용,
          네트워크 최적화, 합성 개구 레이더 감시
$offText

세트
   s '스와스' / s0*s20 /
   n '노드' / n1*n4 /
   sx(s,n) '유효한 슬롯 머신 노드 조합' / s0.n1, (s1*s20).set.n /
   a(s,n,s,n) '호';

별칭 (s,i,j), (n,np);

매개변수 l(s,n,s,n) '호 길이';

$gdxIn swathdat.gdx
$load l

a(sx,s,n) = l(sx,s,n);

* TSP형 모델
변수
   x(s,n,s,n) '노드 간 TSP 투어'
   y(s,s) '스와스 간 TSP 투어'
   z '목표';

이진변수 x, y;

방정식
   defobj '목표'
   defone(s) '스와스당 하나의 호 입력'
   defbal(s,n) '흐름 균형'
   defy(s,s) 'TSP 노드 투어에 의해 결정된 TSP 스와스 투어';

defobj.. z =e= sum(a, l(a)*x(a));

defone(s).. sum(a(sx,s,n), x(a)) =e= 1;

defbal(sx).. sum(a(s,n,sx), x(a)) - sum(a(sx,s,n), x(a)) =e= 0;

defy(i,j)$(not sameas(i,j)).. y(i,j) =e= sum(a(i,n,j,np), x(a));

$orgse를 설정하지 않은 경우 $goTo secuts
* 슬롯 머신 MIPLIB 2003 인스턴스의 원래 하위 투어 제거 제약 조건
양의 변수 u(s);

방정식 se(s,s) '하위 투어 제거';

se(i,j)$(ord(i) > 1이고 ord(j) > 1이고 sameas(i,j)가 아님)..
   u(i) - u(j) + 카드*y(i,j) =l= 카드-1;

u.fx('s0') = 0;

$goTo 해결

$label 초컷
세트
   cc '하위 투어 제거 컷' / c1*c150 /
   c(cc) '활성 컷';

c(cc) = 아니오;

매개변수
   cutcoeff(cc,s,s) '하위 투어 제거 컷에 대한 계수'
   rhs(cc) '하위 투어 제거 컷의 오른쪽';

cutcoeff(c,s,s) = 0;
rhs(c) = 0;

방정식 cut(cc) '동적 하위 투어 제거 컷';

cut(c).. sum((i,j), cutcoeff(c,i,j)*y(i,j)) =l= rhs(c);

$label 해결
모델 폭 / 모두 /;

옵션 optCr = 0, limRow = 0, limCol = 0, solPrint = off;

* 하위 투어 제거 제약 없이 해결
mip를 사용하여 슬롯 머신 min z를 해결합니다.

$if orgse 설정 $exit

세트
   t '투어' / t1*t25 /
   투어(i,j,t) '하위 투어'
   from(i) '항상 하나의 요소, 즉 from 슬롯 머신를 포함합니다.'
   next(j) '항상 하나의 요소를 포함합니다: to 슬롯 머신'
   Visited(i) '스와스가 이미 방문되었는지 플래그 지정'
   tt(t) '항상 하나의 요소를 포함합니다: 현재 하위 투어'
   curc(cc) '항상 하나의 요소를 포함합니다: 현재 SE 컷' / c1 /;

Scalar goon '루프 제어에 사용되는 플래그로 이동' / 1 /;

$eolCom //
동안(군 = 1,
   // 첫 번째 스와스에서 투어 시작
   (i) = 아니오;
   tt(t) = 아니요;
   투어(i,j,t) = 아니오;
   방문(i) = 아니오;
   from('s0') = 예;
   tt('t1') = 예;
   y.l(i,j) = round(y.l(i,j));
   동안(카드(부터),
      // 'from' 슬롯 머신 다음에 방문한 슬롯 머신를 찾습니다.
      다음(i) = 아니요;
      loop((from,i)$y.l(from,i), next(i) = yes;);
      투어(from,next,tt) = 예;    // 테이블에 저장
      방문(from) = 예;    // 'from'을 방문한 것으로 표시
      from(j) = next(j);
      if(sum(visited(next),1) > 0, // 투어 시작 시점으로 돌아온 경우
         // 새로운 하위 투어의 시작점을 찾습니다.
         tt(t) = tt(t-1);
         (i) = 아니오;
         군 = 1;
         loop(i$(방문하지 않음(i) 및 goon), from(i) = yes; goon = 0;);
      );
   );
   전시 투어;

   if(tt('t2'),
      군 = 0; // 한 번만 둘러보기 -> 중지
   else // else: 컷을 소개합니다.
      // 두 번의 투어의 경우 보완 삭감을 얻으므로 긴 투어를 제거합니다.
      if(tt('t3'),
         if(sum(tour(i,j,'t1'),1) < sum(tour(i,j,'t2'),1),
            투어(i,j,'t2') = 아니오;
         그렇지 않으면
            투어(i,j,'t1') = 투어(i,j,'t2');
            투어(i,j,'t2') = 아니오;
         );
         tt('t2') = 예;
      );
      군 = 1;
      루프(t$군,
         rhs(curc) = -1;
         방문(i) = sum(tour(i,j,t),1);
         루프(투어(i,j,t),
            cutcoeff(curc,i,visited) = 1;
            rhs(curc) = rhs(curc) + 1;
         );
         c(curc) = 예;
         curc(cc) = curc(cc-1);
         goon = 카드(curc)이고 tt(t+1)가 아닙니다.
      );
      abort$(card(curc) = 0) 'cc를 작게 설정';
      z를 최소화하는 mip를 사용하여 슬롯 머신를 해결합니다.
      군 = 1;
   );
);