설명
J. 브림버그, P. 한센, K.-W. Lih, N. Mladenovic, M. Breton 2003.
송유관 설계 문제. 운영 연구, Vol 51, No. 2 228-239
마이클 부시익, 후아니
기술 노트: 슬롯 게임를 사용한 송유관 설계 문제 해결
분기 및 절단 시설
기술 보고서, 슬롯 게임 Development Corp. 2003.
키워드: 혼합 정수 선형 프로그래밍, 분기 및 잘라내기 및 휴리스틱 기능,
파이프라인 설계, 네트워크 최적화
대형 모델 유형 :MIP
카테고리 : 슬롯 게임 모델 라이브러리
메인 파일 : bchoil.gms 포함: bcchoil_c.inc bchoil_d.inc bchoil_h.inc
$title BCH 시설을 이용한 석유 파이프라인 설계 문제 (BCHOIL,SEQ=288)
$onText
J. 브림버그, P. 한센, K.-W. Lih, N. Mladenovic, M. Breton 2003.
송유관 설계 문제. 운영 연구, Vol 51, No. 2 228-239
마이클 부시익, 후아니
기술 노트: 슬롯 게임를 사용한 송유관 설계 문제 해결
분기 및 절단 시설
기술 보고서, 슬롯 게임 Development Corp. 2003.
키워드: 혼합 정수 선형 프로그래밍, 분기 및 잘라내기 및 휴리스틱 기능,
파이프라인 설계, 네트워크 최적화
$offText
$onEcho > oilbase.inc
세트
n '송유관 네트워크의 노드'
nw(n) '노드의 하위 집합'
k '오일 파이프 유형'
kk(k) '파이프라인 유형 세트 감소'
regnode(n) '비포트 노드'
포트(n) '포트'
arc(n,n) '네트워크의 호';
매개변수
cap(k) 'k형 오일 파이프의 용량'
Pipecost(k) 'k 유형 용량의 화폐 단위'
p(n) '각 노드에서의 생산'
edgedist(n,n) '단방향 거리'
dist(n,n) '호의 거리';
스칼라
cap1 '1종 송유관 용량'
Pipecost1 '유형 1 파이프의 화폐 단위';
* 컷 생성을 위한 데이터 구조
세트
ss '밉 솔루션 인덱스' / 1*100 /
dsh(ss,n,n) '이전 정수 해의 하위 구조';
스칼라
사이트 '현재 솔루션';
별칭(n,nn,m);
변수
bk(n,n,k) '호의 k 유형 파이프에 대한 변수 빌드'
b(n,n) '호의 일부 파이프에 대한 변수 작성'
f(n,n) '호의 흐름 변수'
비용 '네트워크에 파이프를 설치하는 데 드는 비용';
이진변수 bk, b;
양의 변수 f;
방정식
obj '송유관 네트워크 건설 비용'
oneout(n) '각 노드당 최대 하나의 유출 흐름'
oneoutp(n) '각 생산 노드에 대해 하나의 유출 흐름'
bal(n) '흐름 보존 제약 조건'
bigM(n,n) '흐름 용량 제약'
defb(n,n) '추가 파이프 제약조건';
OBJ..
sum(arc(nw,n), dist(arc)*(pipecost1*b(arc) + sum(kk, 파이프 비용(kk)*bk(arc,kk)))) =e= 비용;
oneout(m)$(not p(m))..
sum((arc(m,n)), b(m,n)) =l= 1;
원아웃p(m)$p(m)..
sum((arc(m,n)), b(m,n)) =e= 1;
bal(regnode(nw))..
p(nw) =e= sum(arc(nw,m), f(nw,m)) - sum(arc(m,nw), f(m,nw));
bigM(호(nw,n))..
cap1*b(arc) + sum(kk, cap(kk)*bk(arc,kk)) =g= f(arc);
defb(아크(nw,n))..
sum(kk, bk(arc,kk)) =l= b(arc);
모델 오일 베이스 / 모두 /;
$offEcho
$include oilbase.inc
$include bcoil_d.inc
$echo heurcnt = 0; > pwl.ind
Execute_unload 'net.gdx', n k kk 포트 regnode arc p cap distpipecost cap1pipecost1;
사이트 사용자 = 1;
Execute_unload 'dsh.gdx', ss siter dsh;
$ifThenI %system.mip% == cplex $set 솔버 cplex
$else
$abort 'MIP 솔버 %system.mip%에는 BCH 기능을 사용할 수 없습니다.'
$endIf
$onEcho > %solver%.opt
userHeurCall bchoil_h.inc optCr 0 resLim 10 lo=2 lf=bchoil_c.log o=bchoil_h.lst --mipsolver=%system.mip%
userHeurFirst 5
userHeurObjFirst 5
사용자HeurFreq 20
userHeurInterval 1000
userCutCall bchoil_c.inc lo=2 lf=bchoil_c.log o=bchoil_c.lst --mipsolver=%system.mip%
userCutFirst 0
사용자컷주파수 0
userCutNewInt 예
$offEcho
$ifI %system.mip% == cplex $echo varsel 3 >> cplex.opt
nw(n) = 예;
오일베이스.opt파일 = 1;
mip를 사용하여 오일베이스 최소화 비용 해결;