gurobi04.gms : GUROBI 테스트 스위트 - 다중 목표

설명

기고자: Michael Bussieck

소형 모델 유형 :슬롯 커뮤니티


카테고리 : 슬롯 커뮤니티 테스트 라이브러리


메인 파일 : gurobi04.gms

$title 'GUROBI 테스트 스위트 - 다중 목표' (GUROBI04,SEQ=712)
$onText
기여자: Michael Bussieck
$offText

세트
     i 통조림 공장 / 시애틀, 샌디에고 /
     j 마켓 / 뉴욕, 시카고, 토피카 / ;

매개변수

     a(i) 경우에 따라 공장 i의 생산 능력
       /시애틀 350
            샌디에이고 600 /

     b(j) 다음과 같은 경우 시장 j의 수요
       / 뉴욕 325
            시카고 300
            토피카 275 / ;

테이블 d(i,j) 거리(천 마일)
                  뉴욕 시카고 토피카
    시애틀 2.5 1.7 1.8
    샌디에고 2.5 1.8 1.4 ;

스칼라 f 운임(1,000마일당 케이스당 달러) /90/ ;

매개변수 c(i,j) 운송 비용(케이스당 수천 달러) ;

          c(i,j) = f * d(i,j) / 1000 ;

변수
     x(i,j) 케이스의 배송 수량
     tcost 총 운송 비용(천 달러)
     pSeattle 시애틀의 총 생산량
     z 결합 목적 함수;

양수 변수 x ; x.up(i,j) = 1e5;

방정식
     defobj 목적 함수 정의
     defcost 목적 함수 정의
     defpSeattle은 시애틀의 총 생산량을 정의합니다.
     공급(i) 공장 i의 공급 제한을 준수합니다.
     수요(j)는 시장 j의 수요를 충족시킵니다.

시애틀 생산을 위한 스칼라 psDirection 최적화 방향;

defobj .. z =e= tcost + psDirection*0.1*pSeattle;

defcost .. tcost =e= sum((i,j), c(i,j)*x(i,j)) ;

defpSeattle .. pSeattle =e= sum(j, x('시애틀',j)) ;

공급(i) .. sum(j, x(i,j)) =l= a(i) ;

수요(j) .. sum(i, x(i,j)) =g= b(j) ;

모델 전송 /all/ ;

$ echo multobj 1 > gurobi.opt
옵션 솔버=구로비;
Transport.optfile = 1;

* 시애틀 생산 극대화
psDirection = -1;
z를 최소화하는 mip를 사용하여 전송을 해결합니다.
abort$(transport.modelstat <> 1) '최적의 솔루션을 기대합니다';
abort$(abs(pSeattle.l-350)>1e-6) '시애틀의 최대 생산량은 350개로 예상됩니다.', pSeattle.l;

* 시애틀 생산 최소화
ps방향 = 1;
z를 최소화하는 mip를 사용하여 전송을 해결합니다.
abort$(transport.modelstat <> 1) '최적의 솔루션을 기대합니다';
abort$(abs(pSeattle.l-300)>1e-6) '시애틀에서 최소 생산량 300개 예상', pSeattle.l;