如何解决CPLEX库存质量平衡和混合问题
我对编码有疑问。我想优化炼油的混合7天。 一个时隙是1天。如果没有库存条款,则优化不会有问题。但是,当我添加组件术语的术语清单时,没有什么是混合的和不可行的“质量约束不可行-未缩放(缩放):”这样的内容。我怎么解决这个问题。请帮助我。...
源代码如下
// Model Parameters
{string} Products = ...;
{string} Components = ...;
int NbPeriods = ...;
range Periods = 1..NbPeriods;
//Product information
int Demand[Products][Periods] =...;
float ProdPrice[Products][Periods] =...;
float SulMax[Products][Periods] =...;
float DenMin[Products][Periods] =...;
float DenMax[Products][Periods] =...;
float distilMax[Products][Periods] =...;
float FPMin[Products][Periods] =...;
//Component information
float CompPrice[Components][Periods] =...;
float Sul[Components][Periods] =...;
float Den[Components][Periods] =...;
float distil[Components][Periods] =...;
float FP[Components][Periods] =...;
float IniInv[Components] =...;
float IniBlend[Components][Products]=...;
float FlowRate[Components][Periods] =...;
//decision variable deFinition
dvar float+ Blend[Components][Products][0..NbPeriods];
dvar float+ Comp[Components][0..NbPeriods];
dexpr float Profit =
sum(p in Products,c in Components,t in Periods) ProdPrice[p][t] * Blend[c][p][t];
dexpr float Cost =
sum(p in Products,t in Periods) CompPrice[c][t] * Blend[c][p][t];
//Model Objective Function
maximize Profit - Cost ;
//Constraints
subject to {
forall(p in Products,t in Periods) // Demand Constraint
contDemand:
sum(c in Components) Blend[c][p][t] == Demand[p][t];
forall(c in Components,t in Periods)
ctCapacity:
sum(p in Products) Blend[c][p][t] <= Comp[c][t];
forall(c in Components) // Initial Inventory Constraint
contInventory:
Comp[c][0] == IniInv[c];
forall(c in Components,p in Products) // Initial Blend Constraint
continiBlendin:
Blend[c][p][0] == IniBlend[c][p];
forall(t in Periods,p in Products) // Material Balance
contInvMaterial:
Comp[c][t-1] + FlowRate[c][t] - sum(c in Components) Blend[c][p][t-1] == Comp[c][t];
forall(p in Products,t in Periods) // Product Property Constraint : Max Sulfur
contSulfur:
sum(c in Components)
(Sul[c][t] - SulMax[p][t]) * Blend[c][p][t] <= 0;
forall(p in Products,t in Periods) // Product Property Constraint : Min < Density < Max
contDensity:
sum(c in Components)
(Den[c][t] - DenMax[p][t]) * Blend[c][p][t] <= 0
&&sum(c in Components)
(Den[c][t] - DenMin[p][t]) * Blend[c][p][t] >= 0;
forall(p in Products,t in Periods) // Product Property Constraint : Max distil 90%
contdistillation:
sum(c in Components)
(distil[c][t] - distilMax[p][t]) * Blend[c][p][t] <= 0;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。