微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

CPLEX库存质量平衡和混合问题

如何解决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 举报,一经查实,本站将立刻删除。