日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

给书配代码-电力经济调度(3):计及网络安全约束的经济调度模型

發布時間:2024/9/30 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 给书配代码-电力经济调度(3):计及网络安全约束的经济调度模型 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

電氣博文傳送門
學好電氣全靠它,個人電氣博文目錄(持續更新中…)

理論


書上例子預備知識

解釋: import numpy as np #A節點與發電機組關聯矩陣 """發電機組1,發電機組2,發電機組3 節點1 節點2 節點3 """ A=np.array([[1,1,0],[0,0,1],[0,0,0]]) #B節點與負荷關聯矩陣 """節點2負荷,節點3負荷 節點1 節點2 節點3 """B=np.array([[0,0],[1,0],[0,1]]) #S為節點與支路關聯矩陣。其支路始節點對應元素為1,終節點對應-1 """ 支路12 ,支路13,支路23 節點1 節點2 節點3 """ S=np.array([[1,1,0],[-1,0,1],[0,-1,-1]]) #X為支路電抗矩陣,它是一個對角陣,對角元素為各支路電抗值,其余元素為0 X=np.array([[0.25,0,0],[0,0.25,0],[0,0,0.25]])

正文-書上算例

不考慮網絡約束

考慮網絡約束

正文-書上算例求解

目標函數如圖

不看這個圖,我用腦子想一下
網絡安全約束,顧名思義 就是在普通調度上,同時是潮流滿足約束,KCL,KVL等

于是我們可以理解為優化目標為傳統的經濟調度優化目標
約束分別為

  • 等式約束 輸入功率=負荷。
  • 不等式約束 ,發電機組的上下限。
  • 等式約束 潮流滿足KCL,KVL 。(當是我們通過轉移因子算法求出潮流時,其潮流本身就滿足KCL,KVL),這是該等式約束我們轉換為 潮流的上下限約束。

轉移因子算法求潮流

#節點功率凈輸入向量
Pinj=[PG1,PG2,PG3-PD3]

#SF矩陣格式如下,為某個節點注入功率時, 功率要從參考節點流出
取參考節點為1

-節點1注入1功率時,節點2注入1功率時節點3注入1功率時
支路1-20(從節點1流入,從參考節點1流出,即不走支路1-2)-2/3 此時電流方向為2指向1,與1-2相反,所以為- ,根據圖可以求得數值2/3-1/3
2倍支路1-30-1/3,此時電流方向是3指向1-2/3
支路2-301/3-1/3

得到潮流方程

展開得到圖3-5的潮流如下

PD3 = 800PL12 = -(2 / 3) * PG2 - (1 / 3) * PG3 + (1 / 3) * PD3PL13 = (-(1 / 3) * PG2 - (2 / 3) * PG3 + (2 / 3) * PD3) * 0.05PL23 = (1 / 3) * PG2 - (1 / 3) * PG3 + (1 / 3) * PD3

編程語言:python

import numpy as np from scipy import optimize as opt import numpy as np from scipy.optimize import minimize # 目標函數 def objective(x): #=原文中的mincost p11=x[0]p12=x[1]p13=x[2]p21=x[3]p22=x[4]p23=x[5]p31=x[6]p32=x[7]p33=x[8]return (40*p11+50*p12+57.5*p13+43.75*p21+46.25*p22+48.75*p23+55.8*p31+57*p32+58.2*p33)# 約束條件 def constraint1(x): #等式約束pI11 = x[0]pI12 = x[1]pI13 = x[2]pI21 = x[3]pI22 = x[4]pI23 = x[5]pI31 = x[6]pI32 = x[7]pI33 = x[8]PG1 = 100 + pI11 + pI12 + pI13PG2 = 100 + pI21 + pI22 + pI23PG3 = 50 + pI31 + pI32 + pI33return pI11+pI12+pI13+pI21+pI22+pI23+pI31+pI32+pI33-550#return PG1+PG2+PG3-800#上下限 pI11=(0,200) pI12 = (0,200) pI13 = (0,100) pI21 = (0,100) pI22 = (0,100) pI23 = (0,100) pI31 =(0,50) pI32 = (0,50) pI33 = (0,50)bnds=(pI11,pI12,pI13,pI21,pI22,pI23,pI31,pI32,pI33)# 約束條件 def constraint2(x): #不等式約束 線路PL12 《=300pI11 = x[0]pI12 = x[1]pI13 = x[2]pI21 = x[3]pI22 = x[4]pI23 = x[5]pI31 = x[6]pI32 = x[7]pI33 = x[8]PD3=800PG1 = 100 + pI11 + pI12 + pI13PG2 = 100 + pI21 + pI22 + pI23PG3 = 50 + pI31 + pI32 + pI33PL12 = -(2 / 3) * PG2 - (1 / 3) * PG3 + (1 / 3) * PD3return 300-np.abs(PL12)# 約束條件 def constraint3(x): #不等式約束 不等式約束 線路PL13 《=300pI11 = x[0]pI12 = x[1]pI13 = x[2]pI21 = x[3]pI22 = x[4]pI23 = x[5]pI31 = x[6]pI32 = x[7]pI33 = x[8]PD3=800PG1 = 100 + pI11 + pI12 + pI13PG2 = 100 + pI21 + pI22 + pI23PG3 = 50 + pI31 + pI32 + pI33PL13 = (-(1 / 3) * PG2 - (2 / 3) * PG3 + (2 / 3) * PD3) * 0.05return 300-np.abs(PL13)# 約束條件 def constraint4(x): #不等式約束 不等式約束 線路PL23 《=330pI11 = x[0]pI12 = x[1]pI13 = x[2]pI21 = x[3]pI22 = x[4]pI23 = x[5]pI31 = x[6]pI32 = x[7]pI33 = x[8]PD3=800PG1 = 100 + pI11 + pI12 + pI13PG2 = 100 + pI21 + pI22 + pI23PG3 = 50 + pI31 + pI32 + pI33PL23 = (1 / 3) * PG2 - (1 / 3) * PG3 + (1 / 3) * PD3return 330-np.abs(PL23)con1 = {'type': 'eq', 'fun': constraint1} con2 = {'type': 'ineq', 'fun': constraint2} con3 = {'type': 'ineq', 'fun': constraint3} con4 = {'type': 'ineq', 'fun': constraint4} cons = ([con1,con2,con3,con4]) # 4個約束條件if __name__ =='__main__':# 初始值x0 = np.random.uniform(10, 400, 9)# 計算solution = minimize(objective, x0, method='SLSQP',bounds=bnds, constraints=cons)x = solution.xpI11 = x[0]pI12 = x[1]pI13 = x[2]pI21 = x[3]pI22 = x[4]pI23 = x[5]pI31 = x[6]pI32 = x[7]pI33 = x[8]#PG1 = 100 + pI11 + pI12 + pI13PG2 = 100 + pI21 + pI22 + pI23PG3 = 50 + pI31 + pI32 + pI33PL13 = 0.5 * ((0.01 + 0.01) * (PG3 - 800) + 0.01 * PG2) / (0.01 + 0.01 + 0.01)PL12 = ((0.01 + 0.01) * PG2 + 0.01 * (PG3 - 800)) / (0.01 + 0.01 + 0.01)PL23 = ((0.01 + 0.01) * (PG3 - 800) + 0.01 * PG1) / (0.01 + 0.01 + 0.01)print('PG1',PG1)print('PG2', PG2)print('PG3', PG3)print('PL13',np.abs(PL13))print('PL12',np.abs(PL12))print("PL23",np.abs(PL23))

結果如圖,本代碼比書上給的方法簡單得多。

更多優化算法見

python求解帶約束目標優化問題(非線性規劃,粒子群,遺傳,差分進化)

進階版論文程序鏈接:電氣期刊論文實現:考慮爬坡約束和輸電損耗的經濟調度【有代碼】

難點:理解轉移因子法求潮流


作者:電氣-余登武。寫作不容易,如果你覺得本文不錯,請點個贊支持下。

總結

以上是生活随笔為你收集整理的给书配代码-电力经济调度(3):计及网络安全约束的经济调度模型的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。