srpchase.gms : 시나리오 트리 구축 예시

설명

SCENRED - 시나리오 트리 구성 예
3단계 확률적 구매 예시 문제

분석 솔루션:
    OPT = 4.167(최적값)
    VOPI = 3.667(완전한 정보의 가치)

H. Heitsch, W. Roemisch, C. Strugarek
다단계 확률론적 프로그램의 안정성
SIAM 최적화 저널 17(2006), 511-525

키워드: 선형 계획법, 확률론적 계획법, 시나리오 트리 구성

  차원(짝수)

소형 모델 유형 :LP


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


메인 파일 : srpchase.gms

$title 시나리오 트리 구성 예(SRPCHASE,SEQ=344)

$onText
SCENRED - 시나리오 트리 구성 예
3단계 확률적 구매 예시 문제

분석 솔루션:
    OPT = 4.167(최적값)
    VOPI = 3.667(완전한 정보의 가치)

H. Heitsch, W. Roemisch, C. Strugarek
다단계 확률론적 프로그램의 안정성
SIAM 최적화 저널 17(2006), 511-525

키워드: 선형 계획법, 확률론적 계획법, 시나리오 트리 구성
$offText

* 치수(짝수)
$DIM을 설정하지 않은 경우 $set DIM 1000
$ifE mod(%DIM%,2)=1 $eval DIM %DIM%+1

세트
   n '노드' / n0*n%DIM% /
   t '기간' / t1*t3 /
   stage(n,t) '단계 매핑'
   조상(n,n) '조상 행렬'
   leaf(n) '잎 노드';

* 팬을 구축
* 단계 매핑 및 리프 노드 할당
stage('n0','t1') = 예;
stage(n ,'t2') = ord(n) > 1 및 ord(n) <= %DIM%/2 + 1;
stage(n ,'t3') = ord(n) > %DIM%/2 + 1;

리프(n) = 단계(n,'t3');

* 팬을 대표하는 조상 관계 구축
조상(n,'n0')$stage(n,'t2') = 예;
조상(n,n-card(leaf))$stage(n,'t3') = yes;

* 랜덤변수(가격) 및 확률
매개변수
   가격(n) '노드 가격'
   prob(n) '노드 확률';

prob(n) = 1/카드(잎);

* 첫 번째 단계
가격('n0') = 1;
prob('n0') = 1;

* 두 번째 단계 - 가격은 [0,1]에 균일하게 분포됩니다.
가격(n)$stage(n,'t2') = 균일(0,1);

* 3단계 - 가격은 조건부 선형 분포입니다.
스칼라 알파, 베타;

루프(스테이지(n,'t3'),
   알파 = 1 - 가격(n - 카드(잎));
   베타 = 1 - 2*가격(n - 카드(잎));
   가격(n) = 균일(0,1);
   가격(n)$beta = 알파/베타 - 부호(베타)*sqrt(sqr(알파/베타) - 가격(n)/베타);
);

* ScenRed 초기화
$set srprefix srpchase
$libInclude 검열됨

파일은 '검사 옵션 파일' / 'sr2%srprefix%.opt' /를 찾습니다.
putClose는 '주문 1'을 선택합니다.
             / '섹션 엡실론'
             / '2 0.05'
             /'3 0.05'
             / '끝';

* 스크리닝 방법 선택
ScenRedParms('construction_method') = 2;
ScenRedParms('reduction_method' ) = 2;
ScenRedParms('sroption' ) = 1;

* 스크린콜
$libInclude scenred %srprefix% tree_con n 조상 프로브 조상 프로브 가격

변수
   x(n) '구매 금액'
   y(n) '여유 변수'
   비용 '객관적 가치';

양수 변수 x, y;

방정식
   목표 '예상 비용'
   slack(n) '느슨한 방정식'
   수요(n) '수요 불평등';

srn(n) '트리 구성 후 노드의 하위 집합'을 설정합니다.
srn(n) = prob(n);

목표.. 비용 =e= sum(srn, prob(srn)*price(srn)*x(srn));

slack(srn)$(리프(srn) 아님).. y(srn) =e= x(srn) + sum(ancestor(srn,n), y(n));

수요(잎(srn)).. x(srn) + 합계(조상(srn,n), y(n)) =g= 1;

모델 구매 / 모두 /;

lp를 사용하여 구매 비용을 최소화하는 문제를 해결합니다.