K t qu thu đ c t ch ng trình Matlab qua 200 l n l p đ c th hi n
trong hình 4.1 v i th i gian t i u ch m t 0.8 giây.
Bài 1:
Ch ng trình th c hi n trên Matlab b ng 4 hàm đ c t o d i d ng 4 file:
rundeopt.m, objfun.m, left_win.m và deopt.m.
File rundeopt.m (file kh i t o các tham s đi u khi n cho ch ng trình và c ng là file ch y ch ng trình):(xem ph n ph l c 1)
HU
TEC
H Hình 4.1 K t qu bài 1 ch ytrên ch ng trình Matlab
i chi u v i các k t qu t PSO và NPSO nh trong b ng 4.17, ta có th nh n th y đ ck t qu gi i đ c t DEr t chính xác.
B ng 4.17 So sánh k t qu tính toán dùng DE, EPSO và NPSO
Nhà máy DE EPSO NPSO
P1 446.706659 446.7072691 446.7072640 P2 171.258462 171.2579804 171.2579818 P3 264.104672 264.1056432 264.1056555 P4 125.216514 125.2167933 125.2167645 P5 172.118671 172.118859 172.1188751 P6 83.595022 83.59345494 83.5934587 T ng chi phí 15275.930392 15275.93039 15275.9303918
Trong bài 2 có thêm ràng bu c t n th t công su t là m t hàm b c hai. Do đó, ta không th rút m t bi n nào ra đ gi i theo cách rút g n đi m t bi n nh
trong bài 1 đ c. gi i quy t v n đ này, ta s d ng ph ng pháp tiêu chu n, ph bi n nh t c a DE là s d ng thêm hàm ph t. Ph ng pháp hàm ph t có th gi i quy t b t k m t bài toán ràng bu c ph c t p nào mà m t s ph ng pháp khác không th làm đ c.
HU TEC H Cách th c hi n nh sau: 3 ' 1 2 3 1 ( ) ( ) = =∑ = + + G i i i F P C P P P P ' 2 2 2 1 2 3 1 2 3 ( G)=0, 008 +0, 009 +0, 007 +7 +6, 3 +6,8 +520 F P P P P P P P Ràng bu c t n th t công su t tác d ng h th ng: PL = 0,000218 P12+ 0,000228 P22 + 0,000179 P32 (1) Ràng bu c cân b ng: P1 + P2 + P3 – PL = PD (2) (1)→(2): P1 + P2 + P3 – 0,000218 P12 – 0,000228 P22 – 0,000179 P32 –150 = 0 Áp d ng công th c c a hàm ph t: i 3 1 G 1 D L G i 1 G (P ) | P P P | = = ω . + −∑ Hàm thích nghi: " ' G G 1 G F (P )=F (P ) G (P )+ Ch n ω1= 20 " 2 2 2 G 1 2 3 1 2 3 2 2 2 1 2 3 1 2 3 F (P ) 0, 008P 0, 009P 0, 007P 7P 6,3P 6,8P 520 20. | P P P – 0, 000218P – 0, 000228 P – 0, 000179 P – 150 | = + + + + + + + + + +
Bài toán đã đ c bi n đ i v d ng bài toán không có ràng bu c v i m c
tiêu là hàm thích nghi là F (P ) " G → min. T đây, ta ti n hành quá trình t i u hóa
hàm thích nghi b ng DE t ng t nh bài 1.
Ch ng trình Matlab cho bài 2 v n là 4 hàm c đ c vi t l i:
HU
TEC
H
File Rundeopt.m: (Xem ph n Ph l c 2)
K t qu thu đ c t ch ng trình Matlab qua 200 l n l p đ c th hi n trong hình 4.2 v i th i gian t i u ch m t 0.5 giây.
Hình 4.2 K t qu bài 2 ch y trên ch ng trình Matlab
i chi u k t qu DE v i các ph ng pháp Newton và Genetic nh trong b ng 4.18, ta có th th yr ng DE đã gi i quy t đ c bài toán t i u r t chính xác v i t c đ nhanh h n r t nhi u.
B ng 4.18 So sánh k t qu tính toán dùng DE, Newton và Genetic
Nhà máy DE Newton Genetic
P1 35.091094 35.0907 35.6052 P2 64.131406 64.1317 63.7088 P3 52.476597 52.4767 52.3788 T n th t CS tác d ng (MW) 1.699098 1.6991 1.6929 Chi phí ($/h) 1592.649548 1592.65 1592.65 Th i gian tính toán (s) 0.531 Ng n 2.7969
HU
TEC
H CH NG 5:
HU
TEC
H
5.1 T ng k t
Trong th c t , vi c tìm ki mnghi m t i u c a m t bài toán th t s không đ n gi n. M t s thu t toán t i u tr c đây nh thu t toán nh Simulated
Annealing Algorithm – SA (thu t toán d a theo mô ph ng luy n kim), Genetic
Algorithms – GA (d a theo mô ph ng di truy n) đã gi i quy t đ c đa s các bài toán t i u trong không gian l n, đa c c tr , không liên t c khá ph bi n trong k thu t và cho ra đ c k t qu khátin c y. Tuy v y, vi c s d ng các thu t toán này đ gi i th ng m t r t nhi u th i gian, đ c bi t v i các bài toán k thu t. Do v y,
vi c rút ng n đ c th i gian trong tính toán t i u c a thu t toán DE là m t u
đi m v t tr i so v i các thu t toán khác trong quá trình tìm ki m nghi mt i u,
đ c bi t v i bài toán mà giá tr hàm không th bi u di n đ c b ng nh ng hàm đ i s t ng minh vàs bi n l n.
DE đã thành công trong vi c tìm ki m đáp án t i u toàn di n đ ng th i c ng đ a ra đ c m t t l h i t r t t t. Thu t toán DE c ng nh các thu t toán ti n hóa khác, n n t ng v n d a vào các ph ng pháp ng u nhiên nên không đ m b o s gi i ra đ c m t đáp án t i u hoàn toàn. Tuy v y, n u s d ng m t gi i pháp xáo tr n h p lý và ch n đ c chính xác các tham s đi u khi n nh tham s t l , h ng s lai ghép và đ y đ s l ng các cá th v n có th cho ra đ c m t k t qu r t chính xác trong kho ng th i gian ng n.
Hai gi i pháp có kh n ng th c thi t t nh t là DE/best/2/bin và DE/rand/1/bin. DE/best/2/bin t o ra các th h b ng cách xáo tr n đáp án t t nh t đ c tìm th y v i hai vector sai phân. Còn DE/rand/1/bin t o ra các th h b ng cách xáo tr n m t vector đ c ch n ng u nhiên v i m t vector sai phân. C hai gi i pháp đ u s d ng hình th c phân ph i nh th c trong ti n trình tái h p. DE/best/2/bin th c thi t t h n đ đ t đ c các k t qu h i t và tính ch t cô đ c. Khi mà DE/best/2/bin xáo tr n đáp án t t nh t tìm th y, nó l i có th g p khó kh n đ thoát ra kh i vùng c c ti u c c b trong các qu n th mà kho ng không gian
đáp án có b m t ph c t p. Trong khi đó, DE/rand/1/bin xáo tr n các vector đ c ch n ng u nhiên trong kho ng không gian đáp án, nó có u th h n cho vi c xáo tr n các đáp án đ c nên d dàng thoát ra kh i t i u c c b h n.
HU
TEC
H
H ng s t l đi u hành cách xáo tr n đ c áp d ng cho các cá th . Giá tr này có th đ c ch n trong kho ng [0 , 1.2] nh ng ph m vi phù h p h n nên ch n là [0.5 , 1], tùy thu c vào t ng bài. DE/best/2/bin cho th c thi t t h n trong kho ng
[0.5 , 0.65] đ i v i h u h t các tr ng h p. Khi h th ng đang g p tình tr ng h i t vùng c c ti u c c b thì nên t ng tham s t l này lên, nh ng c n ph i l u ý là tham s t l càng cao s càng làm gi m t l h i t xu ng.
H ng s lai ghép đi u hành tính đa d ng trong qu n th . H ng s g n b ng 1 s cho ra k t qu nhanh h n nh ng có th s b h i t c c ti u c c b . H ng s nh h n s làm t ng thêm tính đa d ng trong qu n th nh ng đ ng th i c ng làm t ng th i gian gi i thu t vì nó s c n thêm nhi u th h n a đ hoàn thành qu n th . i v i gi i pháp DE/best/2/bin, h ng s lai ghép phù h p nên ch n trong kho ng [0.7 , 1]. Giá tr th p h n 0.7 t o thêm tính đa d ng và làm t ng đáng k các th h mà v n không c i thi n đ c gì nhi u cho qu n th . Kho ng ph m vi cho kh n ng th c thi t t nh t nên ch n trong kho ng [0.8 , 0.95].
Kích c qu n th c ng đóng m t vai trò quan tr ng trong thu t toán DE. Kích c qu n th l n s cho kh n ng tìm thêm đ c đáp án mong mu n. Kích c nh h n s làm các đáp án h i t nhanh h n nh ng c ng d v ng ph i c c ti u c c b . Nh ng qu n th có kích c càng l n thì càng tác đ ng m nh t i vi c tìm ki m và t l h i t nh ng không có ngh a là nó s xác đ nh đ c đáp án t i u toàn di n. Ngoài ra, v i kích c l n, nó càng làm t n th i gian gi i thu t h n. Do v y, n u c n t ng thêm tính đa d ng cho qu n th thì nên gi m h ng s lai ghép xu ng s t t h n là t ng thêm kích c cho qu n th .
Vi c l a ch n ph ng th c ph t cho hàm ràng bu c c ng r t quan tr ng trong DE. Các ph ng th c ph t khác nhau có th d n t i các k t qu khác nhau nh d ng đáp án, đ chính xác hay tính th c thi c a gi i thu t. Cách th c ph t t nh (không đ i) không phù h p cho t t c các ràng bu c nh ng nó c i thi n t c đ gi i thu t nhanhh n cách th c ph t đ ng vì đòi h i ít ti n trình con tr đ ng h n.
5.2 H ng phát tri n trong t ng lai
Thu t toán DE v n đang đ c xem là thu t toán t i u hoàn thi n, hi n đ i nh t đang đ c quan tâm, ng d ng vào gi i các bài toán t i u k thu thi n nay.
HU
TEC
H
toán t i u m i này vào gi i nh ng bài toán t i u khó h n cho các h th ng công su tnh sau:
• ng d ng DE vào các bài toán công su t khó h n nh các h th ng n ng l ng khác có s d ng nhi u lo i nhiên li u, nhi u ràng bu c h n và có xét thêm
nh h ng c a môi tr ng.
• Vi c l a ch n các h s t l F, h s xác su t lai ghép CR và h s ph t
trong DE ph thu c r t nhi u vào kinh nghi m c a ng i s d ng nên c n tránh ho c gi m b t vi c ph i l a ch n các h s này đ đ n gi n h n cho quá trình t i
u.
• Nâng c p mã thu t toán đ c i thi n quá trình th c thi và gi m b t s l n mô ph ng nh trong các bài toán OPF.
HU
TEC
H
PH L C 1:
clc
% So tham so dieu khien I_D = 5; % Kich co quan the
I_NP = input('Nhap kich co quan the NP = '); if (I_NP < 5)
I_NP = 50;
fprintf(1,'Kich co quan the toi thieu phai la 5, mac dinh la 50\n\n'); end
% So the he can lap
I_itermax = input('Nhap so the he can lap I = '); if (I_itermax <= 0)
I_itermax = 200;
fprintf(1,'So the he can lap phai la so duong, mac dinh la 200\n\n'); end
% He so ty le
F_weight = input('Nhap he so ty le F = '); if ((F_weight < 0) | (F_weight > 1.2))
F_weight = 0.8;
fprintf(1,'He so ty le phai nam trong [0 , 1.2], mac dinh la 0.8\n\n'); end
% Hang so lai ghep
HU
TEC
H
if ((F_CR < 0) | (F_CR > 1)) F_CR = 0.9;
fprintf(1,'Hang so lai ghep phai nam trong [0 , 1], mac dinh la 0.9\n\n'); end
% Cac rang buoc bien bat can bang
FVr_maxbound=[500 200 300 150 200]; FVr_minbound=[100 50 80 50 50]; S_struct.I_D = I_D; S_struct.I_NP = I_NP; S_struct.I_itermax = I_itermax; S_struct.F_weight = F_weight; S_struct.F_CR = F_CR; S_struct.FVr_minbound = FVr_minbound; S_struct.FVr_maxbound = FVr_maxbound; % Bat dau qua trinh toi uu hoa
tic % Bat dau do thoi gian thuc hien chuong trinh deopt('objfun',S_struct);
time = toc; % Dung thoi gian chay chuong trinh
fprintf('\nThoi gian tinh toan do duoc la %f (s)\n',time);
File objfun.m(file ch a hàm m c tiêu):
function S_MSE= objfun(P, S_struct) % Ham thich nghi
F_cost = 16426-5*P(1)-2*P(2)-3.5*P(3)-P(4)-1.5*P(5)+0.007*P(1)^2+ +0.0095*P(2)^2+0.009*P(3)^2+0.009*P(4)^2+0.008*P(5)^2+0.0075*(1263--P(1)-P(2)-P(3)-
HU
TEC
H
% Dieu kien truoc khi rang buoc S_MSE.I_nc = 0;
S_MSE.FVr_ca = 0;
S_MSE.I_no = 1; % So ham thich nghi
S_MSE.FVr_oa(1) = F_cost; % Gia tri ham thich nghi can tim
File left_win(file ch a hàm ki m tra ràng bu c và hàm thích nghi):
function I_z = left_win(S_x,S_y); I_z = 1;
% Qua trinh giai quyet rang buoc if (S_x.I_nc > 0)
for k=1:S_x.I_nc
if (S_x.FVr_ca(k) > 0) % Neu rang buoc chua thoa man
if (S_x.FVr_ca(k) > S_y.FVr_ca(k))% Neu bat ky rang buoc nao cua S_x khong duoc cai thien
I_z = 0; end end end end if (S_x.I_no > 0) for k=1:S_x.I_no
if (S_x.FVr_oa(k) > S_y.FVr_oa(k))% Neu bat ky gia tri ham chi phi nao cua S_x khong duoc cai thien
I_z = 0; end
HU
TEC
H
end end
File deopt.m(file chính ch a hàm th c hi n quá trình t i u DE):
function [FVr_bestmem,S_bestval,I_nfeval] = deopt(fname,S_struct) I_D = S_struct.I_D; I_NP = S_struct.I_NP; I_itermax = S_struct.I_itermax; F_weight = S_struct.F_weight; F_CR = S_struct.F_CR; FVr_minbound = S_struct.FVr_minbound; FVr_maxbound = S_struct.FVr_maxbound; % Khoi tao quan the va cac ma tran
FM_pop = zeros(I_NP,I_D); for k=1:I_NP
FM_pop(k,:) = FVr_minbound + rand(1,I_D).*(FVr_maxbound - FVr_minbound); end
FM_popold = zeros(size(FM_pop));
FVr_bestmem = zeros(1,I_D);% Cac ca the tot nhat tim duoc
FVr_bestmemit = zeros(1,I_D);% Cac ca the tot nhat trong quan the hien tai % Tim ca the tot nhat trong quan the ban dau
I_best_index = 1; % Bat dau kiem tra voi ca the dau tien S_val(1) = feval(fname,FM_pop(I_best_index,:),S_struct);
S_bestval = S_val(1); % Gia tri ham phu hop tot nhat tim duoc for k=2:I_NP % Kiem tra cac ca the con lai
HU
TEC
H
S_val(k) = feval(fname,FM_pop(k,:),S_struct); if (left_win(S_val(k),S_bestval) == 1)
I_best_index = k; % Ghi lai vi tri cua ca the tot nhat S_bestval = S_val(k); % Ghi lai gia tri ca the tot nhat end
end
FVr_bestmemit = FM_pop(I_best_index,:);
S_bestvalit = S_bestval; % Gia tri tot nhat cua ham phu hop trong the he hien tai FVr_bestmem = FVr_bestmemit;
FM_pm1 = zeros(I_NP,I_D); % Khoi tao ma tran 1 trong quan the FM_pm2 = zeros(I_NP,I_D); % Khoi tao ma tran 2 trong quan the FM_pm3 = zeros(I_NP,I_D); % Khoi tao ma tran 3 trong quan the
% Tao quan the trung gian chuan bi cho viec xao tron vector va cho quan the cu FM_ui = zeros(I_NP,I_D);
FM_mui = zeros(I_NP,I_D); FM_mpo = zeros(I_NP,I_D);
% Khoi tao cac vector chuan bi cho viec toi uu FVr_rot = (0:1:I_NP-1); FVr_rotd = (0:1:I_D-1); FVr_rt = zeros(I_NP); FVr_rtd = zeros(I_D); FVr_a1 = zeros(I_NP); FVr_a2 = zeros(I_NP); FVr_a3 = zeros(I_NP);
HU
TEC
H
FVr_ind = zeros(4);
% Bat dau thuc hien toi uu cho moi the he I_iter = 1;
while (I_iter < I_itermax+1)
FM_popold = FM_pop; % Ghi lai quan the cu S_struct.FM_pop = FM_pop; S_struct.FVr_bestmem = FVr_bestmem; FVr_ind = randperm(4); FVr_a1 = randperm(I_NP); FVr_rt = rem(FVr_rot+FVr_ind(1),I_NP); FVr_a2 = FVr_a1(FVr_rt+1); FVr_rt = rem(FVr_rot+FVr_ind(2),I_NP); FVr_a3 = FVr_a2(FVr_rt+1); FM_pm1 = FM_popold(FVr_a1,:); FM_pm2 = FM_popold(FVr_a2,:); FM_pm3 = FM_popold(FVr_a3,:); FM_mui = rand(I_NP,I_D) < F_CR; FM_mpo = FM_mui < 0.5;
FM_ui = FM_pm3 + F_weight*(FM_pm1 - FM_pm2); % Thuc hien dot bien FM_ui = FM_popold.*FM_mpo + FM_ui.*FM_mui; % Thuc hien lai ghep FM_origin = FM_pm3;
% Chon cac vector tot hon de dua vao quan the ke tiep for k=1:I_NP
HU
TEC
H
for j=1:I_D
if (FM_ui(k,j) > FVr_maxbound(j))
FM_ui(k,j) = FVr_maxbound(j) + rand*(FM_origin(k,j) - FVr_maxbound(j)); end
if (FM_ui(k,j) < FVr_minbound(j))
FM_ui(k,j) = FVr_minbound(j) + rand*(FM_origin(k,j) - FVr_minbound(j)); end
end
% Kiem tra va cap nhat lai cac ca the tot hon S_tempval = feval(fname,FM_ui(k,:),S_struct); if (left_win(S_tempval,S_val(k)) == 1) FM_pop(k,:) = FM_ui(k,:); S_val(k) = S_tempval; if (left_win(S_tempval,S_bestval) == 1) S_bestval = S_tempval; FVr_bestmem = FM_ui(k,:); end end end % for k = 1:NP
% Moi khi hoan thanh 1 the he, tang so the he len 1 I_iter = I_iter + 1;
end
HU
TEC
H
fprintf('\nKET QUA TOI UU TIM DUOC VOI %d LAN LAP NHU SAU:\n\n',I_itermax);
fprintf(1,'So the he lap lai: %d, He so ty le: %f, Hang so lai ghep: %f, Kich co quan the: %d\n',I_itermax,F_weight,F_CR,I_NP);
format long e; for n=1:I_D
fprintf(1,'P(%d) = %f\n',n,FVr_bestmem(n)); end
FVr_bestmem_(6) = 1263 - (FVr_bestmem(1) + FVr_bestmem(2) + FVr_bestmem(3) + FVr_bestmem(4) + FVr_bestmem(5));
fprintf('P(6) = %f\n',FVr_bestmem_(6)); fprintf('---\n');
HU
TEC
H
PH L C 2:
clc
% So tham so dieu khien I_D = 3; % Kich co quan the
I_NP = input('Nhap kich co quan the NP = '); if (I_NP < 5)
I_NP = 30;
fprintf(1,'Kich co quan the toi thieu phai la 5, mac dinh la 30\n\n'); end
% So the he can lap
I_itermax = input('Nhap so the he can lap I = '); if (I_itermax <= 0)
I_itermax = 200;
fprintf(1,'So the he can lap phai la so duong, mac dinh la 200\n\n'); end % He so ty le F_weight = input('Nhap he so ty le F = '); if ((F_weight < 0) | (F_weight > 1.2)) F_weight = 0.8;
fprintf(1,'He so ty le phai nam trong [0 , 1.2], mac dinh la 0.8\n\n'); end
HU
TEC
H
F_CR = input('Nhap hang so lai ghep CR = '); if ((F_CR < 0) | (F_CR > 1))
F_CR = 0.9;
fprintf(1,'Hang so lai ghep phai nam trong [0 , 1], mac dinh la 0.9\n\n'); end
% He so phat
F_R = input('Nhap he so phat (trong bai nay R nen chon trong (10 , 50) se toi uu ra duoc ket qua tot nhat) R = ');
if (F_R < 0) F_R = 20;
fprintf(1,'He so phat phai la so duong, mac dinh la 20\n\n'); end
% Cac rang buoc bien bat can bang FVr_maxbound=[85 80 70]; FVr_minbound=[10 10 10]; S_struct.I_D = I_D; S_struct.I_NP = I_NP; S_struct.I_itermax = I_itermax;