为索引 pyomo 参数设置默认值
Setting a default value to an indexed pyomo parameter
我得到了一个如下所示的数据框:
>data
x y
Name
A NaN 0
B 65,2 NaN
C NaN 100
我创建了一个 pyomo 集合对象 m.index
,用于索引一个可变的 pyomo 参数对象 m.parameter_y
。
m.index
:
# code
m.index = pyomo.Set(
initialize=data.index.get_level_values(0).unique(),
doc='Index Set')
# output
(Pdb) m.index.pprint()
index : Index Set
Dim=0, Dimen=1, Size=3, Domain=None, Ordered=False, Mutable=True, Bounds=None
['A', 'B', 'C']
m.parameter_y
:
# code
m.parameter_y = pyomo.Param(
m.index,
default=data['y'].values,
mutable=True
doc='Par y')
# output
(Pdb) m.parameter_y.pprint()
parameter_y : Par y
Size=3, Index=index, Domain=Any, Default=None, Mutable=True
Key : Value
A : [ 0 nan 100. ]
B : [ 0 nan 100. ]
C : [ 0 nan 100. ]
如您所见,使用default=df['y'].values
,获取列y
的所有值作为参数的值。
如果我希望得到以下输出,我将如何设置可变索引 pyomo 参数对象的值?
(Pdb) m.parameter_y.pprint()
parameter_y : Par y
Size=3, Index=index, Domain=Any, Default=None, Mutable=True
Key : Value
A : [ 0 ]
B : [ nan ]
C : [ 100 ]
PS:请记住,这不是实际的数据帧、索引集或参数。因此,像以某种方式手动添加值这样的答案在我的情况下不起作用。什么会起作用,从数据帧中获得某种更好的价值获取功能,这样我就可以将该参数的这些值设置为默认值。
假设您希望参数值是单例值而不是列表,以下应该有效:
m.parameter_y = pyomo.Param(
m.index,
default=data['y'].to_dict(),
mutable=True
doc='Par y')
您使用 default
参数而不是 initialize
是有原因的吗?
我得到了一个如下所示的数据框:
>data
x y
Name
A NaN 0
B 65,2 NaN
C NaN 100
我创建了一个 pyomo 集合对象 m.index
,用于索引一个可变的 pyomo 参数对象 m.parameter_y
。
m.index
:
# code
m.index = pyomo.Set(
initialize=data.index.get_level_values(0).unique(),
doc='Index Set')
# output
(Pdb) m.index.pprint()
index : Index Set
Dim=0, Dimen=1, Size=3, Domain=None, Ordered=False, Mutable=True, Bounds=None
['A', 'B', 'C']
m.parameter_y
:
# code
m.parameter_y = pyomo.Param(
m.index,
default=data['y'].values,
mutable=True
doc='Par y')
# output
(Pdb) m.parameter_y.pprint()
parameter_y : Par y
Size=3, Index=index, Domain=Any, Default=None, Mutable=True
Key : Value
A : [ 0 nan 100. ]
B : [ 0 nan 100. ]
C : [ 0 nan 100. ]
如您所见,使用default=df['y'].values
,获取列y
的所有值作为参数的值。
如果我希望得到以下输出,我将如何设置可变索引 pyomo 参数对象的值?
(Pdb) m.parameter_y.pprint()
parameter_y : Par y
Size=3, Index=index, Domain=Any, Default=None, Mutable=True
Key : Value
A : [ 0 ]
B : [ nan ]
C : [ 100 ]
PS:请记住,这不是实际的数据帧、索引集或参数。因此,像以某种方式手动添加值这样的答案在我的情况下不起作用。什么会起作用,从数据帧中获得某种更好的价值获取功能,这样我就可以将该参数的这些值设置为默认值。
假设您希望参数值是单例值而不是列表,以下应该有效:
m.parameter_y = pyomo.Param(
m.index,
default=data['y'].to_dict(),
mutable=True
doc='Par y')
您使用 default
参数而不是 initialize
是有原因的吗?