分段

(函数来自 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:

TransformedPiecewiseLinearFunction