我在GAMS上做一个很大的优化问题,所以我不可能把整个代码放在这里,但是我希望你能帮我解决我陷入困境的地方。我的模型中有4个功率节点,它们由2条双向传输线(r)连接,就像这样。

其中r_a、r_b是目前输电线路的容量。功率可以双向流动,我跟踪功率从A到A‘,B到B’,以及从A‘到A,B’到B,,所以在2条传输线(r)中有4种功率流(f)。我的决策变量是我需要在每条线路上构建多少容量升级(c(f)),以满足更多的潮流需求。因此,在GAMS中,我将升级的成本最小化为:
investment_cost.. cap_cost =e= sum(f,c(f)*capCost(f));在这里,capCost(f)是提升输电线路容量的资本成本,使其能够额外流动1千兆瓦小时。
我的限制:在每个时间段( t),总潮流p(f,t)必须小于或等于现有线路容量+新升级的容量:
line_cap(f,t).. old_line_cap(l)+c(f) =g= p(f,t);但是,我的解决方案如下所示:
但这是不对的,因为如果我升级线路AA‘6.7GW,我不需要升级A’线,因为他们是相同的线。基本上,我花两倍的钱来升级同一行。
所以我解决了这个问题,我试着用这样的别名:
Alias(f,ff)
line_cap(f,t).. old_line_cap(f)+c(f)+ sum((f,ff)$[line_source(f)=line_sink(ff) and line_source(ff)=line_sink(f)],c(ff)) =g= p(f,t);但这仍然不能解决我的问题。
我很感谢你的帮助!谢谢!
发布于 2022-01-31 08:39:05
如果您想坚持您的4 fs,让我们称它们为您的虚拟行(因为其中的两条虚拟线实际上形成了一条物理线)。现在,让我们介绍一组新的物理行(fPhys)以及虚行和物理行(fMap)之间的映射:
Set fPhys / fAA, fBB /
fMap(f, fPhys) / ("fA'A", "fAA'").fAA
("fB'B", "fBB'").fBB /;现在,您可以继续对流使用set f,并在投资决策中使用fPhys,如下所示:
investment_cost.. cap_cost =e= sum(fPhys,c(fPhys)*capCost(fPhys));
line_cap(f,t).. sum(fMap(f,fPhys), old_line_cap(fPhys)+c(fPhys)) =g= p(f,t);https://stackoverflow.com/questions/70901266
复制相似问题