ptsp.gms : 명시적인 순열 열거로 해결된 외판원 문제 인스턴스

설명

이 모델에서는 특정 무료 슬롯 옵션 구문을 사용하여 모든 항목을 계산합니다.
도시의 순열. 각 순열의 비용을 계산합니다.
이를 통해 최적의 투어를 찾아보세요. 순열의 수 때문에
기하급수적으로 증가하므로 대규모 인스턴스에는 좋은 생각이 아니지만
이는 모든 순열을 생성하는 무료 슬롯 기능을 보여줍니다.
설정합니다.

키워드: 여행하는 세일즈맨 문제, 완전한 열거,
          무료 슬롯 언어 기능

소형 모델 유형 :무료 슬롯


카테고리 : 무료 슬롯 모델 라이브러리


메인 파일 : ptsp.gms   포함: br17.inc

$title 여행하는 외판원 문제 인스턴스는 명시적인 순열 열거(PTSP,SEQ=374)로 해결되었습니다.

$onText
이 모델에서는 특정 무료 슬롯 옵션 구문을 사용하여 모든 항목을 계산합니다.
도시의 순열. 각 순열의 비용을 계산합니다.
이를 통해 최적의 투어를 찾아보세요. 순열의 수 때문에
기하급수적으로 증가하므로 대규모 인스턴스에는 좋은 생각이 아니지만
이는 모든 순열을 생성하는 무료 슬롯 기능을 보여줍니다.
설정합니다.

키워드: 여행하는 세일즈맨 문제, 완전한 열거,
          무료 슬롯 언어 기능
$offText

$includebr17.inc

$설정되지 않은 경우 N $set N 7
$ifE %N%>17 $abort 최대 도시 수는 17입니다.

i(ii) '도시의 하위 집합' / i1*i%N% /;

별칭(i,j,k);

$eval pmax 사실(카드(i))

세트
   p '도시의 모든 순열' / p1*p%pmax% /
   m(p,ii,ii) '실제 순열';

* 무료 슬롯가 모든 순열을 생성하도록 합니다.
옵션 m > i;

bestTour(i,i)를 설정합니다.

스칼라 pObj, bestObj / inf /;

* 순열을 반복하고 순열/순회 비용을 계산합니다.
루프(p,
   pObj = 0;
   loop((i,j)$m(p,i,j), pObj = pObj + sum(m(p,i++1,k), c(j,k)););
   if(pObj < bestObj,
      bestTour(i,j) = m(p,i,j);
      bestObj = pObj;
   );
);
bestObj, bestTour 표시;