benders_cuts
通用Benders切割生成器。
在阅读了Grothey、Leyffer和McKinnon的“关于Benders分解中可行性的说明”[GLM99]之后,更容易理解这段代码。
原始问题:
\[\begin{split}\min\ & f(x, y) + h0(y) \\
s.t.\ & g(x, y) <= 0 \\
& h(y) <= 0\end{split}\]
其中 y 是复杂变量。重新表述为
\[\begin{split}\min\ & h0(y) + \eta \\
s.t.\ & g(x, y) <= 0 \\
& f(x, y) <= \eta \\
& h(y) <= 0\end{split}\]
根本问题必须是以下形式
\[\begin{split}\min\ & h0(y) + \eta \\
s.t.\ & h(y) <= 0 \\
& benders\ cuts\end{split}\]
最后一个约束将自动由BendersCutGenerators生成。BendersCutGenerators必须处理一个形式为的子问题
\[\begin{split}\min\ & f(x, y) \\
s.t.\ & g(x, y) <= 0\end{split}\]
除了约束条件实际上不必采用这种形式。子问题将自动转换为
\[\begin{split}\min\ & _z & \\
s.t.\ & g(x, y) - z <= 0 & \quad (\alpha) \\
& f(x, y) - \eta - z <= 0 & \quad (\beta) \\
& y - y_k = 0 & \quad (\gamma) \\
& \eta - \eta_k = 0 & \quad (\delta) \\\end{split}\]
Classes
|
|
|
|
|
|
|