分段
(函数来自 pyomo.core.kernel.piecewise_library.transforms)
- pyomo.core.kernel.piecewise_library.transforms.piecewise(breakpoints, values, input=None, output=None, bound='eq', repn='sos2', validate=True, simplify=True, equal_slopes_tolerance=1e-06, require_bounded_input_variable=True, require_variable_domain_coverage=True)[source]
模拟一个单变量分段线性函数。
此函数接受一个描述分段线性函数的断点列表和函数值,并将这些输入数据转换为一组变量和约束,这些变量和约束强制输入变量和输出变量之间的分段线性关系。在一般情况下,此转换需要使用离散决策变量。
- Parameters:
断点 (列表) – 分段线性函数的断点列表。这可以是一个数字列表或存储可变数据的对象列表(例如,可变参数)。如果使用了可变数据,可能需要通过将
validate关键字设置为False来禁用验证。断点列表必须按非递减顺序排列。values (list) – 对应于断点的分段线性函数的值。
input – 被约束为分段线性函数输入的变量。
output – 被约束为分段线性函数输出的变量。
bound (str) –
对输出表达式施加的约束类型。可以是以下之一:
’lb’: y <= f(x)
’eq’: y = f(x)
’ub’: y >= f(x)
repn (str) –
使用的分段表示类型。选项如下所示(+ 表示支持阶梯函数)
’sos2’: 使用 sos2 约束的标准表示 (+)
’dcc’: 分解的凸组合 (+)
’dlog’: 对数分解的凸组合 (+)
’cc’: 凸组合 (+)
’log’: 对数分支凸组合 (+)
’mc’: 多选
’inc’: 增量法 (+)
validate (bool) – 表示是否执行输入数据的验证。默认值为
True。验证可以在分段对象创建后通过调用validate()方法手动执行。每当输入发生变化时(例如,在断点列表中使用可变参数或输入变量发生变化时),都应执行验证。simplify (bool) – 表示是否尝试简化分段表示以避免使用离散变量。当输出变量的可行区域相对于分段函数和边界类型是凸集时,可以这样做。默认值为
True。执行简化需要验证,因此当validate关键字为False时,此关键字将被忽略。equal_slopes_tolerance (float) – 用于检查连续斜率是否几乎相等的容差。如果发现任何斜率几乎相等,验证将失败。默认值为1e-6。当
validate关键字为False时,此关键字将被忽略。require_bounded_input_variable (bool) – 表示输入变量是否需要具有有限的上限和下限。默认值为
True。将此关键字设置为False可以允许使用一般表达式作为输入,而不是变量。当validate关键字为False时,此关键字将被忽略。require_variable_domain_coverage (bool) – 表示 函数域(由断点列表的端点定义)是否需要覆盖 输入变量的整个域。默认是
True。对于任何非有限的变量边界,或者当输入 未分配变量时,此关键字将被忽略。当validate关键字为False时,此关键字将被忽略。
- Returns:
- 一个块
存储任何由分段表示使用的新变量、约束和其他建模对象
- Return type: