我对Pyomo还是很陌生,试图弄清楚索引集(一组集合)的用例是什么。据我所知,它可以代替参数并以相同的方式运行。对于在Pyomo中应如何使用索引集的任何见解或示例,将不胜感激。
在尝试创建一个“标记”我的时间集合t的集合时,我遇到了这个问题。我将model.t作为一组时间戳记,例如,想说前3个时间戳记是组A的一部分,接下来的3个时间戳记是B组的一部分,依此类推。建模并感觉到参数与索引集的作用相同
import datetime
import pyomo.environ as pe
class CreateModel:
def __init__(self):
self.model = pe.AbstractModel()
self.model.t = pe.Set()
self.model.labels = pe.Set()
self.model.labeled_t = pe.Set(self.model.labels)
# OR
# self.model.labeled_t = pe.Param(self.model.labels)
def main():
# Some dummy input data
inputs = {
None:{
't':{
None:[
datetime.date(2020, 1, 1), datetime.date(2020, 1, 2),
datetime.date(2020, 1, 3), datetime.date(2020, 1, 4)
]
},
'labels':{None:{'A', 'B'}},
'labeled_t':{
'A':[datetime.date(2020, 1, 1), datetime.date(2020, 1, 2)],
'B':[datetime.date(2020, 1, 3), datetime.date(2020, 1, 4)]
}
}
}
m = CreateModel()
m.model.create_instance(inputs)
if __name__ == '__main__':
main()
在此示例中,行为是相同的,那么为什么我要索引集呢?