主权项 |
一种基于自动微分的含统一潮流控制器的最优潮流算法,其特征在于,所述方法在计算机中依次按以下步骤实现:(1)获得电力系统的网络参数信息;(2)程序初始化,包括:对算法中的状态总变量x设置初值、对拉格朗日乘子y和松弛变量u和w设置初值、设置迭代计数器k=0,设置最大迭代次数K<sub>max</sub>、收敛精度ε、形成节点导纳矩阵Y;(3)计算互补间隙Gap,判断其是否满足精度要求,若满足,则输出最优解,结束循环,否则,继续;(4)利用自动微分技术计算目标函数f(x)、等式约束h(x)、不等式约束<img file="FDA0001053185230000011.GIF" wi="122" he="83" />的一阶导数雅可比矩阵<img file="FDA0001053185230000012.GIF" wi="443" he="79" />以及目标函数、等式约束、不等式约束的二阶导数海森矩阵<img file="FDA0001053185230000013.GIF" wi="699" he="79" />然后计算各常数项L′<sub>x</sub>、L<sub>y</sub>、L<sub>w</sub>、<img file="FDA0001053185230000014.GIF" wi="84" he="70" />并根据以下方程求解总变量x、拉格朗日乘子y和松弛变量u、w的增量Δx、Δy、Δu、Δw;(5)确定原始变量和对偶变量的迭代步长:<maths num="0001"><math><![CDATA[<mrow><msub><mi>α</mi><mi>p</mi></msub><mo>=</mo><mn>0.9995</mn><mi>m</mi><mi>i</mi><mi>n</mi><mo>{</mo><munder><mrow><mi>m</mi><mi>i</mi><mi>n</mi></mrow><mi>i</mi></munder><mrow><mo>(</mo><mfrac><mrow><mo>-</mo><msub><mi>u</mi><mi>i</mi></msub></mrow><mrow><msub><mi>Δu</mi><mi>i</mi></msub></mrow></mfrac><msub><mo>|</mo><mrow><msub><mi>Δu</mi><mi>i</mi></msub><mo><</mo><mn>0</mn></mrow></msub><mo>)</mo></mrow><mo>,</mo><mn>1</mn><mo>}</mo></mrow>]]></math><img file="FDA0001053185230000015.GIF" wi="806" he="206" /></maths><maths num="0002"><math><![CDATA[<mrow><msub><mi>α</mi><mi>d</mi></msub><mo>=</mo><mn>0.9995</mn><mi>m</mi><mi>i</mi><mi>n</mi><mo>{</mo><munder><mrow><mi>m</mi><mi>i</mi><mi>n</mi></mrow><mi>i</mi></munder><mrow><mo>(</mo><mfrac><mrow><mo>-</mo><msub><mi>w</mi><mi>i</mi></msub></mrow><mrow><msub><mi>Δw</mi><mi>i</mi></msub></mrow></mfrac><msub><mo>|</mo><mrow><msub><mi>Δw</mi><mi>i</mi></msub><mo>></mo><mn>0</mn></mrow></msub><mo>)</mo></mrow><mo>,</mo><mn>1</mn><mo>}</mo></mrow>]]></math><img file="FDA0001053185230000016.GIF" wi="821" he="207" /></maths>其中:u<sub>i</sub>、Δu<sub>i</sub>分别表示松弛变量向量u及其增量Δu的第i个元素,w<sub>i</sub>、Δw<sub>i</sub>分别表示松弛变量向量w及其增量Δw的第i个元素,i=1,2...,r;(6)按照下式更新所有变量和拉格朗日乘子:<maths num="0003"><math><![CDATA[<mrow><mfenced open = "[" close = "]"><mtable><mtr><mtd><msup><mi>x</mi><mrow><mo>(</mo><mi>k</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow></msup></mtd></mtr><mtr><mtd><msup><mi>u</mi><mrow><mo>(</mo><mi>k</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow></msup></mtd></mtr></mtable></mfenced><mo>=</mo><mfenced open = "[" close = "]"><mtable><mtr><mtd><msup><mi>x</mi><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow></msup></mtd></mtr><mtr><mtd><msup><mi>u</mi><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow></msup></mtd></mtr></mtable></mfenced><mo>+</mo><msub><mi>α</mi><mi>p</mi></msub><mfenced open = "[" close = "]"><mtable><mtr><mtd><mi>Δ</mi><mi>x</mi></mtd></mtr><mtr><mtd><mi>Δ</mi><mi>u</mi></mtd></mtr></mtable></mfenced></mrow>]]></math><img file="FDA0001053185230000017.GIF" wi="590" he="184" /></maths><maths num="0004"><math><![CDATA[<mrow><mfenced open = "[" close = "]"><mtable><mtr><mtd><msup><mi>y</mi><mrow><mo>(</mo><mi>k</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow></msup></mtd></mtr><mtr><mtd><msup><mi>w</mi><mrow><mo>(</mo><mi>k</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow></msup></mtd></mtr></mtable></mfenced><mo>=</mo><mfenced open = "[" close = "]"><mtable><mtr><mtd><msup><mi>y</mi><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow></msup></mtd></mtr><mtr><mtd><msup><mi>w</mi><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow></msup></mtd></mtr></mtable></mfenced><mo>+</mo><msub><mi>α</mi><mi>d</mi></msub><mfenced open = "[" close = "]"><mtable><mtr><mtd><mi>Δ</mi><mi>y</mi></mtd></mtr><mtr><mtd><mi>Δ</mi><mi>w</mi></mtd></mtr></mtable></mfenced></mrow>]]></math><img file="FDA0001053185230000018.GIF" wi="612" he="183" /></maths>(7)判断迭代次数是否小于最大迭代次数K<sub>max</sub>,若是,则令迭代次数加1,返回步骤(3),否则,输出“计算不收敛”,结束程序。 |