2014-10-30 4 views
1

나는 확률 적 프로그래밍을 할 AMPL에 문제가 내 AMPL의 SP 모델을 향상시킬 수 있습니다.어떻게 <p></p> 현재 나는 세 가지 시나리오를 가지고 각 솔루션 전에 확률을 할당 이상의 차원

for { t in 1..SIZE-1 by 2} { 

    let Demand := DemandSeq[t]; 
    let Resources := ResourcesSeq[t]; 

    # change probability of each stage 
    if StateSequence[t] = 1 # N 
     then { 
      let P[1]:= 0.7; 
      let P[2]:= 0.2; 
      let P[3]:= 0.1; 
     } 
    else if StateSequence[t] = 2 # A 
     then { 
      let P[1]:= 0.6; 
      let P[2]:= 0.3; 
      let P[3]:= 0.1; 
     } 
    else if StateSequence[t] = 3 # M 
     then { 
      let P[1]:= 0.5; 
      let P[2]:= 0.4; 
      let P[3]:= 0.1; 
     }; 
    solve; 
    ... 
} 

이제이 세 가지 시나리오 문제를 10 가지 시나리오 문제로 변경합니다. 이미 10 * 10의 확률 행렬을 가지고 있지만 prob를 할당하는 방법을 모르겠습니다. ,

param Probs{1..10, 1..10}; 

는 컴팩트 한 형태로 데이터를 정의 (또는 데이터베이스 나 스프레드 시트에서 읽기) : 나는 AMPL Google Group에 대답으로

답변

1

, 당신은 저장 확률에 두 개의 차원 매개 변수를 정의 할 수 있습니다 예 :

let {i in 1..10} P[i] := Prob[StateSequence[t], i]; 
:

data; 
param Probs : 
    1 2 3 ... 10 := 
1 0.1 0.2 0.05 ... 0.1 
... 

및 P에 데이터를 할당 let의 반복 형태를 사용