Известия РАН. Энергетика, 2019, № 4, стр. 3-15

Ускорение метода последовательного квадратичного программирования в задаче оптимизации установившихся режимов ЭЭС

А. Г. Телятник 1, Т. А. Васьковская 2*

1 ООО СИБУР
Москва, Россия

2 Национальный исследовательский университет “МЭИ”
Москва, Россия

* E-mail: tatiana.vaskovskaya@gmail.com

Поступила в редакцию 23.07.2019
После доработки 12.08.2019
Принята к публикации 12.08.2019

Полный текст (PDF)

Аннотация

В работе предложен подход, позволяющий существенно ускорить расчет суточного оптимального установившегося режима электроэнергетической системы (ЭЭС) большой размерности в полной нелинейной постановке. Ускорение достигается за счет упрощения матрицы вторых производных, используемой в методе последовательного квадратичного программирования (ПКП). Сравнение решения задачи оптимизации с известными методами показывает существенное преимущество предлагаемого метода по времени решения и объему занимаемой оперативной памяти. Сформулированы условия применимости данного подхода в общем случае задачи оптимизации с нелинейными ограничениями. Проведены тестовые расчеты для тестовой ЭЭС Польши с 2736 узлами и увеличенной втрое тестовой ЭЭС Польши за один и 24 часовых интервалов. Показано, что по сравнению с известными методами время расчета снижается при росте размерности задачи.

Ключевые слова: оптимизация, электроэнергетическая система, установившийся режим, последовательное квадратичное программирование, разреженные матрицы

ВВЕДЕНИЕ

Оперативное управление режимами электроэнергетических систем (ЭЭС) традиционно включает задачу оптимального распределения мощности между электростанциями. В рыночных условиях такое управление должно учитывать ценовые заявки поставщиков и, кроме того, ценовые заявки потребителей. Последние при указании цены, выше которой потребитель не готов покупать электроэнергию, отражают эластичный спрос. Наиболее точным образом данная задача может быть решена с помощью оптимизации установившихся режимов ЭЭС совместно с отбором ценовых заявок участников оптового рынка.

Задача поиска оптимального установившегося режима ЭЭС в полной нелинейной постановке (англ. AC OPF) считается очень сложной невыпуклой нелинейной задачей оптимизации [1]. Вычислительные трудности являются одной из причин того, что она до сих пор не используется при планировании режимов на большинстве энергетических рынков [24]. Вместо нее широко используется линеаризованная модель (англ. DC OPF).

На российском оптовом рынке электроэнергии задача конкурентного отбора заявок на рынке на сутки вперед и балансирующем рынке дана в полной нелинейной постановке. Основным преимуществом такой постановки является точное моделирование ЭЭС, позволяющее корректно рассчитать величину нагрузочных потерь, а также учесть особенности регулирования напряжения и реактивной мощности, и характерные для России протяженные электрические сети.

Рынок на сутки вперед является основным сектором оптового рынка России. Конкурентный отбор на нем проводится в ежедневном режиме. Его результатом являются плановый график производства и потребления электроэнергии и узловые цены на каждый час следующих суток [5, 6]. На балансирующем рынке процедура конкурентного отбора повторяется в ежечасном режиме с уточнением данных о функционировании ЕЭС России в текущий момент времени, при этом в отношении генерирующих объектов используются заявки, поданные на рынок на сутки вперед, а в отношении энергопринимающего оборудования – мощность, прогнозируемая для потребителя [6, 7].

Оптимизация режимов ЕЭС России проводится несколько раз в сутки. При этом размерность и сложность данной задачи весьма высока. ЕЭС России моделируется системой с 9000 узлами, рассматривается 24 часовых интервалов. В этой связи требуется разработка быстрых алгоритмов оптимизации для получения решения в максимально короткий срок.

Одним из наиболее распространенных и эффективных алгоритмов для решения задач оптимизации с нелинейными ограничениями является метод последовательного квадратичного программирования (англ. Sequential quadratic programming – SQP), относящийся к квазиньютоновским методам [8, 9]. Для оптимизации режимов ЭЭС большой размерности он предложен в [10, 11], после чего получил распространение и широко применяется для решения задач управления режимами ЭЭС [12, 13]. Сравнение коммерческих оптимизационных пакетов применительно к таким задачам в [14] показывает высокую результативность и скорость метода ПКП.

Развитие методов ПКП связано прежде всего с модификацией квадратичного слагаемого целевой функции оптимизационной подзадачи и выбора независимых переменных для расчета. Используемая матрица Гессе аппроксимируется или приводится к положительно определенной [15, 16]. Кроме того, осуществляется переход к спроектированным матрице Гессе и градиенту ограничений, позволяющим сократить размерность оптимизационной подзадачи за счет исключения зависимых переменных [15, 1719]. При этом дополнительную экономию вычислительных ресурсов в [15, 19] предлагают выполнить с помощью выделения элементов матрицы Гессе, которые можно не пересчитывать на данном шаге.

Современное состояние вопроса использования метода ПКП в задачах поиска оптимального режима ЭЭС связано прежде всего с усложнением задач оптимизации: применением распределенных алгоритмов [20], учетом ограничений на динамическую устойчивость [21], оптимизацией режимов в распределительных сетях [22]. Однако для дальнейшего развития метода ПКП и использования его в более требовательных к вычислительным ресурсам задачах требуется исследовать возможности его ускорения.

Целью данной статьи является анализ вычислительных трудностей ПКП, связанных с обработкой матриц большой размерности. Предлагается эвристический подход, который позволяет существенно ускорить решение задачи нелинейной оптимизации методом ПКП. Исследуется задача оптимизации установившихся режимов ЭЭС, в которой, во-первых, в ограничениях равенствах при их линеаризации исключаются зависимые режимные переменные. Это существенным образом сокращает размерность задачи. Во-вторых, анализируется структура квадратичной формы с матрицей Гессе. В отличие от известных работ, где в расчетах используется полностью заполненная спроектированная матрица Гессе, в данной работе предлагается использовать ожидания о неизменности ограниченных переменных для того, чтобы сделать ее разреженной. Соответствующие элементы матрицы Гессе обнуляются и не требуют расчета. Кроме того, обсуждается ряд дополнительных приемов, позволяющих сократить время вычислений и объем требуемой оперативной памяти. Показано, что преимущество используемого подхода появляется с ростом размерности ЭЭС.

ФОРМУЛИРОВКА ЗАДАЧИ ОПТИМИЗАЦИИ

Рассматривается задача оптимизации установившихся режимов ЭЭС в следующей формулировке:

(1)
$\sum\limits_{h \in \mathcal{H}} {\sum\limits_{d \in \mathcal{D}} {\sum\limits_{l \in d} {{{C}_{{dlh}}}{{P}_{{dlh}}}} } - } \sum\limits_{h \in \mathcal{H}} {\sum\limits_{g \in \mathcal{G}} {\sum\limits_{l \in g} {{{C}_{{glh}}}{{P}_{{glh}}}} } } \to \max ,$
(2)
$\sum\limits_{d \in i} {\sum\limits_{l \in d} {{{P}_{{dlh}}}} - } \sum\limits_{g \in i} {\sum\limits_{l \in g} {{{P}_{{glh}}}} + \sum\limits_j {{{P}_{{ijh}}}\left( {{{\varphi }_{i}},{{\varphi }_{j}},{{V}_{i}},{{V}_{j}}} \right)} } = 0,\,\,\,\,i \in \mathcal{N},\,\,\,h \in \mathcal{H},$
(3)
$\sum\limits_{d \in i} {{{Q}_{{dh}}}} - \sum\limits_{g \in i} {{{Q}_{{gh}}}} + \sum\limits_j {{{Q}_{{ijh}}}\left( {{{\varphi }_{i}},{{\varphi }_{j}},{{V}_{i}},{{V}_{j}}} \right)} = 0,\,\,\,\,i \in \mathcal{N},\,\,\,h \in \mathcal{H},$
(4)
$P_{{sh}}^{{\min }} \leqslant {{P}_{{sh}}} \leqslant P_{{sh}}^{{\max }},\,\,\,\,s \in \mathcal{S},\,\,\,h \in \mathcal{H},$
(5)
$ - {v}_{g}^{{\left( - \right)}} \leqslant \sum\limits_{l \in g} {{{P}_{{glh}}}} - \sum\limits_{l \in g} {{{P}_{{glh - 1}}}} \leqslant {v}_{g}^{{\left( + \right)}},\,\,\,g \in \mathcal{G},\,\,\,h \in \mathcal{H},$
(6)
$W_{{\operatorname{int} }}^{{\min }} \leqslant \sum\limits_{l,g,h \in \operatorname{int} } {{{P}_{{glh}}}} \Delta t \leqslant W_{{\operatorname{int} }}^{{\max }},\,\,\,\operatorname{int} \in \mathcal{I},$
(7)
$V_{i}^{{\min }} \leqslant {{V}_{{ih}}} \leqslant V_{i}^{{\max }},\,\,\,i \in \mathcal{N},\,\,\,h \in \mathcal{H},$
(8)
$0 \leqslant {{P}_{{dlh}}} \leqslant P_{{dlh}}^{{\max }},\,\,\,\,l \in d,\,\,\,d \in \mathcal{D},\,\,\,h \in \mathcal{H},$
(9)
$0 \leqslant {{P}_{{glh}}} \leqslant P_{{glh}}^{{\max }},\,\,\,\,l \in g,\,\,\,g \in \mathcal{G},\,\,\,h \in \mathcal{H},$
(10)
$Q_{{gh}}^{{\min }} \leqslant {{Q}_{{gh}}} \leqslant Q_{{gh}}^{{\max }},\,\,\,\,l \in g,\,\,\,g \in \mathcal{G},\,\,\,h \in \mathcal{H},$
где

(11)
${{P}_{{ijh}}} = {{G}_{{ij}}}\left( {V_{{ih}}^{2} - {{V}_{{ih}}}{{V}_{{jh}}}{{k}_{{ij}}}\cos \left( {{{\varphi }_{{ih}}} - {{\varphi }_{{jh}}} + {{\alpha }_{{ij}}}} \right)} \right) + {{B}_{{ij}}}{{V}_{{ih}}}{{V}_{{jh}}}{{k}_{{ij}}}\sin \left( {{{\varphi }_{{ij}}} - {{\varphi }_{{jh}}} + {{\alpha }_{{ij}}}} \right) + G_{{ij}}^{c}V_{{ih}}^{2},$
(12)
${{Q}_{{ijh}}} = {{B}_{{ij}}}\left( {V_{{ih}}^{2} - {{V}_{{ih}}}{{V}_{{jh}}}{{k}_{{ij}}}\cos \left( {{{\varphi }_{{ih}}} - {{\varphi }_{{jh}}} + {{\alpha }_{{ij}}}} \right)} \right) - {{G}_{{ij}}}{{V}_{{ih}}}{{V}_{{jh}}}{{k}_{{ij}}}\sin \left( {{{\varphi }_{{ih}}} - {{\varphi }_{{jh}}} + {{\alpha }_{{ij}}}} \right) + B_{{ij}}^{c}V_{{ih}}^{2},$
(13)
${{P}_{{sh}}} = \sum\limits_{ij \in s} {\left( {{{\nu }_{{sij}}}{{P}_{{ijh}}} + \left( {1 - {{\nu }_{{sij}}}} \right){{P}_{{jih}}}} \right)} ,$

и введены следующие обозначения:

– индексы:
d нагрузка,
g генератор,
l ступень заявки,
h временной период (как правило час),
i, j узлы,
s контролируемое сечение,
int интегральное ограничение/ограничение на резервы,
– множества:
$\mathcal{H}$ множество временных промежутков, как правило часы расчетной даты: h = 1, , 24,
$\mathcal{N}$ множество узлов,
$\mathcal{S}$ множество контролируемых сечений,
$\mathcal{G}$ множество генераторов (поставщиков) мощности,
$\mathcal{D}$ множество нагрузок (потребителей) мощности,
$\mathcal{I}$ множество интегральных ограничений,
– переменные:
Pglh объем принятой ступени l заявки поставщика g в час h,
Qgh реактивная мощность поставщика g в час h,
Pdlh объем принятой ступени l заявки потребителя d в час h,
Uih модуль напряжения в узле i в час h,
φih фаза напряжения в узле i в час h,
Psh переток активной мощности по контролируемому сечению s в час h,
Pijh, Qijh переток активной и реактивной мощности из узла i в узел j в час h,
– заданные параметры:
Qdh реактивная мощность нагрузки d в час h,
GijjBij = $\frac{1}{{{{R}_{{ij}}} + j{{X}_{{ij}}}}},$Rij, Xij, $G_{{ij}}^{c},$$B_{{ij}}^{c}$ параметры схем замещения линий электропередач и трансформаторов ветви ij, j – мнимая единица,
kij, αij действительный и фазо-сдвигающий коэффициент трансформации,
$P_{{sh}}^{{{\text{min}}}},$$P_{{sh}}^{{{\text{max}}}}$ ограничения на переток по контролируемому сечению,
νsij точка замера перетока в ветви ij для сечения s,
$W_{{{\text{int}}}}^{{{\text{min}}}},$$W_{{{\text{int}}}}^{{{\text{max}}}}$ ограничение на минимальный и максимальный объем выработки для интегрального ограничения,
$V_{i}^{{{\text{min}}}},$$V_{i}^{{{\text{max}}}}$ минимальное и максимальное напряжение в узле i,
${v}_{g}^{{( - )}},$${v}_{g}^{{( + )}}$ максимальная скорость сброса и набора нагрузки,
$P_{{dlh}}^{{{\text{max}}}},$$P_{{glh}}^{{{\text{max}}}}$ максимальные объемы ступеней заявок потребителей и поставщиков.

Целевая функция (1) представляет собой функцию общественного благосостояния, максимум которой ищется на рынке на сутки вперед. При фиксации объемов в заявках потребителей на прогнозном уровне, целевая функция будет тождественна функции минимизации производства и распределения электроэнергии, применяемой на балансирующем рынке. Ограничения (2), (3) представляют собой баланс активной и реактивной мощности и записываются для каждого узла ЭЭС. Ограничения (4) отражают системные ограничения на перетоки мощности по контролируемым сечениям. Ограничения (5) и (6) представляют собой межчасовые ограничения на сброс (набор) мощности и интегральные ограничения соответственно.

Отметим, что интегральные ограничения (6) могут быть использованы для ограничения суммарной выработки нескольких генераторов за определенный период времени, длящийся один или несколько часов. Например, это могут быть суточные ограничения по топливу, или ограничения на выработку электроэнергии каскадом ГЭС.

Поскольку межчасовые ограничения не позволяет разбить задачу на несколько независимых подзадач для каждого часа, требуется решать задачу совместно для всех часов, что существенно увеличивает размерность задачи.

Для дальнейших выкладок перепишем формулировку виде:

(14)
${\mathbf{cP}} \to \min ,$
(15)
${\mathbf{J}}_{h}^{{{\text{inj,p}}}}{{{\mathbf{P}}}_{h}} = {\mathbf{P}}_{h}^{{{\text{flow}}}}\left( {{{{\mathbf{\varphi }}}_{h}},{{{\mathbf{V}}}_{h}}} \right),$
(16)
${\mathbf{J}}_{h}^{{{\text{inj,q}}}}{{{\mathbf{Q}}}_{h}} = {\mathbf{Q}}_{h}^{{{\text{flow}}}}\left( {{{{\mathbf{\varphi }}}_{h}},{{{\mathbf{V}}}_{h}}} \right),$
(17)
${\mathbf{P}}_{h}^{{\sec \min }} \leqslant {\mathbf{P}}_{h}^{{\sec }}\left( {{{{\mathbf{\varphi }}}_{h}},{{{\mathbf{V}}}_{h}}} \right) \leqslant {\mathbf{P}}_{h}^{{\sec \max }},$
(18)
$ - {{{\mathbf{v}}}^{{( - )}}} \leqslant {\mathbf{A}}_{h}^{{{\text{ramp}}}}{\mathbf{P}} \leqslant {{{\mathbf{v}}}^{{( + )}}},$
(19)
${{{\mathbf{W}}}^{{\min }}} \leqslant {{{\mathbf{A}}}^{{\operatorname{int} }}}{{{\mathbf{P}}}_{h}} \leqslant {{{\mathbf{W}}}^{{\max }}},$
(20)
${{{\mathbf{V}}}^{{\min }}} \leqslant {{{\mathbf{V}}}_{h}} \leqslant {{{\mathbf{V}}}^{{\max }}},$
(21)
${\mathbf{0}} \leqslant {{{\mathbf{P}}}_{h}} \leqslant {{{\mathbf{P}}}^{{\max }}},$

где все величины представлены в векторном или матричном виде и

c – вектор цен заявок, причем целевая функция и цены заявок потребителей берутся с противоположным знаком, т.е. целевая функция минимизируется,

${\mathbf{J}}_{h}^{{{\text{inj}},\,{\text{p}}}},$ ${\mathbf{J}}_{h}^{{{\text{inj}},\,{\text{q}}}}$ – матрицы перехода от заявок, генераторов и нагрузок к поузловым объемам в час h,

${\mathbf{P}}_{h}^{{{\text{flow}}}},$ ${\mathbf{Q}}_{h}^{{{\text{flow}}}}$ – суммарный входящий поток активной и реактивной мощности по ветвям ЭЭС для каждого узла в час h.

ПРЕОБРАЗОВАНИЕ ЗАДАЧИ ДЛЯ РЕШЕНИЯ МЕТОДОМ ПОСЛЕДОВАТЕЛЬНОГО КВАДРАТИЧНОГО ПРОГРАММИРОВАНИЯ

Согласно методу ПКП для решения задачи оптимизации вида

(22)
$\begin{gathered} \mathop {\min }\limits_x f\left( x \right) \\ {\text{при}}\,b\left( x \right) \geqslant 0, \\ \,\,\,\,\,\,\,\,c\left( x \right) = 0. \\ \end{gathered} $

На каждой итерации формулируется подзадача:

(23)
$\begin{gathered} \mathop {\min }\limits_{\Delta x} f\left( {{{x}_{k}}} \right) + \nabla f{{\left( x \right)}^{T}}\Delta x + \frac{1}{2}\Delta {{x}^{T}}\underbrace {\nabla _{{xx}}^{2}\mathcal{L}\left( {x,\lambda ,\sigma } \right)}_{ = H}\Delta x, \\ {\text{при}}\,b\left( {{{x}_{k}}} \right) + \nabla b{{\left( x \right)}^{T}}\Delta x \geqslant 0, \\ \,\,\,\,\,\,\,\,c\left( {{{x}_{k}}} \right) + \nabla c{{\left( x \right)}^{T}}\Delta x = 0. \\ \end{gathered} $

Решение последней позволяет найти приращение ∆x относительно текущей точки xk. Здесь $\mathcal{L}$ (x, λ, σ) = f(x) − λTb(x) − σTc(x) – функция Лагранжа исходной задачи (22), и все значения производных вычисляются в точке xk. После решения данной подзадачи выполняется приращение xk + 1 = xk + ∆x, проверяются критерии остановки, и если они не выполнены, то выполняется следующая итерация относительно xk + 1.

Для решения поставленной задачи оптимизации установившихся режимов ЭЭС (14)–(21) методом ПКП проведем преобразования, направленные на формирование уравнений баланса активной и реактивной мощности в виде зависимости от приращений переменных ∆Ph. Линеаризация балансовых уравнений (15) и (16) дает:

(24)
${\mathbf{J}}_{h}^{{{\text{inj}},pq}}\left( \begin{gathered} \Delta {{{\mathbf{P}}}_{h}} \hfill \\ \Delta {{{\mathbf{Q}}}_{h}} \hfill \\ \end{gathered} \right) = {\mathbf{J}}_{h}^{n}\left( \begin{gathered} \Delta {{{\mathbf{\varphi }}}_{h}} \hfill \\ \Delta {{{\mathbf{V}}}_{h}} \hfill \\ \end{gathered} \right),$

где $J_{h}^{n} = \frac{{\partial \left( {P_{h}^{{{\text{flow}}}},\,\,Q_{h}^{{{\text{flow}}}}} \right)}}{{\partial ({{\varphi }_{h}},\,\,{{V}_{h}})}}$ – полная матрица Якоби уравнений баланса активной и реактивной мощности в узлах, $J_{h}^{{{\text{inj}},\,pq}} = \left( {J_{h}^{{{\text{inj}},\,p}}\,\,J_{h}^{{{\text{inj}},\,q}}} \right).$

Рассмотрим уравнение (24) относительно неизвестных ∆φh, ∆Vh. Примем в балансирующем узле фазу напряжения за 0, исключив уравнение баланса активной мощности в балансирующем узле из рассмотрения. Дополнительно можно исключить уравнения баланса реактивной мощности в генераторных узлах и переменные ∆Qh, если требуется зафиксировать модули напряжения в них. Такая задача оптимизации решается, в случае если распределение реактивной мощности оптимизировать не требуется, а линеаризовать задачу нельзя из-за большой погрешности в расчете нагрузочных потерь.

Исключив указанные выше уравнения, можно выразить искомые приращения ∆φh, ∆Vh:

(25)
$\left( \begin{gathered} \Delta {{{\tilde {\varphi }}}_{h}} \hfill \\ \Delta {{{{\mathbf{\tilde {V}}}}}_{h}} \hfill \\ \end{gathered} \right) = {{\left( {{\mathbf{J}}_{h}^{n}} \right)}^{{ - 1}}}{\mathbf{\tilde {J}}}_{h}^{{{\text{inj}},pq}}\left( \begin{gathered} \Delta {{{\mathbf{P}}}_{h}} \hfill \\ \Delta {{{\mathbf{Q}}}_{h}} \hfill \\ \end{gathered} \right).$

В данном уравнении в векторах и матрицах, отмеченных тильдами, должны быть исключены строки и столбцы, соответствующие фазе в балансирующем узле.

Для дальнейших вычислений и программной реализации удобнее запись этого уравнения в полной размерности 2n. Такую запись легко получить, приняв следующие соглашения:

$\tilde {J}_{h}^{{{\text{inj}},\,pq}}$ равна матрице $J_{h}^{{{\text{inj}},\,pq}},$ в которой обнулены строки, соответствующие активной мощности в балансирующем узле.

$\tilde {J}_{h}^{n}$ равна матрице $J_{h}^{n},$ в которой обнулены недиагональные элементы в строках и столбцах, соответствующих активной мощности/фазе в балансирующем узле. Диагональные элементы при этом равны 1.

В таких соглашениях получаем

(26)
$\left( \begin{gathered} \Delta {{{\mathbf{\varphi }}}_{h}} \hfill \\ \Delta {{{\mathbf{V}}}_{h}} \hfill \\ \end{gathered} \right) = {{\left( {{\mathbf{\tilde {J}}}_{h}^{n}} \right)}^{{ - 1}}}{\mathbf{\tilde {J}}}_{h}^{{{\text{inj}},pq}}\left( \begin{gathered} \Delta {{{\mathbf{P}}}_{h}} \hfill \\ \Delta {{{\mathbf{Q}}}_{h}} \hfill \\ \end{gathered} \right).$

Для активной мощности в балансирующем узле это дает тождество 0 = 0, а для всех остальных – уравнение (25).

Остановимся подробнее на выборе зависимых и независимых переменных задачи. В данной работе будем рассматривать параметры режима ∆φh, ∆Vh в качестве зависимых переменных. Это допустимо, если при любых заданных значениях активной и реактивной мощности Ph, Qh во всех узлах, кроме активной мощности в балансирующем узле и реактивной мощности в генераторных узлах, можно решить систему нелинейных уравнений режима (2), (3) относительно переменных ∆φh, ∆Vh. При этом в балансирующем узле образуется небаланс активной и реактивной мощности, из-за чего в процессе решения задачи оптимизации необходимо учитывать балансовые уравнения в балансирующем узле, которые запишем, подставив ∆φh, ∆Vh в (25):

(27)
${\mathbf{J}}_{h}^{{n,sw}}{{\left( {{\mathbf{\tilde {J}}}_{h}^{n}} \right)}^{{ - 1}}}{\mathbf{\tilde {J}}}_{h}^{{{\text{inj}},pq}}\left( \begin{gathered} \Delta {{{\mathbf{P}}}_{h}} \hfill \\ \Delta {{{\mathbf{Q}}}_{h}} \hfill \\ \end{gathered} \right) = 0,$

где $J_{h}^{{n,\,sw}}$ – строки матрицы $J_{h}^{n},$ соответствующие производной активной и реактивной мощности в балансирующем узле.

Указанные изменения подставляются в неравенства (17) и (20), а 2n ограничений (15) и (16) заменяются всего на два ограничения (27).

Выражения вида $\left[ {A{{{\left( {\tilde {J}_{h}^{n}} \right)}}^{{ - 1}}}} \right],$ где A – произвольная матрица, может эффективно осуществляться путем LU-факторизации матрицы Якоби, которое в свою очередь выполняется только один раз на итерации. Далее задача сводится к последовательному решению систем линейных уравнений методами прямой/обратной подстановки. Аналогично осуществляется расчет выражений вида $\left[ {{{{\left( {\tilde {J}_{h}^{n}} \right)}}^{{ - 1}}}A} \right].$ Описанную процедуру далее для краткости будем называть “делением” на матрицу Якоби.

Тогда линеаризованные ограничения будут записаны в виде:

(28)
${\mathbf{J}}_{h}^{{n,sw}}{{\left( {{\mathbf{\tilde {J}}}_{h}^{n}} \right)}^{{ - 1}}}{\mathbf{\tilde {J}}}_{h}^{{{\text{inj}},pq}}\left( \begin{gathered} \Delta {{{\mathbf{P}}}_{h}} \hfill \\ \Delta {{{\mathbf{Q}}}_{h}} \hfill \\ \end{gathered} \right) = 0,$
(29)
$\Delta {\mathbf{P}}_{h}^{{\sec \min }} \leqslant \frac{{\partial {\mathbf{P}}_{h}^{{\sec }}}}{{\partial \left( {{{\varphi }_{h}},{{{\mathbf{V}}}_{h}}} \right)}}{{\left( {{\mathbf{\tilde {J}}}_{h}^{n}} \right)}^{{ - 1}}}{\mathbf{\tilde {J}}}_{h}^{{{\text{inj}},pq}}\left( \begin{gathered} \Delta {{{\mathbf{P}}}_{h}} \hfill \\ \Delta {{{\mathbf{Q}}}_{h}} \hfill \\ \end{gathered} \right) \leqslant \Delta {\mathbf{P}}_{h}^{{\sec \max }},$
(30)
$ - \Delta {{{\mathbf{v}}}^{{( - )}}} \leqslant {\mathbf{A}}_{h}^{{{\text{ramp}}}}\Delta {{{\mathbf{P}}}_{h}} \leqslant \Delta {{{\mathbf{v}}}^{{( + )}}},$
(31)
$\Delta {{{\mathbf{W}}}^{{\min }}} \leqslant {{{\mathbf{A}}}^{{\operatorname{int} }}}\Delta {{{\mathbf{P}}}_{h}} \leqslant \Delta {{{\mathbf{W}}}^{{\max }}},$
(32)
$\Delta {{{\mathbf{V}}}^{{\min }}} \leqslant \left( {{\mathbf{0}},{\mathbf{I}}} \right){{\left( {{\mathbf{\tilde {J}}}_{h}^{n}} \right)}^{{ - 1}}}{\mathbf{\tilde {J}}}_{h}^{{{\text{inj}},pq}}\left( \begin{gathered} \Delta {{{\mathbf{P}}}_{h}} \hfill \\ \Delta {{{\mathbf{Q}}}_{h}} \hfill \\ \end{gathered} \right) \leqslant \Delta {{{\mathbf{V}}}^{{\max }}},$
(33)
$ - {\mathbf{P}}_{h}^{{\left( k \right)}} \leqslant \Delta {{{\mathbf{P}}}_{h}} \leqslant {{{\mathbf{P}}}^{{\max }}} - {\mathbf{P}}_{h}^{{\left( k \right)}},$

где пределы изменения приращений равны разности пределов в записи (17)–(21) и фактического значения соответствующей величины на текущей итерации: $\Delta P_{h}^{{\sec \,\min }}$ = = $\Delta P_{h}^{{\sec \,\min }}$$\Delta P_{h}^{{\sec (k)}},$ $\Delta P_{h}^{{\sec \,\max }}$ = $\Delta P_{h}^{{\sec \,\max }}$$\Delta P_{h}^{{\sec (k)}},$ $ - \Delta {{{\mathbf{v}}}^{{( - )}}}$ = $ - {{{\mathbf{v}}}^{{( - )}}}$$A_{h}^{{{\text{ramp}}}}P_{h}^{{(k)}},$ $\Delta {{{\mathbf{v}}}^{{( + )}}}$ = ${{{\mathbf{v}}}^{{( + )}}}$$A_{h}^{{{\text{ramp}}}}P_{h}^{{(k)}}$ и т.д.

Рассмотрим целевую функцию задачи на итерации ПКП:

(34)
$\sum\limits_h {\left( {{{{\mathbf{c}}}_{h}}\Delta {{{\mathbf{P}}}_{h}} + \frac{1}{2}\Delta {{x}^{T}}\frac{{{{\partial }^{2}}\mathcal{L}\left( {\Delta x} \right)}}{{\partial \Delta {{x}^{2}}}}\Delta x} \right) \to \min ,} $

где $\Delta x$ = ${{\left( {\Delta P_{h}^{T},\Delta Q_{h}^{T},\Delta \varphi _{h}^{T},\Delta V_{h}^{T}} \right)}^{T}}$ – набор независимых переменных в исходной задаче. Заметим, что в исходной задаче все вторые производные по ∆Ph равны нулю, т.е. остаются только производные по ∆φh, ∆Vh. С учетом этого, целевая функция задачи после исключения переменных (∆φh, ∆Vh) и перехода к спроектированной матрице Гессе будет записываться в виде

(35)
$\sum\limits_h {\left( {{{{\mathbf{c}}}_{h}}\Delta {{{\mathbf{P}}}_{h}} + \frac{1}{2}\left( {\Delta {\mathbf{P}}_{h}^{T}\Delta {\mathbf{Q}}_{h}^{T}} \right)\underbrace {\left[ {{{{\left( {{\mathbf{\tilde {J}}}_{h}^{{{\text{inj}},pq}}} \right)}}^{T}}{{{\left( {{\mathbf{\tilde {J}}}_{h}^{n}} \right)}}^{{ - T}}}\frac{{{{\partial }^{2}}\mathcal{L}\left( {\Delta {{{\mathbf{\varphi }}}_{h}},\Delta {{{\mathbf{V}}}_{h}}} \right)}}{{\partial {{{\left( {\Delta {{{\mathbf{\varphi }}}_{h}},\Delta {{{\mathbf{V}}}_{h}}} \right)}}^{2}}}}{{{\left( {{\mathbf{\tilde {J}}}_{h}^{n}} \right)}}^{{ - 1}}}{\mathbf{\tilde {J}}}_{h}^{{{\text{inj}},pq}}} \right]\left( \begin{gathered} \Delta {{{\mathbf{P}}}_{h}} \hfill \\ \Delta {{{\mathbf{Q}}}_{h}} \hfill \\ \end{gathered} \right)}_{ = H}} \right) \to \min ,} $

Количество оставшихся переменных в задаче соответствует количеству заявок для активной мощности и генераторов для реактивной мощности. Таким образом, устранение 2n − 1 неизвестных и 2n − 2 ограничений дает очевидные вычислительные преимущества в случае, когда количество заявок существенно меньше количества узлов. Во многих практических задачах это или уже так, или задачу можно свести к таковой.

Следует отметить, что это упрощение достигается путем усложнения структуры ограничений (17) и (20). Несмотря на то, что количество этих ограничений не меняется, в исходной задаче они задавались разреженными матрицами или ограничением переменных задачи оптимизации. Например, структура разреженности функции потока активной мощности по контролируемым сечениям в исходной постановке (17) задается топологией электрической сети, т.е. ij-й элемент матрицы может быть ненулевым только в случае, если i-й узел ЭЭС связан ветвью с j-м. После “деления” на матрицу Якоби матрицы этих ограничений становятся полностью заполненными. Возникают дополнительные затраты на выполнение самой процедуры “деления”.

На практике это не представляет большой проблемы – достаточно учитывать только активные или близкие к активным ограничения, а в типовых задачах количество таковых невелико. “Деление” на матрицу Якоби выполняется достаточно быстро при небольшом количестве ограничений. Матрицы остальных ограничений остаются разреженными и имеют достаточно простую структуру. В итоге получается, что учет линеаризованных ограничений не вызывает существенных вычислительных трудностей.

Иначе дело обстоит с матрицей вторых производных H в выражении (35). После умножения на обратную матрицу Якоби получается полная матрица, которая занимает в памяти больше места, чем все остальные данные вместе взятые. В типовой задаче выполнение необходимых вычислений (включая две процедуры “деления” на матрицу Якоби) занимает больше времени, чем все остальные вычисления вместе взятые. Учет большой матрицы вторых производных существенно замедляет работу промышленных пакетов оптимизации, таких как CPLEX, MOSEK.

Следующий раздел посвящен решению указанных трудностей.

УСКОРЕНИЕ МЕТОДА ПОСЛЕДОВАТЕЛЬНОГО КВАДРАТИЧНОГО ПРОГРАММИРОВАНИЯ

Суть метода состоит в выделении переменных, вероятность изменения которых на текущей итерации невелика. Для переменных, которые не меняются на текущей итерации

(36)
$\Delta {{x}_{i}} = 0 \Rightarrow \forall j\,\,\,\,{{H}_{{ji}}}\Delta {{x}_{i}} = 0.$

В силу симметрии матрицы Гессе можно принять

(37)
${{H}_{{ij}}} = {{H}_{{ji}}} = 0.$

Если количество таких переменных достаточно велико (относительно общего количества переменных), то после обнуления соответствующих им строк и столбцов матрица вторых производных становится разреженной. Это решает проблему с объемом памяти, а также существенно ускоряет работу промышленных пакетов оптимизации. Кроме того, во многих задачах вычисление матрицы вторых производных можно организовать так, что обнуляемые элементы H изначально не будут считаться. Так, например, можно организовать вычисление H в выражении (35), используя матрицу $\tilde {J}_{h}^{{{\text{inj}},\,pq}},$ в которой изначально исключены столбцы, соответствующие неизменным переменным, а по окончании вычислений увеличивать размер H до полного размера. Таким образом, в данном случае можно решить и проблему трудоемкости вычислений матрицы H.

Итого, в данном подходе могут быть решены проблемы трудоемкости расчета и дальнейшего учета матрицы вторых производных в задаче ПКП. В частности, решаются все проблемы, вызванные исключением из каждой итерации оптимизационной задачи режимных переменных (φh, Vh).

Возникает вопрос, как именно определять переменные, которые предположительно не будут меняться на итерации. Для этого рассмотрим двойственные оценки π (англ. reduced cost) для ограничений на диапазон переменных задачи (33), полученные на предыдущем шаге и равные разности множителей Лагранжа $\pi _{i}^{{{\text{max}}}} - \pi _{i}^{{{\text{min}}}}$ двухстороннего ограничения. Двойственная оценка обозначает величину, на которую должна измениться соответствующая цена в заявке, чтобы повлиять на целевую функцию. Ее экономический смысл иллюстрируется на следующем примере. Рассмотрим заявку генератора, которая находится на нижнем пределе ограничения, т.е. удовлетворенный объем которой равен нулю. Двойственная оценка к данному ограничению будет положительной, и будет показывать, насколько генератор должен снизить цену (потребитель повысить цену), чтобы заявка стала конкурентноспособной и была принята. В случае рассматриваемой нами задачи это будет разница между ценой заявки и узловой ценой данного генератора. Для полностью удовлетворенной заявки генератора двойственная оценка πi будет отрицательной и показывать порог увеличения цены, при достижении которого заявка перестает полностью приниматься. Логично предположить, что заявки, для которых абсолютная величина πi больше некоторой пороговой величины C, будут оставаться на верхней или нижней границе своего диапазона и не будут меняться при дальнейшей оптимизации. Параметр C подбирается или экспериментально, или исходя из априорных знаний о решаемой задаче. Представляется целесообразным уменьшать C по мере приближения к точному решению.

Возможны ситуации, когда предположение о неизменности переменной оказалось неверным. Тогда полученное изменение переменной нельзя считать достоверным из-за ошибки в целевой функции, равной $\frac{1}{2}\sum\nolimits_j {\Delta {{x}_{j}}{{H}_{{ji}}}\Delta {{x}_{i}}} ,$ где Hji – истинное значение второй производной.

Эта погрешность, если она достаточно велика, должна быть устранена на последующих итерациях. Данное соображение приводит нас к идее, что необходимо полностью рассчитывать значения вторых производных для тех переменных, которые были изменены на предыдущей итерации.

Резюмируя, получаем следующие критерии определения переменных, для которых требуется считать значения вторых производных:

(38)
$\left| {{{\pi }_{i}}} \right| < C\,\,\,\,{\text{или}}\,\,\,\,\Delta x_{i}^{{(k)}} \ne 0.$

Отметим, что в общем случае нелинейной задачи оптимизации (22) данный прием применим только в случае, когда для большинства переменных заданы ограничения на диапазон значений. Иначе для этих переменных попросту отсутствуют двойственные оценки πi, и по таким переменным придется считать вторые производные.

Теперь рассмотрим критерий оптимальности решения нелинейной задачи, который в методе ПКП обычно формулируется как ||Hx||< ε. При использовании модифицированной матрицы H расчет Hx будет неточным. Эту проблему предлагается решить двумя путями:

– в общем случае можно при расчете критерия оптимальности дополнительно рассчитывать все колонки матрицы H, которые соответствуют изменившимся переменным;

– в случае задачи оптимизации установившихся режимов ЭЭС можно выполнить точный расчет Hx по формуле (35):

${{\left( {{\mathbf{\tilde {J}}}_{h}^{{{\text{inj}},pq}}} \right)}^{T}}{{\left( {{\mathbf{\tilde {J}}}_{h}^{n}} \right)}^{{ - T}}}\frac{{{{\partial }^{2}}\mathcal{L}\left( {\Delta {{{\mathbf{\varphi }}}_{h}},\Delta {{{\mathbf{V}}}_{h}}} \right)}}{{\partial {{{\left( {\Delta {{{\mathbf{\varphi }}}_{h}},\Delta {{{\mathbf{V}}}_{h}}} \right)}}^{2}}}}{{\left( {{\mathbf{\tilde {J}}}_{h}^{n}} \right)}^{{ - 1}}}{\mathbf{\tilde {J}}}_{h}^{{{\text{inj}},pq}}\Delta x,$

где вычисления необходимо выполнять в порядке справа налево. При таком порядке вычислений на каждом этапе будет выполняться или умножение вектора на разреженную матрицу, или “деление” вектора на матрицу Якоби. Оба действия выполняются достаточно быстро.

Необходимо также рассмотреть вопрос с первой итерацией, на которой еще не известны значения πi. Если на первой итерации полностью отказаться от частичного обнуления элементов матрицы вторых производных, то мы по меньшей мере не получим никакого преимущества в части требований к объему оперативной памяти для вычислений, т. к. большой объем памяти потребуется для выполнения первой итерации.

Для первой итерации также можно предложить соответствующие эвристики, например, производить грубое сравнение типовых рыночных цен с ценами заявок. Более универсальное решение состоит в следующем. Для оценки π предлагается на первой итерации решать линейную задачу – с нулевой матрицей H. По результатам решения линейной задачи не выполняется приращение переменных, а только берутся оценки для π и для списка измененных переменных. Полученные оценки используются для частичного расчета матрицы вторых производных, после чего первая итерация выполняется заново с частично рассчитанной матрицей H.

Стоит отметить, что в данном подходе корректируется только квадратичная часть целевой функции оптимизационной подзадачи. Линейная часть, а также линеаризованные ограничения учитываются полностью, без упрощений в отношении выбранных переменных. На последних итерациях квадратичная часть вносит малый вклад в целевую функцию и помогает выбрать оптимальные значения переменных среди тех, для которых πi равны нулю или находятся вблизи нуля. Причем для этих переменных вторые производные рассчитываются точно. Поэтому упрощение матрицы вторых производных не приводит к искажению результата решения первоначальной задачи.

УСЛОВИЯ ПРИМЕНИМОСТИ

Перечислим условия применимости данного подхода в общем случае нелинейной задачи оптимизации. Чтобы ускорение метода ПКП было существенным, должны быть выполнены все перечисленные условия:

– диапазон изменения большинства переменных должен быть ограничен;

– большинство переменных на каждой итерации должны удовлетворять условиям (38);

– число линеаризованных ограничений существенно меньше размера матрицы вторых производных и (или) можно сэкономить ресурсы при избирательном расчете вторых производных.

В случае задачи оптимизации установившихся режимов ЭЭС указанные условия выполняются, и преимущество в скорости получается существенным. На типовых задачах количество ненулевых элементов в матрице H после ее упрощения получается в сотни раз меньше, чем в исходной задаче. Полный цикл выполнения квадратичной итерации вплотную приближается к времени решения полностью линейной задачи. В связи с этим данный метод оказывается быстрее метода последовательного линейного программирования, которому для получения результата требуется несколько линейных итераций.

Из-за погрешности на первых итерациях вследствие корректировки H общее количество квадратичных итераций в типовых задачах иногда оказывается на одну больше, чем в случае полного расчета H. Увеличение числа итераций компенсируется существенным ускорением каждой отдельно взятой итерации.

ПРАКТИЧЕСКИЕ РЕЗУЛЬТАТЫ

Для детального сравнения производительности алгоритмов использовалась схема энергосистемы Польши из 2736 узлов, доступная в составе пакета MATPOWER [23]. Были реализованы и проанализированы следующие алгоритмы:

– ∆P, ∆Q, ∆φ, ∆V – ПКП с полным набором переменных (без исключения переменных режима);

– ∆P, ∆Q, исходная (исх.) H – ПКП с исключенными переменными режима, с полной матрицей H;

– ∆P, ∆Q, упрощенная (упр.) H – ПКП с исключенными переменными режима, с обнулением ряда элементов матрицы H.

Для сравнения выполнялся алгоритм решения задачи оптимизации установившихся режимов ЭЭС из пакета MATPOWER. Использовался встроенный метод оптимизации внутренней точки MIPS (MATLAB Interior Point Solver) со стандартными настройками.

Цены заявок генераторов моделировались случайным образом, со средним значением около 1500. Кроме того, были добавлены ценопринимаюшие заявки потребителей. Для каждого алгоритма производилось 5 запусков, после чего время усреднялось. В алгоритме с упрощением матрицы H использовалось пороговое значение C = 100, одинаковое для всех итераций.

Расчеты выполнялись на машине следующей конфигурации: Intel Core i7 2620M 2.7GHz (2 cores, 4 threads), 16Gb RAM. Все расчеты выполнялись под управлением Ubuntu 14.04 с использованием CPLEX, кроме расчетов с использованием MATPOWER и MOSEK, которые выполнялись под управлением Windows 7.

Результаты моделирования в задаче на 1 час приведены в табл. 1. В данной и последующих таблицах приведено сравнительное время расчета, количество ненулевых элементов в матрицах вторых производных nnz(H) и в матрице ограничений nnz(A) оптимизационной подзадачи, количество переменных и общее количество итераций.

Таблица 1.  

Показатели алгоритмов поиска оптимального режима ЭЭС Польши, 1 ч

MATPOWER ΔP, ΔQ, Δφ, ΔV ΔP, ΔQ, исх. H ΔP, ΔQ, упр. H Исх. H/упр. H
Время, с 3.62 3.00 1.07 0.33 3.2x
nnz(H), тыс. 37.0 17.0 334.1 1.3 260x
nnz(A), тыс. 63.5 35.9 2.5 1.1
Переменных 6012 6408 1518 975
Итераций 3 4 4

MATPOWER решает задачу с полным набором переменных, как и в алгоритме (∆P, ∆φ, ∆V), поэтому скорость расчета оказывается сопоставима. Использование приема с исключением переменных режима, а также с упрощением матрицы H, дает заметный прирост в скорости, несмотря на относительно небольшую размерность задачи.

Далее, была смоделирована задача на 24 часа с переменным профилем потребления. Результаты оптимизации такой задачи приведены в табл. 2. Стандартная конфигурация MATPOWER не может решать задачи более чем на 1 час, поэтому он не представлен в результатах. Отметим, что после упрощения в матрице H остается меньше 1% ненулевых элементов, что позволяет получить кратный прирост скорости без ущерба для сходимости.

Таблица 2.  

Показатели алгоритмов поиска оптимального режима ЭЭС Польши, 24 ч

ΔP, ΔQ, Δφ, ΔV ΔP, ΔQ, исх. H ΔP, ΔQ, упр. H исх. H/упр. H
Время, с 563.74 6* 26.81 7.19 3.7x
nnz(H), тыс. 407 8018 37.3 215x
nnz(A), тыс. 926 121 88.5
Переменных 172 272 54 912 41 944
Итераций 4 5 5

* При использовании MOSEK вместо CPLEX время расчета составило 38.16 с.

Также производилось моделирование на увеличенной в 3 раза схеме Польши, т. к. получаемая размерность энергосистемы сопоставима с размерностью модели ЕЭС России. Результаты приведены в табл. 3. При большей размерности задачи преимущество алгоритма с упрощением матрицы H становится еще больше. Данный алгоритм дает хорошие результаты при тех размерностях задачи, которые реально решаются на практике.

Таблица 3.  

Показатели алгоритмов поиска оптимального режима ЭЭС Польши ×3, 24 ч

ΔP, ΔQ, Δφ, ΔV ΔP, ΔQ, исх. H ΔP, ΔQ, упр. H исх. H/упр. H
Время, с 4 478.95 118.27 13.53 8.7x
nnz(H), тыс. 1223 22 957 105 220x
nnz(A), тыс. 2771 360 264
Переменных 515 856 162 816 124 781
Итераций 4 5 5

Описанный подход был адаптирован для промышленного применения и используется при проведении торгов на рынке на сутки вперед. Общее время решения типовых задач на модели ЕЭС России получается в 10–30 раз меньше, чем при полном расчете H. При этом производилось сравнение точности полученных решений на большом количестве различных входных данных. Было подтверждено, что решения совпадали в пределах погрешности вычислений.

ЗАКЛЮЧЕНИЕ

В работе рассмотрена задача оптимизации установившихся режимов ЭЭС методом ПКП. Предложены эвристики, позволяющие существенно ускорить решение данной задачи. Сформулированы условия применимости подхода для решения нелинейных задач оптимизации общего вида. Показано, что задачи оптимизации установившихся режимов отвечают данным условиям. Реализован алгоритм, время работы которого по сравнению с известными методами оказывается тем меньше, чем выше размерность ЭЭС.

Сравнительные расчеты показывают совпадение результатов оптимизации установившихся режимов и преимущество предложенного подхода: время решения для ЭЭС с 2736 узлами ЭЭС снижается в 3.7 раз, с 2736 × 3 узлами ЭЭС – в 8.7 раз. Существенным образом снижается число хранимых в памяти элементов матрицы Гессе и переменных задачи оптимизации.

Список литературы

  1. Еремеев А.В. О вычислительной сложности задачи оптимизации потокораспределения в электроэнергетической системе в условиях рынка // Дискретный анализ и исследование операций. 2017. Т. 24. № 4. С. 47–59.

  2. Litvinov E. Design and Operation of the Locational Marginal Prices-Based Electricity Markets // IET Generation, Transmission & Distribution. 2010. V. 4. № 2. P. 315–323.

  3. Frank S., Rebennack S. An introduction to optimal power flow: Theory, formulation, and examples // IIE Transactions (Institute of Industrial Engineers). 2016. V. 48. № 12. P. 1172–1197.

  4. Yang Z., Zhong H., Xia Q., Kang C. Fundamental Review of the OPF Problem: Challenges, Solutions, and State-of-the-Art Algorithms // J. Energy Engineering. 2018. V. 144. № 1. P. 1–12.

  5. Регламент проведения конкурентного отбора ценовых заявок на сутки вперед (Приложение № 7 к Договору о присоединении к торговой системе оптового рынка) [Электронный ресурс]. URL: https://www.np-sr.ru/ru/regulation/joining/reglaments/index.htm (дата обр. 23.07.2019).

  6. Давидсон М.Р., Догадушкина Ю.В., Крейнес Е.М., Новикова Н.М., Селезнев А.В., Удальцов Ю.А., Ширяева Л.В. Математическая модель управления энергосистемой в условиях конкурентного оптового рынка электроэнергии и мощности в России // Известия РАН. Теория и системы управления. 2009. Т. 2. С. 84–94.

  7. Регламент проведения конкурентного отбора заявок для балансирования системы (Приложение № 10 к Договору о присоединении к торговой системе оптового рынка) [Электронный ресурс]. URL: https://www.np-sr.ru/ru/regulation/joining/reglaments/index. htm (дата обр. 23.07.2019).

  8. Griffith R.E., Stewart R.A. A Nonlinear Programming Technique for the Optimization of Continuous Processing Systems // Management Science. 1961. V. 7. № 4. P. 379–392.

  9. Boggs P.T., Tolle J.W. Sequential Quadratic Programming // Acta Numerica. 1995. V. 4. P. 1–52.

  10. Burchett R., Happ H., Wirgau K. Large Scale Optimal Power Flow // IEEE Transactions on Power Apparatus and Systems. 1982. V. PAS–101. № 10. P. 3722–3732.

  11. Бартоломей П.И. Расчет установившихся режимов электрических систем и их оптимизация методом квадратичной аппроксимации // Известия РАН. Энергетика. 1992. № 5. С. 95–106.

  12. Frank S., Steponavice I., Rebennack S. Optimal Power Flow: A Bibliographic Survey I. Formulations and Deterministic Methods // Energy Systems. 2012. V. 3. № 3. P. 221–258.

  13. Castillo A., O’Neill R.P. Survey of Approaches to Solving the ACOPF: Optimal Power Flow Paper 4 // FERC Staff Technical Paper. 2013. P. 1–49.

  14. Castillo A., O’Neill R.P. Computational performance of solution techniques applied to the ACOPF: Optimal Power Flow Paper 5 // FERC Staff Technical Paper. 2013. P. 1–34.

  15. Gill P.E., Murray W., Saunders M.A. SNOPT: An SQP Algorithm for Large-Scale Constrained Optimization // SIAM J. Optimization. 2002. V. 12. № 4. P. 979–1006.

  16. Gill P., Wong E. Convexification Schemes for SQP Methods // UCSD Center for Computational Mathematics Technical Paper. 2014. CCoM-14-06. P. 1–12.

  17. Schmid C., Biegler L.T. Quadratic programming methods for reduced hessian SQP // Computers & Chemical Engineering. 1994. V. 18. № 9. P. 817–832.

  18. Biegler L.T., Nocedal J., Schmid C., Ternet D. Numerical experience with a reduced Hessian method for large scale constrained optimization // Computational Optimization and Applications. 2000. V. 15. № 1. P. 45–67.

  19. Черненко П.А., Прихно В.Л., Трубицын В. Определение эффективных управляющих воздействий в процессе оперативной оптимизации режима электроэнергетической системы по напряжению и реактивной мощности // Працi Iнституту електродинамiки НАН України. 2012. № 31. С. 12–21.

  20. Rahimiyan M., Baringo L. Strategic Bidding for a Virtual Power Plant in the Day-Ahead and Real-Time Markets: A Price-Taker Robust Optimization Approach // IEEE Transactions on Power Systems. 2016. V. 31. № 4. P. 2676–2687.

  21. Li P., Qi J., Wang J., Wei H., Bai X., Qiu F. An SQP method combined with gradient sampling for small-signal stability constrained OPF // IEEE Transactions on Power Systems. 2017. V. 32. № 3. P. 2372–2381.

  22. Sheng W., Liu K.-y., Cheng S., Meng X., Dai W. A Trust Region SQP Method for Coordinated Voltage Control in Smart Distribution Grid // IEEE Transactions on Smart Grid. 2016. V. 7. № 1. P. 381–391.

  23. Zimmerman R. D., Murillo-Sanchez C. E., Thomas R. J. MATPOWER: Steady-State Operations, Planning, and Analysis Tools for Power Systems Research and Education // IEEE Transactions on Power Systems. 2011. V. 26. № 1. P. 12–19.

Дополнительные материалы отсутствуют.