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