Cplex 优化——我的决策变量“没有价值”

问题描述 投票:0回答:2

我是 CPLEX 优化的新手。 我正在尝试在某些场景下实现优化问题。它是一个两阶段随机模型,有 5 个场景以及场景发生的概率。 我用 5 个场景、参数、变量和约束编写了模型。我的决策变量收到以下消息“无值”。我认为我的模型不起作用,我不知道我的代码应该更改什么?有人可以帮助我吗?非常感谢。

--Parameter-- 
int NbWarehause=3;
int NbRegion=138;
int NbSchool=631;
int NbScenario=5;

range Warehouse=1..NbWarehause;
range Region=1..NbRegion;
range School=1..NbSchool;
range Scenario=1..NbScenario;

int TravelDistanceWarehouseRegion[Warehouse][Region]=...;
int CapacitySchool[School] =...;
int ScenarioDemandMatrix[Scenario][Region]=...;
int Fixedcost1  = 14232;
float Transportcost1perkm=1.40;
int Fixedcost2  = 14232;
float Transportcost2perkm=3;
int Unusedcostperitem=50;
int Depriviationcost[Region]=...;
int Penaltycost=100;
float ProbabilityScenario[Scenario]=...;

--Decision variables---
dvar boolean open1[School][Region];
dvar int Allocated1[School][Region];
dvar boolean open2[School][Region];
dvar int Allocated2[School][Region];
dvar int UnusedInventory[School][Region];
dvar int LateSatisfiedDemand[Region];
dvar int UnSatisfiedDemand[Region];

--Objective function--
  minimize --the first stage--

        sum(j in School, r in Region) Fixedcost1 * open1[j][r] + 
         sum( j in School, w in Warehouse, r in Region) Allocated1[j][r] * 
         TravelDistanceWarehouseRegion[w][r]*Transportcost1perkm +

     --the second stage--

    sum(s in Scenario) ProbabilityScenario[s]*( 

    sum(j in School,r in Region)Fixedcost2 *open2[j][r]

    +sum( j in School, w in Warehouse,r in Region) Allocated2[j] 
     [r]*TravelDistanceWarehouseRegion[w][r]*Transportcost2perkm

    +sum( j in School,r in Region)UnusedInventory[j][r]*Unusedcostperitem

    +sum(r in Region) Depriviationcost[r]*LateSatisfiedDemand[r]+

     sum(r in Region)UnSatisfiedDemand[r]*Penaltycost    );

  --Constraint--
  subject to 
  {
       //C1: capacity of each school in its region//
        forall (r in Region ) sum (j in School) (Allocated1[j] 
        [r]+Allocated2[j] [r]+UnusedInventory[j][r])== sum (j in 
           School)CapacitySchool[j];

    //C2: Demand of each region //
      forall (s in Scenario,r in Region) sum (j in School)(Allocated1[j] 
      [r]+Allocated2[j][r])+LateSatisfiedDemand[r]+UnSatisfiedDemand[r] ==   
       ScenarioDemandMatrix[s][r];

      //C3: open a school maximal one time //
     sum (j in School,r in Region ) (open1[j][r]+open2[j][r]) <= 1;


     //C4: school can not supply more than its capacity in the second 
    stage I dont know how do I  write under scenario //
    forall (j in School,r in Region)Allocated2[j][r]<=CapacitySchool[j] - 
        Allocated1[j][r]*(open1[j][r]+open2[j][r]);


    //C5: Sum of all probability is equal 1
     sum (s in Scenario)ProbabilityScenario[s]==1;

    // C6: Nonnegative Constraint 

   forall (r in Region ,j in School) Allocated1[j][r]>=0;
   forall (r in Region ,j in School)Allocated2[j][r]>=0;
   forall (r in Region ,j in School)UnusedInventory[j][r]>=0;
   forall (r in Region)LateSatisfiedDemand[r]>=0;
   forall (r in Region) UnSatisfiedDemand[r]>=0;

}

optimization cplex scenarios stochastic
2个回答
0
投票

我猜你的模型不可行。 要理解为什么您可以命名您的约束,然后 CPLEX 将为您提供一些放松和冲突。

首先你可以改变

//C3: open a school maximal one time //
     sum (j in School,r in Region ) (open1[j][r]+open2[j][r]) <= 1;

进入

//C3: open a school maximal one time //
     C3:sum (j in School,r in Region ) (open1[j][r]+open2[j][r]) <= 1;

然后依靠

https://www.ibm.com/support/pages/display-full-indices-or-real-map-item-name-variables-and-constraints

获取真实指标


0
投票

我遇到了与之前问的人同样的问题,“没有价值”,所以我尝试命名约束,而不是依赖于此 .settings.bigMapThreshold = 100000; 但我不明白我在哪里或如何进行更改? 提前谢谢你

© www.soinside.com 2019 - 2024. All rights reserved.