簡體   English   中英

使用 CP 優化器進行電池調度

[英]Battery scheduling with CP optimizer

我是 CP 優化器的新學生。 我想在CP中進行電池充電/放電調度。

所以,我想知道如何在每個 9 月充電或放電。

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;
    }

這是我的代碼,但不起作用請幫助我。

復制這個問題在https://www.ibm.com/developerworks/community/forums/html/topic?id=5ffa03c4-68ed-44d4-b663-998592e22dec 上得到的答案的簡短版本,在那里交叉發布:模型不可行。 您可以使用沖突優化器找出哪些約束使問題不可行,然后修復它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM