AMPL 可以递归地处理这个问题还是需要重塑?
Can AMPL handle this recursively or is a remodeling neccessary?
我正在使用 AMPL 对制作进行建模,其中有两个我不太确定如何处理的特定约束。
subject to Constraint1 {t in T}:
prod[t] = sum{i in I} x[i,t]*u[i] + Recycle[f]*RecycledU[f];
subject to Constraint2 {t in T}:
Solditems[t]+Recycle[t]=prod[t];
编辑:其中 x[i,t] 是供应点 i 的产品数量。 u[i] 表示来自供应点 i 的原始 material 的 "exchange rate" 以创建产品。 IE。一部分原料 material 将成为成品,而一些原料 material 将被浪费掉。 RecycledU[f]也是如此,其中f在F中,表示它被精炼过的精炼站。不同之处在于 RecycledU[f] 的浪费百分比要低得多,因为 Recycled 已经是 f 的成品(尽管利润要低得多)。 IE。回收已经 "went through" 更早地成为原始 material 的过程,x,但在更早的某个阶段已成为成品,或者希望(如果可以建模)与此在同一时间段内.在实际模型中也存在 "products" 和 "refinement station" 之类的东西,但我认为对于这个问题可以放弃这些东西以使其更简单。
我想要完成的是生产的产品数量是在时间段 t 和 时间段回收的产品数量的总和(通过recycled 我的意思是将成品保存在生产现场,以便在某个时间步长 g, g>t) 中进一步精制。
是否可以像我一样为prod[t]写两个等号?另外,如何处理 Recycle[t]? AMPL "understand" 因为这些是在同一时间步表示的,所以 AMPL 必须递归地处理约束,即计算 Recycle[t] 的解决方案,然后尝试在 every[ 中改进该解决方案=30=] 时间步长?
编辑:时间段以年表示,这就是为什么我想避免使用 Recycle[t-1] 的表达式。
EDIT2:prod 和 x 是参数,Recycle 和 Solditems 是变量。
希望任何人都能对此有所启发!
森德泽
将同时考虑这两个约束条件(除非您明确将其中一个从问题中排除)。 AMPL 或优化求解器没有时间步长的概念,并且同时考虑了完整的问题,因此您可能需要自己在时间段之间添加一些链接约束以对时间段进行建模。特别是,您可能需要确保库存(例如成品数量留在生产现场以进一步完善)从一个时期转移到另一个时期,例如:
Recycle[t + 1] = Recycle[t] - RecycleDecrease + RecycleIncrease;
你必须找出 Recycle
增加 (RecycleIncrease
) 和减少 (RecycleDecrease
) 的表达式。
此外,如果您想要某种一次只考虑一个约束的迭代过程,那么您应该使用 AMPL script.
我正在使用 AMPL 对制作进行建模,其中有两个我不太确定如何处理的特定约束。
subject to Constraint1 {t in T}:
prod[t] = sum{i in I} x[i,t]*u[i] + Recycle[f]*RecycledU[f];
subject to Constraint2 {t in T}:
Solditems[t]+Recycle[t]=prod[t];
编辑:其中 x[i,t] 是供应点 i 的产品数量。 u[i] 表示来自供应点 i 的原始 material 的 "exchange rate" 以创建产品。 IE。一部分原料 material 将成为成品,而一些原料 material 将被浪费掉。 RecycledU[f]也是如此,其中f在F中,表示它被精炼过的精炼站。不同之处在于 RecycledU[f] 的浪费百分比要低得多,因为 Recycled 已经是 f 的成品(尽管利润要低得多)。 IE。回收已经 "went through" 更早地成为原始 material 的过程,x,但在更早的某个阶段已成为成品,或者希望(如果可以建模)与此在同一时间段内.在实际模型中也存在 "products" 和 "refinement station" 之类的东西,但我认为对于这个问题可以放弃这些东西以使其更简单。
我想要完成的是生产的产品数量是在时间段 t 和 时间段回收的产品数量的总和(通过recycled 我的意思是将成品保存在生产现场,以便在某个时间步长 g, g>t) 中进一步精制。
是否可以像我一样为prod[t]写两个等号?另外,如何处理 Recycle[t]? AMPL "understand" 因为这些是在同一时间步表示的,所以 AMPL 必须递归地处理约束,即计算 Recycle[t] 的解决方案,然后尝试在 every[ 中改进该解决方案=30=] 时间步长?
编辑:时间段以年表示,这就是为什么我想避免使用 Recycle[t-1] 的表达式。
EDIT2:prod 和 x 是参数,Recycle 和 Solditems 是变量。
希望任何人都能对此有所启发!
森德泽
将同时考虑这两个约束条件(除非您明确将其中一个从问题中排除)。 AMPL 或优化求解器没有时间步长的概念,并且同时考虑了完整的问题,因此您可能需要自己在时间段之间添加一些链接约束以对时间段进行建模。特别是,您可能需要确保库存(例如成品数量留在生产现场以进一步完善)从一个时期转移到另一个时期,例如:
Recycle[t + 1] = Recycle[t] - RecycleDecrease + RecycleIncrease;
你必须找出 Recycle
增加 (RecycleIncrease
) 和减少 (RecycleDecrease
) 的表达式。
此外,如果您想要某种一次只考虑一个约束的迭代过程,那么您应该使用 AMPL script.