limdom02.gms : 모델 내 변수에 대한 제한된 도메인의 성능 테스트

설명

크레이지 슬롯 31에서는 변수 영역을 제한하는 기능을 도입했습니다.
모델 선언문에서. 이 테스트에서는 더미 모델을 사용하여 이 새로운
이 기능은 명시적인 달러 조건이나 명시적인 달러 조건을 사용하는 것과 동일한 결과를 가져옵니다.
하위 집합. 또한 새로운 방법의 모델 생성 시간이 다음과 같은지 확인합니다.
doTimeTest가 설정된 경우 기존 방법 중 하나보다 나쁘지 않습니다.

기고자: Lutz Westermann, 2020년 3월

대형 모델 유형 :크레이지 슬롯


카테고리 : 크레이지 슬롯 테스트 라이브러리


메인 파일 : limdom02.gms

$title 모델 변수에 대한 제한된 도메인의 성능 테스트(limdom02,SEQ=813)

$onText
크레이지 슬롯 31에서는 변수 영역을 제한하는 기능을 도입했습니다.
모델 선언문에서. 이 테스트에서는 더미 모델을 사용하여 이 새로운
이 기능은 명시적인 달러 조건이나 명시적인 달러 조건을 사용하는 것과 동일한 결과를 가져옵니다.
하위 집합. 또한 새로운 방법의 모델 생성 시간이 다음과 같은지 확인합니다.
doTimeTest가 설정된 경우 기존 방법 중 하나보다 나쁘지 않습니다.

기고자: Lutz Westermann, 2020년 3월
$offText

i / i1 * i300 / 설정;
별칭(i,j,k);
하위(i,j,k)를 설정합니다.

sub(i,j,k)$(uniform(0,1)<0.1) = 예;

양수 변수 x(i,j,k);
변수 z;

방정식 objDLV 도메인 제한 변수와 함께 사용되는 더미 목적 함수
         objDOL 명시적 DOLlar 조건을 사용하는 더미 목적 함수
         objSUB SUBset을 사용하는 더미 목적 함수;

objDLV.. z =e= sum((i,j,k), x(i,j,k));
objDOL.. z =e= sum((i,j,k), x(i,j,k)$sub(i,j,k));
objSUB.. z =e= sum(sub, x(sub));

모델 mDLV / objDLV, x(sub) /;
모델 mDOL / objDOL /;
모델 mSUB / objSUB /;

$echo 크레이지 슬롯=크레이지 슬롯gms > 변환.opt

mDLV.optfile = 1;
mDOL.optfile = 1;
mSUB.optfile = 1;

스칼라 생성TimeDLV
       genTimeDOL
       genTimeSUB;

옵션 리미로우 = 0,
       림콜 = 0,
       솔프린트 = 꺼짐,
       lp = 변환;

mDLV min z를 풀려면 lp를 사용하세요.
genTimeDLV = mDLV.resGen;
Execute.CheckErrorLevel 'grep -v "크레이지 슬롯로 작성된 LP" 크레이지 슬롯gms > mDLV.gms';
mDOL min z를 풀려면 lp를 사용하세요.
genTimeDOL = mDOL.resGen;
Execute.CheckErrorLevel 'grep -v "크레이지 슬롯로 작성된 LP" 크레이지 슬롯gms > mDOL.gms';
mSUB min z를 해결하려면 lp를 사용하세요.
genTimeSUB = mSUB.resGen;
Execute.CheckErrorLevel 'grep -v "크레이지 슬롯로 작성된 LP" 크레이지 슬롯gms > mSUB.gms';

Execute.CheckErrorLevel '=diff -b mDLV.gms mDOL.gms';
Execute.CheckErrorLevel '=diff -b mDLV.gms mSUB.gms';

genTimeDLV, genTimeDOL, genTimeSUB 표시;

$if set doTimeTest abort$(genTimeDLV > genTimeDOL*1.1) 'DLV 생성 시간이 너무 김';