설명
이 모델은 농부가 할당 방법을 결정하는 데 도움이 됩니다. 그의 땅. 수익률은 불확실합니다.
소형 모델 유형 :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;