Algorithm GLPK:没有原始可行解

Algorithm GLPK:没有原始可行解,algorithm,glpk,Algorithm,Glpk,我试图解决GLPK中的一个问题,但它给了我这个消息“问题没有原始可行的解决方案”。在下面你可以找到这个程序。给出错误的约束是“约束6”,但我不知道如何修复它。tnx为你们提供帮助 param n, integer ; # nbr noeuds param l, integer ; # Number of periods param m, integer ; # nbr vehicle set N := 0..n ; # set of nodes (plans & customers) s

我试图解决GLPK中的一个问题,但它给了我这个消息“问题没有原始可行的解决方案”。在下面你可以找到这个程序。给出错误的约束是“约束6”,但我不知道如何修复它。tnx为你们提供帮助

param n, integer ; # nbr noeuds
param l, integer ; # Number of periods
param m, integer ; # nbr vehicle
set N := 0..n ; # set of nodes (plans & customers)
set Nc := 1..n ;
set T := 0..l ; # set of periods
set K := 1..m ; # vehicles
set A := {i in N, j in N : i!=j}; #Set of Arcs
# paramètres 
param u ; # unit produc. cost
param f ; # fixed produc. cost
param h{i in N},integer, >=0 ; # Holding cost
param c {i in N, j in N},integer, >=0 ; # Transportation cost
param C ; # Production capacity
param Q ; # Vehicle capacity
param L {i in N},integer, >=0 ; #Maximum or target inventory level at node i
param I0 {i in N},integer, >=0 ; # initial inventory at node i period 0
param d{i in N, t in T},integer, >=0  ; # demand
param M{t in T} := min( C, sum {j in T, i in Nc:j>=t } d[i,j] );
param Mx{i in Nc, t in T} := min( L[i], Q, sum {j in T:j>=t } d[i,j] );
# variables 
var p{t in T}, >=0, integer ; # production qty 
var q{i in N, t in T}, >=0, integer ; # qty delivered
var y{t in T}, binary ;# Setup for period t (1 if there is production at 
var x{i in N, j in N, t in T}, binary; # 1 if a vehicle travels directly from node i to j, 0 otherwise
var I{i in N, t in T}, integer, >=0 ;   # Inventory at node i, period t
var z0{t in T}, integer, >=0; # the number of vehicles leaving the plant in period t
var z {i in Nc, t in T}, binary;  # 1 if customer i is visited in t, 0 otherwise
var w {i in N, t in T}, integer, >=0  ;#load of vehicle before making a delivery
# fonction objectif: mimiser les coûts
minimize cost: sum{t in T:t>0} ( u*p[t]+ f*y[t] +(sum{i in N} h[i]*I[i,t] )+ 
(sum{ (i,j) in A} c[i,j]*x[i,j,t] )) ;


s.t. RInit{i in N}       : I0[i] = 0 ;
# Constraint (2)
s.t. R1{t in T:t>0}:I[0, t-1]+p[t]=sum{i in Nc}q[i,t]+I[0,t];
# Constraint (3)
s.t. R2{i in Nc, t in T:t>0} : I[i,t-1] + q[i,t] = d[i,t] + I[i,t] ;
# Constraint (4)
s.t. R3{t in T:t>0} : p[t] <= M[t]*y[t] ;
# Constraint (5)
s.t.R4{t in T:t>0} : I[0,t] <= L[0];
# Constraint (6)
s.t. R5{i in Nc, t in T:t>0} : I[i,t-1]+q[i,t] <= L[i];
# Constraint (7)
s.t. R6{i in Nc, t in T:t>0} : q[i,t] <= Mx[i,t]*z[i,t];
# Constraint (8)
s.t. R7{ i in Nc ,t in T:t>0}: (sum{j in N} x[j,i,t])=z[i,t];
# Constraint (9)
s.t. R8{i in N, t in T: t>0 and i>0} :sum{j in N}x[j,i,t]+sum{j in N} x[i,j,t]= 2*z[i,t];
# Constraint (10)
s.t. R9{t in T: t>0}: z0[t]<= m;
#Constraint (11)
s.t. R10{ t in T,(i,j) in A: t>0 and i>0}: w[i,t]-w[j,t]>=q[i,t]-Mx[i,t]*(1-x[i,j,t]);
#Constraint (12)
s.t. R11{i in Nc, t in T: t>0}:0 <= w[i,t] ;
s.t. R12{i in Nc, t in T: t>0}: w[i,t] <= Q*z[i,t];
#Constraint (13)
s.t. R13{i in N, t in T:t>0}: p[t] >=0;
s.t. R14{i in N, t in T:t>0} : I[i,t] >=0; 
s.t. R15{i in N, t in T:t>0} : q[i,t] >=0;
solve ;
printf "\n\nTotal cost:%f\n", cost ;
display Mx ;
display M ;
data;
param n := 3;
param l := 6 ;
param m := 1 ;
param u := 1 ;
param f := 10 ;
param C := 4;
param Q := 5;
param d : 0 1 2 3 4 5 6 :=
          0  0 0 0 0 0 0 0
          1  0 5 6 7 8 9 10
          2  0 6 7 8 9 10 11 
          3  0 6 7 8 9 10 12 ;
param c : 0 1 2 3  :=
   0  0 0 0 0 
   1  5 6 7 8 
   2  6 7 8 9 
   3  6 7 8 9  ;
param h  :=
   0  4
   1  5
   2  6
   3  6  ;
param I0  :=
   0  0
   1  0
   2  0
   3  0  ;
param L  :=
   0  0
   1  1
   2  2
   3  3  ;
end ;
参数n,整数;#丁腈橡胶
参数l,整数;#周期数
参数m,整数;#丁腈橡胶汽车
集合N:=0..N;#节点集(计划和客户)
设置Nc:=1..n;
集合T:=0..l;#周期集
集合K:=1..m;#车辆
设置A:={i in N,j in N:i!=j}#弧集
#paramètres
参数u;#单位产量。成本
参数f;#固定产量。成本
N}中的参数h{i,整数,>=0;#持有成本
参数c{i in N,j in N},整数,>=0;#运输成本
参数C;#生产能力
参数Q;#车辆通行能力
参数L{i in N},整数,>=0#节点i的最大或目标库存水平
参数I0{i in N},整数,>=0;#节点i期间0的初始库存
参数d{i in N,t in t},整数,>=0;#需要
参数M{t in t}:=min(C,sum{j in t,i in Nc:j>=t}d[i,j]);
参数Mx{i in Nc,t in t}:=min(L[i],Q,sum{j in t:j>=t}d[i,j]);
#变数
var p{t in t},>=0,整数;#生产数量
var q{i in N,t in t},>=0,整数;#交付数量
变量y{t in t},二进制;#时段t的设置(1,如果在
var x{i in N,j in N,t in t},二进制;#1如果车辆直接从节点i行驶到j,则为0
变量I{I in N,t in t},整数,>=0;#节点I处的库存,周期t
var z0{t in t},整数,>=0;#t期间离开工厂的车辆数量
var z{i in Nc,t in t},binary;#1如果在t中访问了客户i,则为0
var w{i in N,t in t},整数,>=0;#交货前的车辆装载量
#基金会目标:mimiser les coāts
最小化成本:和{t in t:t>0}(u*p[t]+f*y[t]+(和{i in N}h[i]*i[i,t])+
(和{(i,j)在A}c[i,j]*x[i,j,t]);
s、 t.RInit{i in N}:I0[i]=0;
#限制(2)
s、 t.R1{t在t:t>0}:I[0,t-1]+p[t]=和{I在Nc}q[I,t]+I[0,t];
#限制(3)
s、 t.R2{i在Nc中,t在t:t>0}:i[i,t-1]+q[i,t]=d[i,t]+i[i,t];
#限制(4)
s、 t.R3{t in t:t>0}:p[t]0}:I[0,t]0}:I[I,t-1]+q[I,t]0}:q[I,t]0}:(和{j in N}x[j,I,t])=z[I,t];
#限制(9)
s、 t.R8{i in N,t in t:t>0和i>0}:sum{j in N}x[j,i,t]+sum{j in N}x[i,j,t]=2*z[i,t];
#限制(10)
s、 t.R9{t在t:t>0}:z0[t]0和i>0}:w[i,t]-w[j,t]>=q[i,t]-Mx[i,t]*(1-x[i,j,t]);
#限制(12)
s、 t.R11{i在Nc中,t在t:t>0}:0}:w[i,t]0}:p[t]>=0;
s、 t.R14{i in N,t in t:t>0}:i[i,t]>=0;
s、 t.R15{i in N,t in t:t>0}:q[i,t]>=0;
解决;
printf“\n\n总成本:%f\n”,成本;
显示Mx;
显示M;
数据;
参数n:=3;
参数l:=6;
参数m:=1;
参数u:=1;
参数f:=10;
参数C:=4;
参数Q:=5;
参数d:0 1 2 3 4 5 6:=
0  0 0 0 0 0 0 0
1  0 5 6 7 8 9 10
2  0 6 7 8 9 10 11 
3  0 6 7 8 9 10 12 ;
参数c:0 1 2 3:=
0  0 0 0 0 
1  5 6 7 8 
2  6 7 8 9 
3  6 7 8 9  ;
参数h:=
0  4
1  5
2  6
3  6  ;
参数I0:=
0  0
1  0
2  0
3  0  ;
参数L:=
0  0
1  1
2  2
3  3  ;
结束;

我认为问题在于您的参数化

在约束条件3中:

s.t. R2{i in Nc, t in T:t>0} : I[i,t-1] + q[i,t] = d[i,t] + I[i,t];
你把I+q设为等于参数d加上一些东西。d在5到12的范围内,所有变量都是正的

在约束条件6中:

s.t. R5{i in Nc, t in T:t>0} : I[i,t-1]+q[i,t] <= L[i];
s.t.R5{i在Nc中,t在t:t>0}:i[i,t-1]+q[i,t]