모델이 완성되면 분석가가 다양한 슬롯 커뮤니티 가정의 결과를 비교하는 대체 슬롯 커뮤니티를 조사하는 데 거의 항상 사용됩니다. 이 튜토리얼에서는 그러한 방법을 보여 드리겠습니다.비교 분석(라고도 함감도 분석)은 GAMS로 완료됩니다. 먼저 입력 매개변수를 수동으로 변경하고, 반복적인 해결을 사용하고, 보고서를 생성하는 쉬운 접근 방식을 보여 드리겠습니다. 두 번째 단계에서는 또 다른 접근 방식을 소개하겠습니다.루프 구조는 슬롯 커뮤니티를 자동으로 순환하는 데 사용됩니다. 자동화된 접근 방식에 대한 섹션은 초기 섹션에서 개발된 코드 블록을 기반으로 구축되므로 수동 접근 방식에 대한 섹션을 먼저 읽는 것이 좋습니다.
수동 접근
모델의 일부 입력 데이터를 변경하여 비교 분석을 하고 싶다고 가정해 보겠습니다. 농장 이익 극대화 모델을 예로 사용하겠습니다.farmcomp.gms. 다음 기본 상품 가격 벡터는 입력 데이터의 일부입니다.
매개변수 가격(1차) '제품 가격(USD)'
/옥수수 2.20, 대두 5.00, 쇠고기 0.50 /;우리는 이 데이터를 기본 사례로 사용하고 이를 두 가지 대체 슬롯 커뮤니티와 비교할 것입니다. 첫 번째 슬롯 커뮤니티에서는 쇠고기 가격을 $0.70으로 변경하고 두 번째 슬롯 커뮤니티에서는 옥수수 가격을 $2.70으로 변경합니다.
GAMS 파일farmrep.gms은 예시 모델과 관련이 있습니다. 보고서 작성을 위한 계산만 포함되어 있으며 달러 제어 옵션과 함께 포함될 수 있습니다.$include. GAMS 프로그램에서 실행된 마지막 해결 방법을 기반으로 보고서를 생성합니다.farmcomp.gms. 보고서는 여러 테이블로 구성됩니다. 우리는 테이블에 집중할 것입니다.농장 요약매개변수와 연결된 것요약. 관련 코드는 다음과 같습니다.
모든 'alitems' 설정
/ 옥수수, 콩, 쇠고기, 소,
물, 경작지, 목초지,
비료, 종자, 기타 비용, 수의학, 보충제,
"4월 노동", "5월 노동", "여름 노동", "9월 노동", "10월 노동",
가축 사료, 총 / ;
측정값 '출력 측정값' 설정
/ "순이익", "토지 이용", "건식 작물", "Irr 작물",
"가축", "자원가치", "제품가치" /
매개변수 요약(alli,measures) '팜 요약';매개변수에 대한 표를 참고하세요요약세트의 요소인 상품에 대한 행을 포함합니다알리및 집합의 모든 요소에 대한 열조치.
우리는 세 번째 GAMS 파일을 사용할 것입니다.mancomp.gms, 비교 분석을 위해. 세 번째 GAMS 파일의 코드는 다음과 같습니다.
$include farmcomp.gms
가격 표시;
$include farmrep.gms
가격("쇠고기") = 0.70;
순이익을 극대화하는 LP를 사용하여 농장을 해결합니다.
가격 표시;
$include farmrep.gms
가격("옥수수") = 2.70;
순이익을 극대화하는 LP를 사용하여 농장을 해결합니다.
가격 표시;
$include farmrep.gms이 코드는 먼저 보고서에 대한 세트 정의를 포함하는 원본 모델을 해결하고 초기 가격을 표시하며 보고서를 생성합니다. 두 번째 단계에서 가격은쇠고기이 $0.70으로 변경되고, 수정된 모델이 해결되고, 첫 번째 대체 슬롯 커뮤니티의 가격이 표시되고 보고서가 생성됩니다. 세 번째 단계에서 가격은옥수수이 $2.70으로 변경되고 모델이 다시 해석되며 두 번째 대체 슬롯 커뮤니티의 가격이 표시되고 세 번째 보고서가 생성됩니다. 두 번째 대체 슬롯 커뮤니티(세 번째 해결)에서는 쇠고기 가격이 0.70달러입니다. 두 번째 실행 후 기본 수준으로 재설정되지 않았기 때문입니다.
매개변수와 연관된 3개의 테이블이 있습니다요약목록 파일에서 각 해결에 대해 하나씩. 첫 번째 테이블은 기본 사례와 관련된 결과를 보고합니다.
-- 279 PARAMETER 요약 농장 요약
순이익 토지이용 Dry Cropp~ Irr Cropp~ 가축자원 ~ 제품 V~
옥수수 20.00 200.00 2.20
대두 480.00 5.00
쇠고기 0.50
소 615.79
물 16.83
농경지 700.00 128.49
목초지 130.00 84.26
4월 노동 32.34
5월 노동 27.01
10월 노동 11.50
소사료 4.71
합계 162685.05 500.00 200.00두 번째 테이블은 쇠고기 가격이 $0.70로 변경된 첫 번째 대체 슬롯 커뮤니티의 결과를 보고합니다.
-- 351 PARAMETER 요약 농장 요약
순이익 토지이용 Dry Cropp~ Irr Cropp~ 가축자원 ~ 제품 V~
옥수수 22.84 160.85 2.34
대두 489.86 5.00
쇠고기 0.70
소 866.67
농경지 673.55
목초지 130.00 1456.90
4월 노동 82.29
5월 노동 80.53
9월 노동 53.57
10월 노동 46.21
소사료 4.89
합계 373686.10 512.70 160.85그리고 세 번째 테이블은 옥수수 가격이 $2.70로 변경되고 쇠고기 가격이 $0.70에 유지되는 두 번째 대체 슬롯 커뮤니티의 결과를 보고합니다.
---- 423 PARAMETER 요약 농장 요약
순이익 토지이용 Dry Cropp~ Irr Cropp~ 가축자원 ~ 제품 V~
옥수수 31.98 200.00 2.70
대두 410.24 5.00
쇠고기 0.70
소 866.67
물 15.99
농경지 642.22
목초지 130.00 1316.09
4월 노동 61.39
5월 노동 61.72
9월 노동 84.92
10월 노동 87.21
소사료 5.36
합계 375839.30 442.22 200.00비교 분석을 수행하는 이 빠른 방법에는 다음과 같은 단점이 있습니다.
- 관련 출력이 140줄 이상에 걸쳐 있습니다.
- 교차 슬롯 커뮤니티 보고서가 없습니다.
- 두 번째 대안 슬롯 커뮤니티에서 쇠고기 가격은 원래 기본 가격으로 자동 재설정되지 않았기 때문에 문제가 있습니다.
- 해결 및 보고서 작성 처리가 반복됩니다.
처음 두 가지 문제는 섹션에서 다루어질 것입니다.교차 슬롯 커뮤니티 보고서 작성,세 번째 문제에 대한 해결책은 섹션에서 제공됩니다.데이터를 기본 수준으로 재설정그리고 마지막 문제를 해결할 대체 접근 방식이 섹션에 제시되어 있습니다.자동화된 접근 방식 - 반복 작업 방지.
교차 슬롯 커뮤니티 보고서 작성
우리는 세 번째 GAMS 파일의 수정된 버전에 두 개의 새로운 세트와 새로운 매개변수를 도입하여 교차 슬롯 커뮤니티 보고서를 생성할 것입니다.mancompb.gms:
슬롯 커뮤니티 설정 / 기본, 쇠고기, 쇠고기 옥수수 /;
순서 설정 / "슬롯 커뮤니티 설정", "슬롯 커뮤니티 결과"/;
매개변수 savsumm(ordr,*,alli,scenarios) '비교 팜 요약';
savsumm("슬롯 커뮤니티 설정","price",primary,"base") = 가격(기본);
savsumm("슬롯 커뮤니티 결과",measures,alli,"base") = summary(alli,measures);세트에 주의하세요슬롯 커뮤니티기본 사례와 두 가지 대체 슬롯 커뮤니티 및 세트를 포함합니다.주문다른 실행의 가정과 결과를 저장할 장소를 소개합니다. 새로운 매개변수savsumm매개변수와 유사함요약위에 소개되었지만 두 개의 추가 차원이 있습니다. 첫 번째 할당은 가격 벡터의 현재 설정을 복사하고 두 번째 할당은 매개변수에 저장된 결과를 복사합니다.요약.
전체 코드는 다음과 같습니다:
$include farmcomp.gms
$include farmrep.gms
순서 설정 / "슬롯 커뮤니티 설정", "슬롯 커뮤니티 결과" /;
슬롯 커뮤니티/베이스, 쇠고기, 쇠고기 옥수수/설정;
매개변수 savsumm(ordr,*,alli,scenarios) '비교 팜 요약';
savsumm("슬롯 커뮤니티 설정","price",primary,"base") = 가격(기본);
savsumm("슬롯 커뮤니티 결과",measures,alli,"base") = summary(alli,measures);
가격("쇠고기") = 0.70;
순이익을 극대화하는 LP를 사용하여 농장을 해결합니다.
가격 표시 ;
$include farmrep.gms
savsumm("슬롯 커뮤니티 설정","price",primary,"beefp") = 가격(기본);
savsumm("슬롯 커뮤니티 결과",measures,alli,"beefp") = summary(alli,measures);
가격("옥수수") = 2.70;
가격 표시 ;
순이익을 극대화하는 LP를 사용하여 농장을 해결합니다.
$include Farmrep.gms
savsumm("슬롯 커뮤니티 설정","price",primary,"beefcorn") = 가격(기본);
savsumm("슬롯 커뮤니티 결과",measures,alli,"beefcorn") = summary(alli,measures);
옵션 savsumm:2:3:1;
savsumm 표시;다음에 대한 할당의 마지막 색인을 관찰하십시오.savsumm이다"기본"첫 번째 해결 후,"쇠고기"두 번째 해결 후"쇠고기콘"세 번째 해결 후. 코드의 끝에서 두 번째 줄에 있는 옵션 문은 뒤에 나오는 표시 문에서 생성된 출력을 사용자 지정합니다. 자세한 내용은 섹션을 참조하세요.로컬 디스플레이 제어. 목록 파일에는 다음 출력이 포함됩니다.
-- 436 PARAMETER savsumm 비교 팜 요약
기본 쇠고기 쇠고기 옥수수
슬롯 커뮤니티 설정 .가격 .옥수수 2.20 2.20 2.70
슬롯 커뮤니티 설정 .가격 .대두 5.00 5.00 5.00
슬롯 커뮤니티 설정 .가격 .쇠고기 0.50 0.70 0.70
슬롯 커뮤니티 결과.순이익.총액 162685.05 373686.10 375839.30
슬롯 커뮤니티 결과. 토지 이용. 농경지 700.00 673.55 642.22
슬롯 커뮤니티 결과. 토지 이용. 목초지 130.00 130.00 130.00
슬롯 커뮤니티 결과.건작.옥수수 20.00 22.84 31.98
슬롯 커뮤니티 결과.건작물.대두 480.00 489.86 410.24
슬롯 커뮤니티 결과.건작.합계 500.00 512.70 442.22
슬롯 커뮤니티 결과.Irr 자르기.옥수수 200.00 160.85 200.00
슬롯 커뮤니티 결과.Irr 자르기.총계 200.00 160.85 200.00
슬롯 커뮤니티 결과.가축.소 615.79 866.67 866.67
슬롯 커뮤니티 결과.자원 가치.물 16.83 15.99
슬롯 커뮤니티 결과.자원 가치.경작지 128.49
슬롯 커뮤니티 결과.자원 가치.목지 84.26 1456.90 1316.09
슬롯 커뮤니티 결과.자원 가치.4월 노동 32.34 82.29 61.39
슬롯 커뮤니티 결과.자원 가치.5월 노동 27.01 80.53 61.72
슬롯 커뮤니티 결과.자원 가치.9월 인건비 53.57 84.92
슬롯 커뮤니티 결과.자원 가치.10월 노동 11.50 46.21 87.21
슬롯 커뮤니티 결과.제품가치.옥수수 2.20 2.34 2.70
슬롯 커뮤니티 결과.제품가치.대두 5.00 5.00 5.00
슬롯 커뮤니티 결과.제품가치.쇠고기 0.50 0.70 0.70
슬롯 커뮤니티 결과.제품가치.소사료 4.71 4.89 5.36이 교차 슬롯 커뮤니티 보고서에서는 모든 출력이 하나의 테이블에 있으며 기본 사례를 두 가지 대체 슬롯 커뮤니티와 쉽게 비교할 수 있습니다.
추가 매개변수를 도입하여 백분율 변화 계산을 추가할 수도 있습니다.savsummp:
매개변수 savsummp(ordr,*,alli,scenarios) '비교 팜 요약(% chg)'; savsummp(ordr,measures,alli,scenarios)$savsumm(ordr,measures,alli,"base") = round [savsumm(ordr,measures,alli,scenarios) - savsumm(ordr,measures,alli,"base")]*100 / savsumm(ordr,measures,alli,"base"),1 ; savsummp(ordr,측정값,alli,슬롯 커뮤니티) $[(savsumm(ordr,measures,alli,"base") = 0) 및 (savsumm(ordr,measures,alli,scenarios) <> 0)] = 나; 옵션 savsummp:1:3:1; savsummp 표시;
두 할당문 모두 다음과 같습니다.조건부 할당. 첫 번째 할당은 소수점 이하 한 자리로 반올림된 백분율 변경을 계산하고 두 번째 할당은 백분율 변경을 다음으로 설정합니다.NA기본 사례의 값이 0인 경우. display 문에 의해 생성된 출력은 다음과 같습니다.
-- 450 매개변수 savsummp 비교 팜 요약(% chg)
쇠고기 옥수수
슬롯 커뮤니티 결과.Irr 자르기.옥수수 -19.6
슬롯 커뮤니티 결과.Irr 자르기.총계 -19.6
슬롯 커뮤니티 결과.가축.소 40.7 40.7
슬롯 커뮤니티 결과.자원 가치.물 -100.0 -5.0
슬롯 커뮤니티 결과.자원 가치.경작지 -100.0 -100.0
슬롯 커뮤니티 결과.자원 가치.목장지 1629.0 1461.9
슬롯 커뮤니티 결과.자원 가치.4월 노동 154.4 89.8
슬롯 커뮤니티 결과.자원 가치.5월 노동 198.1 128.5
슬롯 커뮤니티 결과.자원 가치.9월 인건비 NA NA
슬롯 커뮤니티 결과.자원 가치.10월 인건비 301.8 658.4
슬롯 커뮤니티 결과.제품가치.옥수수 6.4 22.7
슬롯 커뮤니티 결과.제품가치.쇠고기 40.0 40.0
슬롯 커뮤니티 결과.제품가치.소사료 3.9 13.8데이터를 기본 수준으로 재설정
위의 예에서 쇠고기 가격은 첫 번째 대체 슬롯 커뮤니티에서 $0.70으로 변경되었으며 두 번째 대체 슬롯 커뮤니티에서는 수동으로 기본 수준으로 재설정하지 않았기 때문에 $0.70에 유지되었습니다. 그러나 대부분의 경우 사용자는 새 슬롯 커뮤니티를 실행하기 전에 모든 데이터를 기본 수준으로 재설정하는 것을 선호합니다. 이는 기본 수준 데이터를 새 매개변수에 저장하여 수행할 수 있습니다.저장가격, 그리고 각 슬롯 커뮤니티 전에 데이터를 기본 수준으로 재설정합니다. 세 번째 GAMS 파일의 다음 최종 버전에서는,mancompc.gms, 상품 가격 수준은 각각의 새로운 실행 전에 재설정됩니다.
$include farmcomp.gms
$include farmrep.gms
매개변수 saveprice(alli) '저장된 가격';
saveprice(alli) = 가격(alli);
슬롯 커뮤니티/베이스, 쇠고기, 쇠고기 옥수수/설정;
매개변수 savsumm(ordr,*,alli,scenarios) '비교 팜 요약';
savsumm("슬롯 커뮤니티 설정","price",primary,"base") = 가격(기본);
savsumm("슬롯 커뮤니티 결과",measures,alli,"base") = summary(alli,measures);
가격(알리) = 저장가격(알리);
가격("쇠고기" ) = 0.70;
순이익을 극대화하는 LP를 사용하여 농장을 해결합니다.
가격 표시 ;
$include farmrep.gms
savsumm("슬롯 커뮤니티 설정","price",primary,"beefp") = 가격(기본);
savsumm("슬롯 커뮤니티 결과",measures,alli,"beefp") = summary(alli,measures);
가격(알리) = 저장가격(알리);
가격("옥수수") = 2.70;
가격 표시 ;
순이익을 극대화하는 LP를 사용하여 농장을 해결합니다.
$include farmrep.gms
savsumm("슬롯 커뮤니티 설정","price",primary,"beefcorn" ) = 가격(기본);
savsumm("슬롯 커뮤니티 결과",measures,alli,"beefcorn") = summary(alli,measures);
옵션 savsumm:2:3:1;
savsumm 표시;이 섹션에서는 교차 슬롯 커뮤니티 보고서를 포함하고 각각의 새로운 슬롯 커뮤니티가 실행되기 전에 데이터를 재설정하는 등 수동으로 비교 분석을 수행하는 방법을 설명했습니다. 그러나 해결 및 보고서 처리 방법에는 여전히 많은 반복이 있습니다. 이 문제는 다음 섹션에서 다루겠습니다.
자동화된 접근 방식 - 반복 작업 방지
해결 및 보고서 작성에 대한 반복적인 지시를 피하는 비교 분석의 기본 구조는 다음에 설명되어 있습니다.아래 그림. 처음 세 개의 상자는 GAMS 프로그램의 일반적인 부분인 준비 단계를 나타냅니다. 초기 데이터가 설정되고 모델이 정의되고 해결됩니다. 비교 모델 분석은 "1단계"라고 표시된 상자에서 시작됩니다. 1단계에서는 슬롯 커뮤니티의 이름이 소개되고 슬롯 커뮤니티 데이터가 정의됩니다. 2단계에서는 슬롯 커뮤니티 실행 중에 변경될 기본 데이터가 새 매개변수에 저장됩니다. 나중에 이 매개변수를 사용하여 각각의 새로운 슬롯 커뮤니티가 실행되기 전에 데이터를 기본 수준으로 복원할 것입니다. 3단계부터 루프에 들어갑니다. 여기서 루프 세트는 1단계에서 소개된 슬롯 커뮤니티 세트입니다. 평소와 같이 루프의 명령문은 분석할 각 슬롯 커뮤니티에 대해 실행됩니다. 첫 번째 문은 데이터를 기본 수준으로 복원합니다(3단계). 따라서 우리는 항상 동일한 데이터로 시작합니다. 4단계에서는 현재 슬롯 커뮤니티에 대한 데이터와 모델이 업데이트되고 5단계에서는 모델이 해결됩니다. 6단계에서는 개별 슬롯 커뮤니티에 대한 보고서가 생성됩니다. 7단계에서는 교차 슬롯 커뮤니티 비교 보고서에 대한 매개변수가 저장됩니다. 8단계에서는 더 많은 슬롯 커뮤니티를 해결해야 하는지 확인하고, 이 경우 모든 슬롯 커뮤니티가 완료될 때까지 3~8단계를 반복합니다. 마지막으로 슬롯 커뮤니티 전반에 걸쳐 저장된 정보를 제공하는 비교 보고서를 표시합니다.
이 흐름도는 파일에 구현되어 있습니다.비교.gms아래에 나와 있습니다. 섹션에서 논의된 농장 이익 극대화 사례를 기반으로 한다는 점에 유의하세요.수동 접근위. 모든 세트와 매개변수는 위 섹션에 소개되었으며 표만 소개되었습니다.경가격1단계 구현이 새로워졌습니다.
*1단계 - 설정 슬롯 커뮤니티
순서 설정 / "슬롯 커뮤니티 설정", "슬롯 커뮤니티 결과" /;
슬롯 커뮤니티/베이스, 쇠고기, 쇠고기 옥수수/설정;
매개변수 savsumm(ordr,*,alli,scenarios) '비교 팜 요약';
테이블 scenprice(primary,scenarios) '슬롯 커뮤니티별 가격 변동'
기본 쇠고기 쇠고기 옥수수
옥수수 2.70
콩
쇠고기 0.70 ;
*2단계 - 데이터 저장
매개변수 savprice(primary) '1차 상품 가격 저장';
savprice(기본) = 가격(기본);
*3단계 - 데이터를 기본 수준으로 재설정
루프(슬롯 커뮤니티,
가격(기본) = savprice(기본);
*4단계 - 슬롯 커뮤니티에 필요한 수준으로 데이터 변경
가격(기본)$scenprice(기본,슬롯 커뮤니티) = scenprice(기본,슬롯 커뮤니티);
가격 표시;
*5단계 - 모델 해결
순이익을 극대화하는 LP를 사용하여 농장을 해결합니다.
*6단계 - 단일 슬롯 커뮤니티 보고서 작성
$include farmrep.gms
*7단계 - 교차 슬롯 커뮤니티 보고서 작성
savsumm("슬롯 커뮤니티 설정","price",primary,scenarios) = 가격(기본);
savsumm("슬롯 커뮤니티 결과",measures,alli,scenarios) = summary(alli,measures);
*8단계 - 루프 끝
);
*9단계 - 최종 결과 계산 및 표시
옵션 savsumm:2:3:1;
savsumm 표시;이 자동 접근 방식을 용이하게 하는 주요 기능은 루프 문이라는 점에 유의하세요. 루프 문은 섹션에서 소개되고 논의됩니다.루프 문. 또한 4단계에서는 매개변수의 각 슬롯 커뮤니티에 대해 0이 아닌 항목이 있는 기본 상품에 대한 데이터 변경을 제한하기 위해 조건부 할당을 사용했습니다.경가격. 조건부 할당에 대한 자세한 내용은 섹션을 참조하세요.조건부 할당.
슬롯 커뮤니티 추가
위의 자동화된 비교 분석을 구현하면 새 슬롯 커뮤니티를 쉽게 추가할 수 있습니다. 두 가지 작은 수정만 필요합니다. 새 슬롯 커뮤니티의 이름을 세트에 추가해야 합니다.슬롯 커뮤니티그리고 해당 데이터가 테이블에 추가되어야 합니다경가격. 두 변경 사항 모두 1단계에 있습니다. 해당 코드의 줄은 다음과 같습니다.
슬롯 커뮤니티 설정 / 기본, 쇠고기, 쇠고기 옥수수, 신규/;
테이블 scenprice(primary,scenarios) '슬롯 커뮤니티별 가격 변동'
베이스 비프 비콘 뉴
옥수수 2.70
콩 4.32
쇠고기 0.70 ;우리는 세 번째 대체 슬롯 커뮤니티를 추가했음을 참고하세요.신규, 대두 가격이 $4.32로 변경되었습니다. 코드의 나머지 부분은 변경되지 않습니다. 새로운 슬롯 커뮤니티가 세트에 추가되면슬롯 커뮤니티각 데이터가 테이블에 지정되면 루프에 들어가고 따라서 루프의 모든 명령문이 새 슬롯 커뮤니티에 대해 실행됩니다.
위의 새로운 슬롯 커뮤니티가 다른 슬롯 커뮤니티와 유사하다는 것을 관찰하십시오: 기본 상품의 가격이 수정되었습니다. 그러나 경우에 따라 새로운 슬롯 커뮤니티에서는 리소스와 같은 다른 데이터를 변경해야 합니다. 예를 들어, 새로운 슬롯 커뮤니티에서 landtype"경작지"30% 증가했습니다. 사용 가능한 리소스는 매개변수에 정의되어 있습니다.사용 가능(알리), 여기서사용 가능("경작지")equals 700. 이 새로운 슬롯 커뮤니티를 수용하기 위해 1~4단계에 다음 코드 줄을 추가합니다.
*1단계 - 설정 슬롯 커뮤니티
슬롯 커뮤니티 / 기본, 쇠고기, 쇠고기 옥수수, 신규 / 설정;
테이블 scenavailable(alli,scenarios) '슬롯 커뮤니티별 리소스 변경'
베이스 비프 비콘 뉴
농경지 1.3;
*2단계 - 데이터 저장
매개변수 saveavailable(alli) '사용 가능한 리소스 저장';
saveavailable(alli) = 사용 가능(alli);
*3단계 - 데이터를 기본 수준으로 재설정
루프(슬롯 커뮤니티,
사용 가능(alli) = 저장 가능(alli);
*4단계 - 슬롯 커뮤니티에 필요한 수준으로 데이터 변경
사용 가능(alli)$scenavailable(alli,scenarios) =
사용 가능(alli)*scenavailable(모두,슬롯 커뮤니티);
표시 가격, 사용 가능;1단계에서 새 테이블을 추가했음을 참고하세요.사용 가능, 슬롯 커뮤니티별 자원 교체를 지정합니다. 다음의 값을 관찰하세요.사용 가능은 4단계에서 승수로 사용됩니다. 2단계에서는 매개변수를 도입했습니다.저장 가능, 매개변수와 같이 사용 가능한 리소스에 대해 유사한 역할을 수행합니다.savprice1차 상품의 가격에 적용됩니다. 기본 수준은 이 매개변수에 저장되며 우리는 이를 사용하여 값을 복원합니다.사용 가능각 새로운 슬롯 커뮤니티가 실행되기 전에 기본 수준으로 변경됩니다. 이는 3단계의 새로운 할당으로 구현됩니다. 4단계에서는 매개변수의 데이터 수준사용 가능다음을 사용하여 현재 슬롯 커뮤니티에 필요한 대로 수정됩니다.조건부 할당. 값을 업데이트하는 할당과 유사점에 유의하세요.가격위의 4단계. 5~9단계는 변경되지 않습니다. 따라서 우리는 코드 몇 줄만 추가하여 다른 매개변수를 수정하는 추가 슬롯 커뮤니티를 통해 자동화된 비교 분석을 달성했습니다. 전체 코드는 GAMS 파일에 제공됩니다.compareother.gms.
모델 구조 변경
많은 연구에서 수정이 필요합니다.구조모델의. GAMS에서는 상황에 맞는 모델 구조를 다음과 같이 구현할 수 있습니다.달러 조건. 달러 조건은 특정 용어뿐만 아니라 방정식을 제어하는 데 사용될 수 있습니다.
설명을 위해, 우리는 소의 수를 제한하는 조건부 제약을 포함하도록 이전 섹션의 수익성 극대화 농장 모델을 확장할 것입니다. 이 제약 조건은 슬롯 커뮤니티에 따라 달라지는 스칼라가 0이 아닌 경우에만 활성화됩니다. 다음 코드 줄을 살펴보세요. 참고로 세트동물세트의 하위 집합입니다알리, 집합의 요소실시간 관리농작물과 동물을 관리하는 다양한 방법을 나타내며라이브프로드은 축산에 대한 양의 변수입니다.
$include farmcomp.gms
$include farmrep.gms
스칼라 cowlim은 'cowlimit 제약 조건을 활성화합니다' /1/;
방정식 cowlimit '소 한계에 대한 조건 방정식;
cowlimit$cowlim.. sum((animals,livemanage), liveprod(animals,livemanage)) =l= 100;
모델 farmcowlim /all/;
순서 설정 / "슬롯 커뮤니티 설정", "슬롯 커뮤니티 결과" /;
슬롯 커뮤니티/베이스, 카울림/설정;
매개변수 savprice(primary) '1차 상품 가격 저장';
savprice(기본) = 가격(기본);
매개변수 cowlims(scenarios) '슬롯 커뮤니티별 cowlimit'
/ 베이스 0, 카울림 1/;
루프(슬롯 커뮤니티,
cowlim = cowlims(슬롯 커뮤니티);
순이익을 최대화하는 LP를 사용하여 farmcowlim을 해결합니다.
);루프에서 스칼라 값에 유의하세요.카울림각 슬롯 커뮤니티가 실행되기 전에 업데이트됩니다. 또한 이 값은 새로운 방정식이 결정되는지 여부를 결정합니다.소한계활성화되거나 비활성화됩니다. 전체 코드는 GAMS 파일에 제공됩니다.comparemod.gms.
범위 분석
일부 사용자는 LP 비용 및 오른쪽 범위 결과의 형태로 범위 출력을 얻는 데 관심이 있습니다. 불행하게도 GAMS의 기본 버전은 그러한 정보를 제공하지 않습니다. 그러한 정보를 원하는 사용자에게는 두 가지 대안이 있습니다. 첫째, 위에서 설명한 절차를 사용하여 주요 매개변수에 대한 값 집합에 따라 모델을 반복적으로 해석할 수 있지만, 많은 매개변수가 관련된 경우 이는 번거롭습니다. 둘째, GAMS 매개변수로 검색할 수 있는 GAMS의 솔버 종속 기능을 사용할 수 있습니다. 솔버 매뉴얼을 참조하세요(예: GAMS/CPLEX:민감도 분석) 사용 방법에 대한 자세한 내용을 확인하세요.