如何在 Pyomo 中索引矩阵

How to index a matrix in Pyomo

我正在尝试创建一个适用于 pandas 数据框的列名和行索引的 Pyomo 索引。

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

我尝试对矩阵的 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)

如有任何帮助,我们将不胜感激。

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)
    

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