슬롯 머신gms : DECIS를 위해 공식화된 농부의 문제

설명

이 모델은 농부가 할당 방법을 결정하는 데 도움이 됩니다.
그의 땅. 수익률은 불확실합니다.

소형 모델 유형 :DECIS lp


카테고리 : 슬롯 머신 모델 라이브러리


메인 파일 : 슬롯 머신gms

$title 슬롯 머신/DECIS에 대해 공식화된 농부의 문제 (FARM,SEQ=199)

$onText
이 모델은 농부가 할당 방법을 결정하는 데 도움이 됩니다.
그의 땅. 수익률은 불확실합니다.

Birge, R 및 Louveaux, FV, 확률론적 프로그래밍 소개.
스프링거, 1997.

키워드: 선형 계획법, 확률론적 계획법, 농업 재배,
          농업, 자르기
$offText

$decisalg가 설정되지 않은 경우 $set decisalg decism

세트
   작물 / 밀, 옥수수, 사탕무 /
   Cropr(작물) '소에게 먹이를 주는 데 필요한 작물' / 밀, 옥수수 /
   작물 / 밀
                                                     옥수수
                                                     사탕무1 '최대 6000톤'
                                                     beets2 '6000톤 초과' /;

매개변수
   수확량(작물) '에이커당 톤' / 밀 2.5
                                                     옥수수 3
                                                     사탕무 20 /
   식물 비용(작물) '에이커당 달러' / 밀 150
                                                     옥수수 230
                                                     사탕무 260 /
   Sellprice(cropx) '톤당 달러' / 밀 170
                                                     옥수수 150
                                                     사탕무1 36
                                                     사탕무2 10 /
   purchprice(cropr) '톤당 달러' / 밀 238
                                                     옥수수 210 /
   minreq(cropr) '최소 요구량(톤)' / 밀 200
                                                     옥수수 240 /;

스칼라
   토지 '사용 가능한 토지' / 500 /
   maxbeets1 '최대 허용' / 6000 /;

*--------------------------------------------------
* 먼저 비확률적 버전
*--------------------------------------------------
변수
   x(crop) '에이커의 토지'
   w(cropx) '작물 판매'
   y(cropr) '구매한 작물'
   yld(자르기) '수율'
   이익 '객관변수';

양수 변수 x, w, y;

방정식
   이익def '목적 함수'
   토지 이용 '용량'
   req(cropr) '가축 사료에 대한 작물 요구 사항'
   ylddef '계산량'
   사탕무 '총 사탕무 생산량';

$onText
YLD 변수와 YLDDEF 방정식은 확률론을 분리합니다.
YIELD 매개변수를 하나의 방정식으로 만들어 DECIS 설정을 만듭니다.
YLD를 대체하는 것보다 다소 쉽습니다.
모델.
$offText

이익def.. 이익 =e= - 합계(작물, 식물 비용(작물)*x(작물))
                       - 합계(작물, 구매 가격(작물)*y(작물))
                       + sum(cropx, Sellprice(cropx)*w(cropx));

토지 이용.. sum(crop, x(crop)) =l= 토지;

ylddef(자르기).. yld(자르기) =e= Yield(자르기)*x(자르기);

req(cropr).. yld(cropr) + y(cropr) - sum(sameas(cropx,cropr),w(cropx)) =g= minreq(cropr);

사탕무.. w('사탕무1') + w('사탕2') =l= yld('사탕무');

w.up('beets1') = maxbeets1;

모델 단순 / 이익def, 토지 이용, req, 사탕무, ylddef /;

이익을 극대화하는 LP를 사용하여 간단하게 해결합니다.

*--------------------------------------------------
* 광범위한 형태의 확률론적 모델
* 일반 LP입니다.
*--------------------------------------------------
'시나리오' / 위, 평균, 아래 /를 설정합니다.

변수
   ws(cropx, s) '시나리오 s에 따라 판매된 작물'
   ys(cropr, s) '시나리오 s에 따라 구매한 작물';

양수 변수 ws, ys;

매개변수 p(s) '확률';
p(s) = 1/3;

abort$(abs(sum(s,p(s)) - 1.0) > 0.001) "확률이 합산되지 않습니다.";

매개변수 수확량(crop,s);
syield(자르기,'아래') = 0.8*yield(자르기);
syield(자르기,'avg') = 수확량(자르기);
syield(자르기,'위') = 1.2*yield(자르기);

방정식
   sprofitdef '목적 함수 확장형 확률론적 모델'
   sreq(작물,들)
   사탕무;

sprofitdef.. 이익 =e= - 합계(작물, 식물 비용(작물)*x(작물))
                           + 합계(s, p(s)*(- 합계(작물, 구매 가격(작물)*ys(작물,s))
                                          + sum(cropx, Sellprice(cropx)*ws(cropx,s))));

sreq(cropr,s).. syield(cropr,s)*x(cropr) + ys(cropr,s)
                - 합계(동일(sameas(cropx,cropr),ws(cropx,s))
               =g= 최소요구량(작물);

sbeets(s).. ws('beets1',s) ​​+ ws('beets2',s) =l= syield('sugarbeets',s)*x('sugarbeets');

ws.up('beets1',s) ​​= maxbeets1;

모델 확장 / sprofitdef, landuse, sreq, sbeets /;

이익을 극대화하는 LP를 사용하여 확장을 해결합니다.

* 다양한 실행에 대한 x 결과 수집
실행 설정/'광범위한 형태' 확장
           decisapp '기본 결정'
           decisexact '확률론적 우주 옵션' /;

매개변수 px(runs,crop) '1단계 변수에 대한 결과';

* 1단계 결과 저장
px('extform',crop) = x.l(자르기);

*--------------------------------------------------
* 기본 DECIS 설정
* 비확률적(핵심) 모델을 기반으로 합니다.
*--------------------------------------------------

* 확률론적 파일 출력
파일 stg / MODEL.STG /;
stg.nd ​​= 8;
stg를 넣어;
'블록 분리'/를 입력합니다.
루프(들,
   'BL BLOCK1 PERIOD2'를 입력하세요.,p(s)/;
   loop(자르기, put 'x',crop.tl,'ylddef',crop.tl,'',(-syield(crop,s))/;);
);
넣어닫다;

$onText
x의 계수에 대한 (-yield) 표현식을 확인하세요.
방정식 ylddef. YLDDEF에 대한 행 목록은 다음 표현식을 보여줍니다.
Yield(crop)*x(crop)은 슬롯 머신에 의해 왼쪽으로 이동되어
빼기 기호. PUT 구문과 마찬가지로 괄호가 필요합니다.
거기에는 표현을 허용하지 마세요.
$offText

* MINOS 옵션 파일 출력
파일 정리 / MINOS.SPC /;
걸레를 씌우다;
"시작"을 입력하세요/;
"행 250"을 입력하세요/;
"열 250"을 입력하세요/;
"요소 10000"을 넣습니다/;
"끝"을 입력하세요/;
넣어닫다;

* 단계 할당
x.stage(cropr) = 1;
y.stage(cropr) = 2;
w.stage(cropx) = 2;
yld.stage(자르기) = 2;
landuse.stage = 1;
ylddef.stage(자르기) = 2;
req.stage(cropr) = 2;
사탕무.단계 = 2;

옵션 lp = %decisalg%;

이익을 극대화하는 LP를 사용하여 간단하게 해결합니다.

* 1단계 결과 저장
px('decisabout',crop) = x.l(crop);

*--------------------------------------------------
* DECIS가 모델을 정확하게 해결하도록 하세요.
* 확률론적 우주 옵션: 4 "ISTRAT"
*--------------------------------------------------
파일 decept / %decisalg%.opt /;
디셉트를 넣어;
'4 "ISTRAT"'를 입력하세요/;
넣어닫다;

단순.opt파일 = 1;

이익을 극대화하는 LP를 사용하여 간단하게 해결합니다.

* 1단계 결과 저장
px('decisexact',crop) = x.l(crop);

디스플레이 px;