генерация недополученной реактивной мощности на электростанциях обходится гораздо дороже, чем потребление (в 3 раза!).
Однако и компенсирующие устройства требуют денежных затрат.
В связи с этим возникает задача определения оптимальной мощности компенсирующих устройств, отвечающей минимуму суммарных затрат. Такая задача относится к задаче безусловной оптимизации и может быть решена, например, градиентными методами.
Рассмотрим такую задачу для магистральной схемы электроснабжения (рис. 2.3). Необходимо определить мощности компенсирующих устройств QК1 и QК2 в узлах 1 и 2 исходя из условия минимума суммарных затрат на установку этих устройств и покрытие потерь активной мощности в схеме.
Рисунок 2.3 – Схема электроснабжения
Исходные данные:
напряжение схемы U;
сопротивления линий R1 и R2;
реактивные нагрузки узлов 1 и 2 Q1 и Q2;
удельные затраты на установку компенсирующих устройств zo;
удельные затраты на покрытие потерь активной мощности со.
Целевая функция, представляющая собой суммарные затраты на установку компенсирующих устройств и покрытие потерь активной мощности в схеме, имеет следующий вид
(2.7)где а1=R1∙co∙10-3/U2=0,0006;
а2=R2∙co∙10-3/U2=0,0004.
Введение числового коэффициента 10-3 необходимо для приведения всех составляющих целевой функции к одной размерности (у.е.).
Для решения задачи выберем метод покоординатного спуска. Определим частные производные целевой функции Z по переменным Q1 и Q2:
(2.8)Примем исходное приближение:
(2.9)Для этих значений вычислим значения целевой функции и ее частных производных.
Примем, что в направлении переменной Qk2 целевая функция Z убывает сильнее, чем в направлении переменной Qk1, т.е.
(2.10)В направлении переменной Qk2 и начнем спуск.
Примем величину шага
=400 квар. Первое приближение (первый шаг) будет Qk11=0, Qk21=400 квар. Рассчитываем значение целевой функции Z1.Второй шаг: Qk12=0, Qk22=400 квар. Рассчитываем значение целевой функции Z2.
Спуск по координате Qk2 следует продолжать до тех пор, пока Zn<Zn-1. Как только Zn становится больше предыдущего значения Zn-1, следует спуск координате Qk2 прекратить и вернуться к значениям переменных Qk1n-1 и Qk2n-1, полученным на n-1 шаге.
Выполним новый шаг в направлении другой переменной Qk1. Находится новое значение целевой функции Z. Спуск по этой переменной продолжается так же, как и в направлении Qk2 – до тех пор, пока Zm<Zm-1.
Точка с полученными координатами Qk1m-1, Qk2n-1 находится в окрестности минимума целевой функции Z. При принятой длине шага
=400квар более точное решение получено быть не может. Для получения более точного решения необходимо уменьшить шаг и продолжить спуск. Абсолютно точно что, чем меньше шаг, тем точнее будет результат. Посредством ручного расчета мы не можем добиться такой точности. Для решения этой задачи целесообразно будет использовать программное обеспечение, предназначенное для решения задачи нелинейного программирования с нелинейными ограничениями. Одним из таких языков программирования является язык С++.Это была рассмотрена задача безусловной оптимизации, т.е. нахождения абсолютного минимума. При решении поставленной задачи для нахождения оптимального режима работы сети ОАО "ММК им. Ильича" требуется найти относительный минимум, так как система ограничений будет иметь нелинейный вид (см. далее "Разработка программного обеспечения"). Таким образом, перед нами ставится задача условной оптимизации по реактивной мощности, для которой мы применяем выбранный ранее градиентный метод квадратичного программирования.
3. Разработка программного обеспечения метода оптимизации
Для оптимизации режимов по реактивной мощности разработан комплекс программ (см. рис. 3.1). Его условно можно разделить на две части:
интерфейсная часть, разработанная в удобном, понятном виде, предназначенная для работы с пользователем любого уровня;
расчетная часть, которая непосредственно выполняет необходимые расчеты для получения оптимальных режимов.
В интерфейсную часть комплекса входят программы ввода следующих параметров:
линий;
трансформаторов;
компенсирующих устройств;
реакторов;
нагрузок.
В расчетную часть входят следующие программы:
формирования узловой матрицы;
формирования векторов узловых токов без оптимизации мощностей компенсирующих устройств;
расчета узловых напряжений;
формирования векторов ограничений узловых токов;
расчета оптимальных значений узловых напряжений;
расчета оптимальных значений мощностей компенсирующих устройств.
Для расчета установившегося неоптимального режима разработаны программы:
формирования матриц узловых проводимостей,
формирования узловых токов источников,
ЛУ разложения матрицы,
решение систем уравнений узловых напряжений.
Рисунок 3.1 – Блок-схема разработанного программного обеспечения
Для расчета оптимального режима разработана программа условной оптимизации с нелинейными ограничениями. В качестве исходных данных для этой программы используется узловые напряжения, рассчитанные для неоптимального режима. Оптимизация производится градиентным методом квадратичного программирования.
Программа расчета неоптимального установившегося режима включает в себя алгоритм треугольного разложения матрицы и итерационный алгоритм решения системы нелинейных уравнений подобный методу Гаусса-Зейделя, модифицированный для решения сетевых нелинейных задач.[2,4,8] Особенностью итерационного алгоритма является то, что на каждой последующей итерации для определения узловых токов источников используется значения узловых напряжений, полученное на предыдущей итерации (см. 3.1).
. (3.1)Для решения задачи нелинейного программирования и определения оптимальных узловых напряжений был разработана программа NCONF CPP, которая реализует последовательный алгоритм квадратичного программирования и конечноразностный градиент. [12]
NCONF CPP (m, me, n, xguess, ibtype, xlb, xub, xscale, iprint, maxitn; x, fvalue).
Параметры программы NCONF CPP:
входные: m, me, n, xguess, ibtype, xscale, iprint, maxitn;
входной/выходной: xlb, xub;
выходные: x, fvalue.
m - общее число ограничений.
me – число ограничений равенства.
n – число переменных.
x – вектор начальных значений напряжений (активных и реактивных составляющих).
xguess – вектор размена n, содержащий начальное предположение о значениях напряжений;
ibtype – скаляр, задающий вид ограничений на переменные:
ibtype=3 – задаем ограничение на напряжение первого узла, все остальные будут иметь те же ограничения.
xlb – вектор размера n, содержащий нижние границы переменных:
входная, если ibtype=0;
выходная, если ibtype=1 или 2;
входная/выходная, если ibtype=3.
xub - вектор размера n, содержащий верхние границы переменных:
входная, если ibtype=0;
выходная, если ibtype=1 или 2;
входная/выходная, если ibtype=3.
xscale – вектор размера n, содержащий диагональную матрицу масштабирования переменных. Все элементы вектора xscale равны 1.0.
iprint – параметр, задающий желаемый уровень печати; принимает следующие значения:
0 – нет печати;
1 – выводится итоговый анализ о работе программы;
2 – дополнительно на каждой итерации выводится одна строка с промежуточными результатами;
3 – о каждой итерации выводится детальная информация.
maxitn – максимально допустимое число итераций.
х – вектор размера n, содержащий вычисленное решение.
fvalue – скаляр, содержащий значение целевой функции в полученном решении.
Общая задача нелинейного программирования, решаемая данной программой NCONF CPP, состоит в поиске минимума целевой функции
(3.2)с ограничениями
(3.3)где все функции задачи являются непрерывно дифференцируемыми.
При решении поставленной задачи целевая функция представляет собой потери мощности и имеет вид:
, (3.4)где
- соответственно активная и реактивная составляющие векторов узловых напряжений; - соответственно активная и реактивная составляющие векторов узловых проводимостей.Роль нелинейных ограничений выполняет система узловых уравнений с источниками реактивной мощности.
(3.5)где Y11, …,Y1N – собственные и взаимные проводимости,
U1,…,U2 – узловые напряжения.
Некоторые уравнения системы (3.5) могут не содержать составляющую
в том случае, если в узлах, для которых составляются данные уравнения, не установлены компенсирующие устройства. Такое уравнение вместо знака ≤ будет содержать знак равенства и считаться линейным.