基于参数更改或AMPL Python API的Pyomo迭代

时间:2018-09-22 03:34:35

标签: python pyomo ampl

我在Pyomo模型的迭代运行中遇到麻烦。我的模型是一天-24小时的调度模型。例如,我要运行2次,这意味着我运行了2天(第1天,第2天)。我要更改的参数是model.SPV = Param (model.Time)。第一天的参数如下:

param : SPV :=

1   0
2   0
3   0
4   0
5   0.003
6   0.067
7   0.227
8   0.388
9   0.559
10  0.776
11  0.851
12  0.891
13  0.845
14  0.831
15  0.639
16  0.388
17  0.318
18  0.097
19  0.016
20  0
21  0
22  0
23  0
24  0 ;

第二天的参数如下:

param : SPV :=

1   0
2   0
3   0
4   0
5   0.004
6   0.087
7   0.227
8   0.388
9   0.759
10  0.776
11  0.851
12  0.891
13  0.825
14  0.931
15  0.639
16  0.308
17  0.318
18  0.197
19  0.036
20  0
21  0
22  0
23  0
24  0 ;

我知道我必须使用for循环,但是那之后我什么也没得到。有没有人可以解释在Pyomo中描述它的方式?

for i in range(1,2) :
    """ I do not know....

或者有人可以在Python的AMPL API中对其进行描述吗?

1 个答案:

答案 0 :(得分:0)

您为什么不在脚本中尝试此操作:

model.DAY = Set([1, 2])
model.HOUR = RangeSet(1, 24)
model.SPV = Param(model.DAY, model.HOUR)

并在您的.dat文件中,尝试使用此格式或其他形式的表格数据>

param SPV :=
    1  1   0
    1  2   0
    1  3   0
    1  4   0
    1  5   0.003
    1  6   0.067
    1  7   0.227
    1  8   0.388
    1  9   0.559
    1  10  0.776
    1  11  0.851
    1  12  0.891
    1  13  0.845
    1  14  0.831
    1  15  0.639
    1  16  0.388
    1  17  0.318
    1  18  0.097
    1  19  0.016
    1  20  0
    1  21  0
    1  22  0
    1  23  0
    1  24  0  
    2  1   0
    ...(DO THE SAME AS DAY 1)
;