范围集合

(类来自 pyomo.core.base.set)

class pyomo.core.base.set.RangeSet(*args, **kwds)[源代码]

基础类: Component

表示一组数值的集合对象

RangeSet 对象基于 NumericRange 对象,这些对象包括对非有限范围(连续和无界)的支持。同样,可以表示特殊范围(如半连续域),例如:

>>> from pyomo.core.base.range import NumericRange
>>> from pyomo.environ import RangeSet
>>> print(RangeSet(ranges=(NumericRange(0,0,0), NumericRange(1,100,0))))
([0] | [1..100])

RangeSet 对象继续支持使用“[first=1], last, [step=1]”值来指定离散范围的表示法:

>>> r = RangeSet(3)
>>> print(r)
[1:3]
>>> print(list(r))
[1, 2, 3]

>>> r = RangeSet(2, 5)
>>> print(r)
[2:5]
>>> print(list(r))
[2, 3, 4, 5]

>>> r = RangeSet(2, 5, 2)
>>> print(r)
[2:4:2]
>>> print(list(r))
[2, 4]

>>> r = RangeSet(2.5, 4, 0.5)
>>> print(r)
([2.5] | [3.0] | [3.5] | [4.0])
>>> print(list(r))
[2.5, 3.0, 3.5, 4.0]

通过使用NumericRanges实现RangeSet,全局集合(如RealsIntegersPositiveReals等)都是RangeSet的简单实例,并支持所有集合操作。

Parameters:
  • *args (int | float | None) – 由 ([start=1], end, [step=1]) 定义的范围。如果只提供一个位置参数,即 end,则 RangeSet 将是从 1 开始到并包括 end 的整数。提供两个位置参数 xy,将生成一个从 x 开始到并包括 y 的范围,步长为 1。提供一个三元组可以指定步长不为 1 的范围。

  • finite (bool, 可选) – 这设置了这个范围是有限的(离散且有界的)还是无限的

  • ranges (iterable, optional) – 组成此RangeSet的范围对象列表

  • bounds (tuple, optional) – 此RangeSet中允许的值的下限和上限

  • filter (function, optional) – 如果指定值在RangeSet中则返回True的函数(规则),否则返回False。

  • validate (function, optional) – 数据验证函数(规则)。该函数将为集合中的每个数据成员调用,如果返回False,将引发ValueError。

  • name (str, optional) – 此组件的名称。

  • 文档 (str, 可选) – 描述此组件的文本。

__init__(*args, **kwds)[source]

方法

__init__(*args, **kwds)

clear_suffix_value(suffix_or_name[, expand])

清除此组件数据的后缀值

cname(*args, **kwds)

已弃用。

construct([data])

用于构建组件的API定义

dim()

display([ostream, verbose, prefix])

get_suffix_value(suffix_or_name[, default])

获取此组件数据的后缀值

getname([fully_qualified, name_buffer, ...])

返回与此对象关联的组件名称。

index_set()

is_component_type()

如果此类是Pyomo组件,则返回True

is_constructed()

如果这个类已经被构造,则返回True

is_expression_type([expression_system])

如果此数值是一个表达式,则返回 True

is_indexed()

如果此组件已索引,则返回true

is_logical_type()

如果此类是Pyomo布尔对象,则返回True。

is_named_expression_type()

如果此数值是一个命名表达式,则返回 True

is_numeric_type()

如果此类是Pyomo数值对象,则返回True

is_parameter_type()

除非此类是参数对象,否则返回 False

is_reference()

如果此对象是引用,则返回 True。

is_variable_type()

除非此类是变量对象,否则返回 False

model()

返回与此对象关联的模型。

parent_block()

返回此对象的父对象。

parent_component()

返回与此对象关联的组件。

pprint([ostream, verbose, prefix])

打印组件信息

reconstruct([data])

已移除:reconstruct() 在 Pyomo 6.0 中被移除。

root_block()

返回 self.model()

set_suffix_value(suffix_or_name, value[, expand])

设置此组件数据的后缀值

type()

已弃用。

valid_model_component()

如果这可以用作模型组件,则返回True。

属性

active

返回活动属性

ctype

返回此组件的类类型

local_name

仅在直接父容器的上下文中获取组件名称。

name

获取完全限定的组件名称。

成员文档

clear_suffix_value(suffix_or_name, expand=True)

清除此组件数据的后缀值

cname(*args, **kwds)

已弃用。

自版本5.0起已弃用:cname() 方法已重命名为 getname()。 获取组件名称的首选方法是使用 .name 属性,该属性返回完全限定的组件名称。 .local_name 属性将仅在直接父容器的上下文中返回组件名称。

construct(data=None)[source]

用于构建组件的API定义

get_suffix_value(suffix_or_name, default=None)

获取此组件数据的后缀值

getname(fully_qualified=False, name_buffer=None, relative_to=None)

返回与此对象关联的组件名称。

Parameters:
  • fully_qualified (bool) – 从嵌套的块名称生成全名

  • relative_to (Block) – 生成相对于指定块的完全限定名称。

is_component_type()

如果此类是Pyomo组件,则返回True

is_constructed()

如果这个类已经被构造,则返回True

is_expression_type(expression_system=None)

如果此数值是一个表达式,则返回 True

is_indexed()

如果此组件已索引,则返回true

is_logical_type()

如果此类是Pyomo布尔对象,则返回True。

布尔对象包括常量、变量或逻辑表达式。

is_named_expression_type()

如果此数值是一个命名表达式,则返回 True

is_numeric_type()

如果此类是Pyomo数值对象,则返回True

is_parameter_type()

除非此类是参数对象,否则返回 False

is_reference()

如果此对象是引用,则返回 True。

is_variable_type()

除非此类是变量对象,否则返回 False

model()

返回与此对象关联的模型。

parent_block()

返回此对象的父对象。

parent_component()

返回与此对象关联的组件。

pprint(ostream=None, verbose=False, prefix='')

打印组件信息

reconstruct(data=None)

已移除:reconstruct() 在 Pyomo 6.0 中被移除。

重新构建模型组件是脆弱的,并且不能正确更新在其他组件或上下文中使用的组件实例(这对于Var、Param和Set尤其成问题)。希望重现reconstruct()旧行为的用户,如果愿意操作非公开接口,并且愿意花时间验证他们的模型是否正确执行,可以通过以下方式近似实现reconstruct的旧行为:

component.clear() component._constructed = False component.construct()

root_block()

返回 self.model()

set_suffix_value(suffix_or_name, value, expand=True)

设置此组件数据的后缀值

type()

已弃用。

返回此组件的类类型

自版本5.7起已弃用:Component.type() 方法已被 .ctype 属性取代。

valid_model_component()

如果这可以用作模型组件,则返回True。

property active

返回活动属性

property ctype

返回此组件的类类型

property local_name

仅在直接父容器的上下文中获取组件名称。

property name

获取完全限定的组件名称。