1

我对 AMPL 进行随机编程有疑问,

目前我有三个场景并在每个解决方案之前分配概率。

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 的概率矩阵,但我不知道如何分配概率。

4

1 回答 1

1

正如我在AMPL Google Group上回复的那样,您可以定义一个二维参数来存储概率:

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

在数据中以紧凑的形式定义它(或从数据库或电子表格中读取),例如:

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

并使用迭代形式let将数据分配给 P:

let {i in 1..10} P[i] := Prob[StateSequence[t], i];
于 2014-10-30T19:22:52.617 回答