分段

此文件包含构建Pyomo模型的分段约束所需的函数库。除了SOS2、BIGM_SOS1、BIGM_BIN之外的所有分段类型均取自以下论文:

不可分离分段线性优化的混合整数模型:统一框架和扩展(Vielma, Nemhauser 2008)。

TODO: Add regression tests for the following completed tasks
  • 用户不提供浮点数可能是BIGM和MC的一个主要问题

  • 非凸/非凹函数 - BIGM_SOS1, BIGM_SOS2 * 可能的边缘情况错误

Possible Extensions
  • 考虑另一种分段表示(“SOS2_MANUAL”?),我们手动实现额外的约束来定义一个SOS2集,这将与GLPK兼容, http://winglpk.sourceforge.net/media/glpk-sos2_02.pdf

  • 再次确认LOG和DLOG表示是否真的需要(2^n)+1个点,或者我们是否可以仅通过添加整数切割(或更智能的方法)来处理分段函数,而不需要2^n个多面体。

  • 分段函数的形式为 y = f(x1,x2,…)

枚举

Bound(值)

PWRepn(值)

Classes

IndexedPiecewise(*args, **kwds)

Piecewise(*args, **kwds)

向Pyomo模型添加分段约束,用于形式为y = f(x)的函数。

PiecewiseData(parent)

此类定义了所有线性化和分段约束生成器的基类。

SimplePiecewise(*args, **kwds)