【发布时间】:2021-09-21 03:22:53
【问题描述】:
我面临一个问题,即在目标函数中乘以一个术语。我的目标函数是:
\begin{equation}
min \sum_{t=1}^T p_{t} * (1+r) * y_{t}
\end{equation}
其中 $p$ 是价格,$y$ 是数量(决策变量),$r$ 是价格附加费。 $t$ 是时间段的索引。
问题在于 $r$ 的值取决于 $y$(决策变量)的值位于哪个区间,如以下分段函数所示。
\begin{equation}
\r_t (Y_t) =
\begin{cases}
% s_0
0 & \mathrm{if }\; Y_t \leq b_0 \\
% s_1
0.05 & \mathrm{if }\; b_0 < Y_t \leq b_1 \\
% s_2
0.1 & \mathrm{if }\; b_1 < Y_t \leq b_2\\[6pt]
... & \mathrm{if }\; ...
\end{cases}
\end{equation}
其中 $b_0$、$b_1$ 等是一组数量区间 = [0, 50, 100, 150,..]
因为我们没有 $y$ 的值,直到指定目标函数(因为决策变量的值),只有在我们调用优化 m.optimize() 时才可用。那么,我们如何在 Python 接口中对此进行编程。
任何线索都将受到高度赞赏。提前致谢。
【问题讨论】:
标签: python optimization gurobi