目录
本系列已发布文章列表:
Lecture1b: 如何由原始线性规划模型得到最优条件和对偶问题
回顾之前的电力市场的问题模型:
1 竞争性博弈问题
1.1 问题转化
对发电厂而言,其目标是最大化收益;而对于用电企业而言,则是最大化效用。那么,如何计算收益和效用呢?
- 发电厂收益:发电量 * (市场价格 - 发电成本价格)
- 用电企业效用:用电量 * (投标价格 - 市场价格)
由此,对于每个市场参与主体,我们有如下优化问题:
根据KKT条件,我们可以将 电量平衡约束 等价为一个优化问题:
在这个优化问题中,我们试图在惩罚任何供给和需求不匹配的情况。也就是说,如果生产价格与需求价格不相等,就会有 λ 的惩罚。
由此我们得到了五个优化问题:
那么我们可以将这五个问题分开求解吗?显然是不能的。原因是:
- 市场出清价格 λ 在price-setter问题中是变量,而在G1,G2,D1,D2中是参数
- 发电量和用电量在G1,G2,D1,D2中是变量,而在price-setter问题中是参数
- 因此上述五个问题是相互关联的,我们无法将其进行拆解而单独处理。这是一个博弈论的问题。
这个问题也被称为“竞争性均衡【“competitive equilibrium】,这是一个非合作博弈,所有玩家都在追求自己的最大化利益。只有当他们作为一个联盟,实现联盟利益最大化时,他们可以构建一个合作博弈。
关于竞争性博弈的三篇经典文献:
- Kantorovich, L. V. (1960). Mathematical methods of organizing and planning production. Management science, 6(4), 366-422.
- Samuelson, P. A. (1952). Spatial price equilibrium and linear programming. The American economic review, 42(3), 283-303.
- Arrow, K. J., & Debreu, G. (1954). Existence of an equilibrium for a competitive economy. Econometrica: Journal of the Econometric Society, 265-290.
1.2 纳什均衡
纳什均衡:没有市场参与者可以偏离均衡点而增加他自身的利益
约束只依赖于自己,而目标却与其他参与者相关联。这样的问题,我们可以称其为一个纳什均衡问题。广义的纳什均衡问题,每个参与者的目标和约束均与其他参数者相关联。显然,我们的问题是一个纳什均衡,但不是广义纳什均衡。
我们讨论纳什均衡和广义纳什均衡,那么为什么要区别他们呢?因为纳什均衡有很多很好的性质,如解的存在性,唯一性等;而广义纳什均衡并不具备同样的优秀属性。
那么,如何做到所有参与者都对市场出清价格保持满意,并且不愿意违背呢? 我们手头有计算纳什均衡和通过优化得到问题的解。实际中,我们应该采用那个方法呢?
我们先讨论均衡的方法,我们先将优化问题使用 KKT 条件进行等价变换,得到一个MCP;然后使用PATH等求解器计算,或者定义辅助的目标来解决。
1.3 优化问题与均衡问题的KKT等价性
接着又来了一个问题,我们由均衡模型得到的KKT,和由优化模型得到的KKT是等价的吗?如果等价,那么均衡模型和优化模型也就是等价的。显然,这里是等价的。
那么,我们求解一个优化问题,实际上也是在求解一个等价的均衡问题。因此,我们可以得到以下两个结论:
- 优化问题和均衡问题是等价的,因为他们都能推导出相同的KKT条件
- 优化问题和均衡问题都能获得纳什均衡解,即没有市场参与者愿意偏离市场出清价格。
2 紧凑模型
优化模型版本:
均衡模型版本:
MCP模型版本:
3 使用PATH求解器求解MCP模型的GAMS源码
3.1 源码文件
sets
g generators /G1*G2/
n buses /N1*N3/
d demands /D1*D2/
alias(n,m)
Sets
MapN(n,n) Network topology /
N1.N2
N1.N3
N2.N3
N2.N1
N3.N1
N3.N2/
MapG(g,n) Location of generators /
G1.N1
G2.N2/
MapD (d,n) Location of demands /
D1.N2
D2.N3/;
Parameter PGmax(g) Capacity of generators [MW]/
G1 100
G2 80/ ;
Parameter C(g) offer price of generators [$ per MWh]/
G1 12
G2 20/;
Parameter L(d) Maximum load of demands [Mw]/
D1 100
D2 50/;
Parameter U(d) utility of demands [$ per MWh]/
D1 40
D2 35/;
Table Fmax (n,n) capacity of transmission lines [MW]
N1 N2 N3
N1 0 100 100
N2 100 0 100
N3 100 100 0;
Table B(n,n) susceptance of transmission lines [Ohm^{-1}]
N1 N2 N3
N1 0 500 500
N2 500 0 500
N3 500 500 0;
free variable
p_D(d) consumption level of demand d [MW]
p_G(g) Production level of generator g[Mw]
theta(n) voltage angle of bus n [rad]
lambda(n) Dual var.: locational marginal price [$ per MWh]
gamma Dual var. associated with equality constraint introducing ref. bus
;
Positive variable
mu_D_min(d) Dual var. associated with lower bound of consumption level
mu_D_max(d) Dual var. associated with upper bound of consumption level
mu_G_min(g) Dual var. associated with lower bound of production level
mu_G_max(g) Dual var. associated with upper bound of production level
eta_min(n,m) Dual var. associated with transmission capacity constraints
eta_max(n, m) Dual var. associated with transmission capacity constraints;
Equations
cons1,cons2,cons3,cons4,cons5,cons6,cons7, cons8,cons9,cons10,cons11,cons12;
* Primer constraints
cons1(g).. p_G(g)=g= 0;
cons2(g).. - p_G(g) =g=-PGmax(g);
cons3(d).. p_D(d) =g= 0;
cons4(d).. - p_D(d) =g= -L(d);
cons5(n,m).. [B(n,m)*(theta(n)-theta(m))] =g= -Fmax(n,m);
cons6(n,m).. -[B(n,m)*(theta(n)-theta(m))] =g= -Fmax(n,m);
cons7.. theta('N1') =e= 0 ;
cons8(n).. - sum(g$MapG(g,n),p_G(g)) + sum(d$MapD(d,n),p_D(d))
+ sum(m$MapN(n,m),B(n,m)*(theta(n)-theta(m))) =e= 0;
* KKT conditions
cons9(d).. -U(d)+sum(n$MapD(d,n),lambda(n)) + mu_D_max(d) - mu_D_min(d) =e= 0;
cons10(g).. C(g)-sum(n$MapG(g,n),lambda(n)) + mu_G_max(g) - mu_G_min(g) =e= 0;
cons11(n)$(ord(n) eq 1).. sum(m$MapN(n,m),B(n,m)*[lambda(n)- lambda(m)
+ eta_max(n, m) - eta_max(m, n) - eta_min(n,m)
+ eta_min(m,n)]) + gamma =e= 0;
cons12(n)$(ord(n) <> 1).. sum(m$MapN(n,m),B(n,m)*[lambda(n)-lambda(m)
+ eta_max(n,m) - eta_max(m,n) - eta_min(n,m)
+ eta_min(m,n)]) =e= 0 ;
Model Market_clearing /
cons1.mu_G_min
cons2.mu_G_max
cons3.mu_D_min
cons4.mu_D_max
cons5.eta_min
cons6.eta_max
cons7.gamma
cons8.lambda
cons9
cons10
cons11
cons12/;
Solve Market_clearing using mcp;
option mcp =PATH;
Display p_G.l, p_D.l, lambda.l;
3.2 计算结果
p_G.L Production level of generator g[Mw]
G1 100.000, G2 50.000
p_D.L consumption level of demand d [MW]D1 100.000, D2 50.000
lambda.L Dual var.: locational marginal price [$ per MWh]N1 20.000, N2 20.000, N3 20.000
这与我们在Lecture01:市场出清问题的优化建模 中得到解是一致的。