Optimization Cplex优化--”;“没有价值”;对于我的决策变量

Optimization Cplex优化--”;“没有价值”;对于我的决策变量,optimization,cplex,scenarios,stochastic,Optimization,Cplex,Scenarios,Stochastic,我是新的Cplex优化。 我正在尝试用一些场景实现一个优化问题。这是一个两阶段随机模型,包含5种情景,情景发生的概率。 我用5个场景、参数、变量和约束编写了我的模型。对于我的决策变量,我得到以下消息“No Value”。我认为我的模型不起作用,我不知道我应该在代码中更改什么?。有人帮我吗?多谢各位 --Parameter-- int NbWarehause=3; int NbRegion=138; int NbSchool=631; int NbScenario=5; range Wareh

我是新的Cplex优化。 我正在尝试用一些场景实现一个优化问题。这是一个两阶段随机模型,包含5种情景,情景发生的概率。 我用5个场景、参数、变量和约束编写了我的模型。对于我的决策变量,我得到以下消息“No Value”。我认为我的模型不起作用,我不知道我应该在代码中更改什么?。有人帮我吗?多谢各位

--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;
--参数--
内部仓库=3;
int NbRegion=138;
国际学校=631;
int=5;
范围仓库=1..n仓库;
范围区域=1..n区域;
范围学校=1..n学校;
范围情景=1..n情景;
int TravelDistanceWarehouseRegion[仓库][区域]=。。。;
国际能力学校[学校]=。。。;
int ScenarioDemandMatrix[场景][区域]=。。。;
int Fixedcost1=14232;
浮式运输成本1perkm=1.40;
int Fixedcost2=14232;
浮式运输成本2perkm=3;
int Unusedcostperitem=50;
int剥夺成本[地区]=。。。;
内部罚款成本=100;
浮动概率方案[方案]=。。。;
--决策变量---
dvar布尔open1[学校][地区];
dvar int分配1[学校][地区];
dvar布尔open2[学校][地区];
dvar int分配2[学校][地区];
dvar国际未使用库存[学校][地区];
最新满足需求的dvar[区域];
不满足[地区]需求的dvar int;
--目标函数--
最小化——第一阶段--
总和(学校j,地区r)固定成本1*open1[j][r]+
分配的金额(j在学校,w在仓库,r在地区)1[j][r]*
旅行距离仓库地区[w][r]*运输成本1公里+
--第二阶段--
情景中的总和概率情景[s]*(
金额(学校j,地区r)固定成本2*open2[j][r]
+分配的金额(j在学校,w在仓库,r在地区)2[j]
[r] *旅行距离仓库区域[w][r]*运输成本2公里
+金额(学校j,地区r)未用库存[j][r]*未用库存
+总(区域内的r)剥夺成本[r]*延迟满足需求[r]+
未满足要求的金额(区域内的r)[r]*罚款成本);
--约束--
从属于
{
//C1:各地区每所学校的能力//
所有(r地区)金额(j学校)(分配1[j]
[r] +分配的2[j][r]+未使用的库存[j][r])==总和(j英寸)
学校)能力学校[j];
//C2:各地区的需求//
对于所有(情景中的s,区域中的r)总和(学校中的j)(分配1[j]
[r] +Allocated2[j][r])+LateSatisfiedDemand[r]+UnSatisfiedDemand[r]=
场景需求矩阵[s][r];
//C3:开学最多一次//
总和(j在学校,r在地区)(open1[j][r]+open2[j][r])=0;
对于所有(r在地区,j在学校)未用库存[j][r]>=0;
对于所有(区域中的r)延迟满足需求[r]>=0;
对于所有(区域中的r)未满足的需求[r]>=0;

}我想你的模式不可行。 为了理解为什么您可以命名约束,然后CPLEX将为您提供一些放松和细节

首先,你可以改变

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

sum(j在学校,r在地区)(open1[j][r]+open2[j][r])嗨,为什么不在这里分享你的模型,以便其他用户可以尝试?嗨,Alex,谢谢,我不知道,但我现在分享了我尝试了,现在我得到了消息。我认为我在索引方面有问题。您应该设置此设置以查看正确的索引
//C3: open a school maximal one time //
     C3:sum (j in School,r in Region ) (open1[j][r]+open2[j][r]) <= 1;