Optimization 考虑决策问题中两个节点的差异,同时保持模型为MILP

Optimization 考虑决策问题中两个节点的差异,同时保持模型为MILP,optimization,pyomo,mixed-integer-programming,Optimization,Pyomo,Mixed Integer Programming,要解释这个问题,最好从这个开始 我正在建模一个优化决策问题,我正在尝试实现的一个功能是工艺阶段(a=1,2)之间的热传递,考虑到二元决策变量y选择的设备类型(j=1,2,3) 设备的温度是固定值,我的目标是找到(在图片中)dT=120-70=50,同时将温差作为一个参数(我想保持问题的线性,稍后需要将温差乘以一个变量) 我尝试过的事情: dT = T[a,j] - T[a-1,j] (这显然给出了T[a-1,j]的T=80,这是不正确的) 当我与另一个变量相乘时,这将使问题非线性 我正在使

要解释这个问题,最好从这个开始

我正在建模一个优化决策问题,我正在尝试实现的一个功能是工艺阶段(a=1,2)之间的热传递,考虑到二元决策变量y选择的设备类型(j=1,2,3)

设备的温度是固定值,我的目标是找到(在图片中)dT=120-70=50,同时将温差作为一个参数(我想保持问题的线性,稍后需要将温差乘以一个变量)

我尝试过的事情:

dT = T[a,j] - T[a-1,j] 
(这显然给出了T[a-1,j]的T=80,这是不正确的)

当我与另一个变量相乘时,这将使问题非线性


我正在使用pyomo和线性“glpk”解算器。谢谢你阅读我的帖子,如果有人能帮我,我将不胜感激

是一个参数,表示与相同9个连接相关的温差,该温差可以轻松计算并输入模型参数

如果您想保持双索引,并假设每个阶段仅选择1件设备,您可以将每个阶段的选择变量和TEMP的和积减去它们

dT[a] = sum(T[a, j]*y[a, j] for j in J) - sum(T[a-1, j]*y[a-1, j] for j in J)  

暂时∈ {2,3,…,N}

谢谢你的回答。不幸的是,这并不能解决问题。第一个建议确实适用于我提供的小示例,但不适用于我试图解决的实际问题。第二个建议在某种意义上与我在原始帖子(第二次尝试)中描述的方法相同。这不是一个理想的解决方案,因为稍后我需要将dT与变量F[a,j]相乘,使模型非线性。我想避免制定MINLP问题。可能有一种方法可以重新制定。。。你能编辑你的帖子,并加入更多关于你需要的约束的信息吗?
dT[a] = sum(T[a, j]*y[a, j] for j in J) - sum(T[a-1, j]*y[a-1, j] for j in J)