示性函数的实现技巧
在很多python的优化函数中示性函数是无法使用的,例如: 1 { x > α } 1_{\{x>\alpha\}} 1{x>α}。这里介绍一种M法来解决,首先定义一个辅助变量 z = 1 or 0 z=1 \text{ or } 0 z=1 or 0, 令 M M M是一个很大的正数,例如 M = 1 e 5 M=1e5 M=1e5, 则在下式的约束下, z z z和示性函数 1 { x > α } 1_{\{x>\alpha\}} 1{x>α}的效果一样:
x > α − M ( 1 − z ) x < α + M z \begin{aligned} x>\alpha-M(1-z)\\ x<\alpha+Mz \end{aligned} x>α−M(1−z)x<α+Mz