cross.gms : 알쿠인 강 건너기

설명

옥수수 한 부셸을 들고 거위를 동반한 농부
늑대가 강에 왔습니다. 그는 할 수 있는 보트를 발견했습니다
자신과 그의 소유물 중 하나(옥수수, 거위 또는
늑대 - 하지만 더 이상은 아닙니다. 이제 그는 옥수수를 혼자 둘 수 없었습니다.
거위도, 거위도 늑대와 함께 혼자 있는 것도 아니고,
다른 하나를 소비하십시오. 그럼에도 불구하고 그는 자신을 얻는 데 성공했습니다.
그리고 그의 물건은 무사히 강을 건넜습니다.

소형 모델 유형 :MIP


카테고리 : 피망 슬롯 모델 라이브러리


메인 파일 : cross.gms

$title 알쿠인 강 건너기 (CROSS,SEQ=191)

$onText
거위를 데리고 옥수수 한 부셸을 짊어진 농부
늑대가 강에 왔습니다. 그는 할 수 있는 보트를 발견했습니다
자신과 그의 소유물 중 하나(옥수수, 거위 또는
늑대 - 하지만 더 이상은 아닙니다. 이제 그는 옥수수를 혼자 둘 수 없었습니다.
거위도, 거위도 늑대와 함께 혼자 있는 것도 아니고,
다른 하나를 소비하십시오. 그럼에도 불구하고 그는 자신을 얻는 데 성공했습니다.
그리고 그의 물건은 무사히 강을 건넜습니다.

Borndoerfer, R, Groetschel, M 및 Loebel, A, Alcuin의
운송 문제와 정수 계획법. 콘라드 추세
Informationstechnik를 위한 Zentrum, 베를린, 1995.

Soren Nielsen 제공, 수리 과학 연구소
               코펜하겐대학교

키워드: 혼합정수선형계획법, 알쿠인의 수송 문제
$offText

세트
   i '아이템' / 거위, 늑대, 옥수수 /
   t '시간' / t1*t10 /;

매개변수 dir(t) '교차 - 가까운 곳에서 먼 곳은 +1 - 먼 곳에서 가까운 곳 -1';
dir(t) = power(-1,ord(t) - 1);

디렉토리 표시;

변수
   y(i,t) '1 시간 t에 항목이 먼 쪽에 있는 경우'
   cross(i,t) '강을 건너다'
   done(t) '먼 쪽의 모든 항목'
   nocross '교차하지 않는 기간의 수';

이진변수 y;
양수 변수 교차 완료;

방정식
   DefDone(i,t) '먼 쪽의 모든 것'
   DefCross(i,t) '교차점'
   림크로스(t)
   먹다없음1(t)
   먹다없음2(t)
   오브제;

DefCross(i,t+1).. y(i,t+1) =e= y(i,t) + dir(t)*cross(i,t);

DefDone(i,t) .. done(t) =l= y(i,t);

limCross(t+1).. sum(i, cross(i,t)) =l= 1;

EatNone1(t).. dir(t)*(y('goose',t) + y('wolf',t) - 1) =l= done(t);

EatNone2(t).. dir(t)*(y('goose',t) + y('corn',t) - 1) =l= done(t);

Obj..nocross =e= sum(t, done(t));

모델 강 / 모두 /;

y.fx(i,t)$(ord(t) = 1) = 0;

옵션 optCr = 0;
nocross를 최대화하는 mip를 사용하여 강을 해결합니다.

y.l, cross.l을 표시합니다.