Задача 13.9. Решить задачу оптимального распределения нагрузки системы между двумя ТЭС со следующими расходными характеристиками . градиентным методом. В задаче Р1 независимая переменная, а Р2 зависимая переменная. Шаг принимаем равным 200. Точность расчёта 0.0001.
clc; clear;
syms p1 p2
Psis=500; e = 1e-3; h=200; k=0; err=10; Imax=50;
B1=100+0.2*p1+0.001*p1.^2; B2= 60+0.2*p2+0.002*p2.^2; % ТЭС 1,2
Bsum=B1+B2; % Целевая функция
p_2=200; p_1=Psis-p_2; P=[p_1,p_2]; % Исходные значения
B_1=100+0.2*P(1)+0.001*P(1).^2; % Расход на ТЭС 1
B_2= 60+0.2*P(2)+0.002*P(2).^2; % Расход на ТЭС 2
Bs=B_1+B_2; % Суммарный расход по исходным значениям
while ((err>=e)&&(kd = gradient(Bsum); % градиент
d = subs(d,p1,P(1)); d = subs(d,p2,P(2));
gr = double(d(2)-d(1));
P(2)=P(2)-h*gr; P(1)=Psis-P(2); % Новые значения
B_s=subs(Bsum,p1,P(1)); B_s=subs(B_s,p2,P(2));
Bs1=double(B_s); % Суммарный расход по новым значениям
err=abs(Bs1-Bs); Bs=Bs1; k=k+1;
end
disp([k,P(1),P(2),Bs1]);
Задача 13.11. Решить задачу оптимального распределения нагрузки системы между двумя ТЭС со следующими расходными характеристиками . методом Лагранжа.
clc; clear
syms p1 p2 gamma
p=0; Pnag=500; % Нагрузка
B1=100+0.2*p1+0.001*p1.^2; % Расходная характеристика ТЭС 1
B2= 60+0.2*p2+0.002*p2.^2; % Расходная характеристика ТЭС 2
Bsum=B1+B2; % Целевая функция
p=p1+p2==Pnag; % Баланс мощности
L = Bsum + gamma*(p1+p2-Pnag) ; % функция Лагранжа
% частные производные приравниваем нулю
dL_dp1 = diff(L,p1) == 0; dL_dp2 = diff(L,p2) == 0;
dL_dgm = diff(L,gamma) == 0;
system = [dL_dp1; dL_dp2; dL_dgm]; % система
sol = solve(system,[p1 p2 gamma]); % решение системы
% оптимальные значения мощностей ИЭС
P1=double(sol.p1); P2=double(sol.p2);
Gamma=double(sol.gamma);
% оптимальное значение условного расхода топлива
B1=100+0.2*P1+0.001*P1.^2;
B2= 60+0.2*P2+0.002*P2.^2;
Bsum=B1+B2; disp([P1,P2,B1,B2,Bsum])
Задача 14.3. Решить задачу оптимального распределения нагрузки системы между двумя тепловыми станциями со следующими расходными характеристиками . с использованием генетического алгоритма т.е. с помощью функции ga().
clc; clear;
fobj=@(P)Func_obj(P);% целевая функция
p0=2; % количество неизвестных
A = []; b = [];% линейные ограничения-неравенства
Aeq=[]; beq=[];% линейные ограничения-равенства
Pnag=500; % нагрузка системы
options = optimoptions('ga','FitnessLimit',0.001,'ConstraintTolerance',1e-3);
nonlincon=@(P)nlcon_nag(P,Pnag); % нелинейные ограничения
lb=[]; ub=[];% граничные условия
[p, fval]=ga(fobj,p0,A,b,Aeq,beq,lb,ub,nonlincon,options)
Для ввода целевой функции и ограничения в виде баланса мощностей создаются отдельные файл функции Func_obj(P) и nlcon_nag(P,Pnag) имеющая следующий вид.
function Bsum=Func_obj(P)
B(1)=100+0.2*P(1)+0.001*P(1)^2;
B(2)= 60+0.2*P(2)+0.002*P(2)^2;
Bsum=sum(B);
|
function [c,ceq]=nlcon_nag(P,Pnag)
c=[];
ceq=Pnag-sum(P);
|
Do'stlaringiz bilan baham: |