limdom04.gms : 모델 내 변수에 대한 제한된 도메인에 대한 고급 테스트

설명

슬롯 나라 31에서는 변수 영역을 제한하는 기능을 도입했습니다.
모델 선언문에서. 이 테스트에서는 더미 모델을 사용하여 이 새로운
이 기능은 명시적인 달러 조건을 사용하는 것과 동일한 결과를 가져옵니다.
이 테스트의 초점은 다음과 같이 인덱스 사용에 대한 중요하지 않은 사례에 있습니다.
지연 및 리드 작업, 명시적 레이블 또는 싱글톤 세트.

기고자: Lutz Westermann, 2020년 3월

소형 모델 유형 :슬롯 나라


카테고리 : 슬롯 나라 테스트 라이브러리


메인 파일 : limdom04.gms

$title 모델의 변수에 대한 제한된 도메인에 대한 고급 테스트(limdom04,SEQ=815)

$onText
슬롯 나라 31에서는 변수 영역을 제한하는 기능을 도입했습니다.
모델 선언문에서. 이 테스트에서는 더미 모델을 사용하여 이 새로운
이 기능은 명시적인 달러 조건을 사용하는 것과 동일한 결과를 가져옵니다.
이 테스트의 초점은 다음과 같이 인덱스 사용에 대한 중요하지 않은 사례에 있습니다.
지연 및 리드 작업, 명시적 레이블 또는 싱글톤 세트.

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

i / i1 * i20 / 설정;
별칭(i,j,k,l);
하위(i,j,k)를 설정합니다.
싱글톤 세트 si(i) / i12 /;
별칭(si,sj,sk);

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

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

방정식 obj 더미 목적 함수
         도메인 제한 변수가 있는 plainDLV 일반 인덱스
         plainDOL 명시적 DOLlar 조건을 사용하는 일반 인덱스
         도메인 제한 변수가 있는 지연 및 선두 연산자가 있는 lagLeadDLV 지수
         명시적인 DOLlar 조건을 사용하는 시차 및 선행 연산자가 있는 lagLeadDOL 지수
         도메인 제한 변수가 있는 명시적 레이블이 있는 labelDLV 인덱스
         명시적 DOLlar 조건을 사용하는 명시적 라벨이 있는 labelDOL 인덱스
         도메인 제한 변수가 있는 싱글톤 세트가 있는 SingleDLV 인덱스
         명시적 DOLlar 조건을 사용하는 싱글톤 세트가 있는 SingleDOL 인덱스
         suffixDLV 도메인 제한 변수가 있는 변수에 접미사 사용
         suffixDOL 명시적 DOLlar 조건을 사용하여 변수에 접미사 사용
         ;

obj..z =e= 1;

plainDLV..sum((i,j,k), x(i,j,k)) =l= 42;
plainDOL.. sum((i,j,k), x(i,j,k)$sub(i,j,k)) =l= 42;

lagLeadDLV.. sum((i,j,k), x(i-1,j+[2+6/3-ord(j)+card(k)],k+[min(5,ceil(sum(l,sqr(0.2))))])) =l= 42;
lagLeadDOL..sum((i,j,k), x(i-1,j+[2+6/3-ord(j)+카드(k)],k+[min(5,ceil(sum(l,sqr(0.2))))])$sub(i-1,j+[2+6/3-ord(j)+card(k)],k+[min(5,ceil(sum(l,sqr(0.2))))])) =l= 42;

labelDLV.. sum((j,k), x('i11',j,'i12')) =l= 42;
labelDOL.. sum((j,k), x('i11',j,'i12')$sub('i11',j,'i12')) =l= 42;

SingleDLV.. sum((si,sj,sk(k)), x(si,sj,k)) =l= 42;
SingleDOL.. sum((si,sj,sk(k)), x(si,sj,k)$sub(si,sj,k)) =l= 42;

모델 mDLV / obj, plainDLV, lagLeadDLV, labelDLV, SingleDLV, x(sub) /;
모델 mDOL / obj, plainDOL, lagLeadDOL, labelDOL, SingleDOL /;

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

mDLV min z를 풀려면 lp를 사용하세요.
Execute.CheckErrorLevel 'grep -v "슬롯 나라로 작성된 LP" 슬롯 나라gms > mDLV.gms';
mDOL min z를 풀려면 lp를 사용하세요.
Execute.CheckErrorLevel 'grep -v "슬롯 나라로 작성된 LP" 슬롯 나라gms > mDOL.gms';

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

$onSuffixDLVars

suffixDLV.. sum((i,j,k), x('i11',j,'i12' ) * x.l(i-1,j+[2+6/3-ord(j)+card(k)],k+[min(5,ceil(sum(l,sqr(0.2))))])) =l= 42;
suffixDOL.. sum((i,j,k), x('i11',j,'i12')$sub('i11',j,'i12') * x.l(i-1,j+[2+6/3-ord(j)+card(k)],k+[min(5,ceil(sum(l,sqr(0.2))))])$sub(i-1,j+[2+6/3-ord(j)+card(k)],k+[min(5,ceil(sum(l,sqr(0.2))))])) =l= 42;

모델 mDLVSuf / obj, suffixDLV, x(sub) /;
모델 mDOLSuf / obj, suffixDOL /;

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

mDLVSuf min z를 풀려면 lp를 사용하세요.
Execute.CheckErrorLevel 'grep -v "슬롯 나라로 작성된 LP" 슬롯 나라gms > mDLVSuf.gms';
mDOLSuf min z를 풀려면 lp를 사용하세요.
Execute.CheckErrorLevel 'grep -v "슬롯 나라로 작성된 LP" 슬롯 나라gms > mDOLSuf.gms';

Execute.CheckErrorLevel '=diff -b mDLVSuf.gms mDOLSuf.gms';