如何在Pyomo中索引矩阵

时间:2018-12-04 13:21:43

标签: python parameters pyomo

我正在尝试创建一个Pyomo索引,该索引将同时应用于熊猫数据框的列名和行索引。

原因是我在每列上都有约束,但也想将df行分成4部分,每部分都有各种约束。我可以通过创建仅在矩阵列名称上建立索引的4个单独的Params来使此公式起作用,但是如果子集需要具有不同数量的部件,则这将是不灵活的。

我的代码尝试对矩阵的x和y进行子集化:

model=ConcreteModel()
model.N = Set(initialize=col_names)
model.I = Set(initialize=full_df.index)
model.M = Param(model.I, model.N, initialize=full_df[col_names].values)

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

Param可支持字典,而字典则支持元组键。

  1. 创建一组(i,n)元组,其中i是I的元素,n是N的元素。此集将包含元组,而不是包含数字或字符串。

    model.your_set = Set(initialize=list_of_tuples)
    
  2. 确保您有一个字典或数据对象表示形式,该表示形式允许每个元组只有一个数值(即矩阵的内容)。我们最初将其称为d

  3. 必须以这种方式声明参数:

    model.M = Param(model.your_set, initialize=d)
    

这样,您的元组将成为字典的键。