Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 基于CP优化器的电池调度_Algorithm_Optimization_Cplex_Constraint Programming_Ilog - Fatal编程技术网

Algorithm 基于CP优化器的电池调度

Algorithm 基于CP优化器的电池调度,algorithm,optimization,cplex,constraint-programming,ilog,Algorithm,Optimization,Cplex,Constraint Programming,Ilog,我是CP优化器的新学员。 我想在CP中制定电池充电/放电计划 所以,我想知道如何在每个9月充电或放电。 使用CP; int numEVs=。。。; 范围EVs=0..numEVs-1; 整数时间=。。。; 范围时间=0..time-1; 整数成本[倍数]=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24]; 浮动最小荷电状态[EVs]=[0.4,0.4,0.4,0.4,0.4]; 浮动最大荷电状态[EVs]=[0.9,

我是CP优化器的新学员。 我想在CP中制定电池充电/放电计划

所以,我想知道如何在每个9月充电或放电。
使用CP;
int numEVs=。。。;
范围EVs=0..numEVs-1;
整数时间=。。。;
范围时间=0..time-1;
整数成本[倍数]=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24];
浮动最小荷电状态[EVs]=[0.4,0.4,0.4,0.4,0.4];
浮动最大荷电状态[EVs]=[0.9,0.9,0.9,0.9,0.9];
浮动Soc[EVs]=[0.4,0.5,0.6,0.7,0.8];
int k[次,EVs];
元组EVs2{
密钥int-id;
int Cpower[次];
int Dpower[次];
}
//浮点数delSm[EVs]=Soc[EVs]-min_Soc[EVs];
//浮动delSp[EVs]=Soc[EVs]-最大Soc[EVs];
dvar间隔t[i次]可选大小1;
dvar int Pcmax[次数,EVs];//为什么我不能使用float。
dvar int Pdmax[次数,EVs];
//0..1中的dvar int k[次,EVs];
dexpr浮动成本=总和(电动汽车中的t,j)(k[t,j]*成本[t]*Pcmax[t,j]-(1-k[t,j])*成本[t]*Pdmax[t,j]);
将成本降至最低;//最大限度地降低充电/放电价格
服从{
forall(电动汽车中的t、j)

k[t,j]*Pcmax[t,j]-(1-k[t,j])*Pdmax[t,j]>=Soc[j]-min_-Soc[j]&k[t,j]*Pcmax[t,j]-(1-k[t,j])*Pdmax[t,j]复制这个问题得到的答案的简短版本,在交叉发布的地方:模型不可行。您可以使用冲突细化器来找出哪些约束使问题不可行,然后修复它们。

同样的问题,您所说的“不工作”到底指的是什么?
using CP;


int numEVs = ...;
range EVs = 0..numEVs-1;
int time = ...;
range times = 0..time-1;


int cost[times] = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24];
float min_soc[EVs] = [0.4,0.4,0.4,0.4,0.4];
float max_soc[EVs] = [0.9,0.9,0.9,0.9,0.9];
float Soc[EVs] = [0.4, 0.5, 0.6, 0.7, 0.8];
int k[times,EVs];
tuple EVs2 {
  key int id;
  int Cpower[times];
  int Dpower[times];
}


//float delSm[EVs] = Soc[EVs] - min_soc[EVs]; 
//float delSp[EVs] = Soc[EVs] - max_soc[EVs];
dvar interval t[i in times] optional size 1;
dvar int Pcmax[times, EVs]; // why I can't use float.
dvar int Pdmax[times, EVs];
//dvar int k[times,EVs] in 0..1;
dexpr float Cost = sum(t, j in EVs) (k[t,j]*cost[t]*Pcmax[t,j] - (1-k[t,j])*cost[t]*Pdmax[t,j]);

minimize Cost; // minimize charging/discharging price

subject to {
  forall(t, j in EVs)
  k[t,j]*Pcmax[t,j] - (1-k[t,j])*Pdmax[t,j] >= Soc[j]-min_soc[j] && k[t,j]*Pcmax[t,j] - (1-k[t,j])*Pdmax[t,j] <= Soc[j]-max_soc[j];  
// each EV's battery state of charge must less or bigger than limits. 
  forall(t, j in EVs)
    {
    Pdmax[t][j] >=0;
    Pdmax[t][j] <=10;
    Pcmax[t][j] >=0;
    Pcmax[t][j] <=8;
    }