Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 104 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
104
Dung lượng
2,3 MB
Nội dung
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC CÔNG NGHỆ TP HCM - NGUYỄN BÁ THẠNH ÁP DỤNG PHƯƠNG PHÁP PSO CẢI TIẾN CHO BÀI TOÁN PHÂN BỐ CÔNG SUẤT TỐI ƯU VỚI RÀNG BUỘC AN NINH LUẬN VĂN THẠC SĨ Chuyên ngành: Kỹ Thuật Điện Mã số ngành: 60520202 TP HỒ CHÍ MINH, tháng 03 năm 2014 BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC CÔNG NGHỆ TP HCM - NGUYỄN BÁ THẠNH ÁP DỤNG PHƯƠNG PHÁP PSO CẢI TIẾN CHO BÀI TỐN PHÂN BỐ CƠNG SUẤT TỐI ƯU VỚI RÀNG BUỘC AN NINH LUẬN VĂN THẠC SĨ Chuyên ngành: Kỹ Thuật Điện Mã số ngành: 60520202 HƯỚNG DẪN KHOA HỌC: PGS TS PHAN THỊ THANH BÌNH TP HỒ CHÍ MINH, tháng 03 năm 2014 CƠNG TRÌNH ĐƯỢC HỒN THÀNH TẠI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ TP HCM Cán hướng dẫn khoa học: PGS.TS Phan Thị Thanh Bình Luận văn Thạc sĩ bảo vệ Trường Đại học Công nghệ TP HCM ngày 03 tháng 05 năm 2014 Thành phần Hội đồng đánh giá Luận văn Thạc sĩ gồm: TT Họ tên TS Ngô Cao Cường TS Nguyễn Hùng TS Huỳnh Quang Minh TS Nguyễn Minh Tâm TS Đinh Hoàng Bách Chức danh Hội đồng Chủ tịch Phản biện Phản biện Ủy viên Ủy viên, thư ký Xác nhận Chủ tịch Hội đồng đánh giá Luận văn sau Luận văn sửa chữa (nếu có) Chủ tịch Hội đồng đánh giá LV TS Ngô Cao Cường TRƯỜNG ĐH CƠNG NGHỆ TP.HCM PHỊNG QLKH – ĐTSĐH CỘNG HỊA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập – Tự – Hạnh phúc TP HCM, ngày … tháng … năm 2014 NHIỆM VỤ LUẬN VĂN THẠC SĨ Họ tên học viên: Nguyễn Bá Thạnh Giới tính: Nam Ngày, tháng, năm sinh: 5/7/1966 Nơi sinh: Ninh Thuận Chuyên ngành: Kỹ Thuật Điện MSHV: 1241830031 I- TÊN ĐỀ TÀI: Áp dụng phương pháp PSO cải tiến cho tốn phân bố cơng suất tối ưu với ràng buộc an ninh II- NHIỆM VỤ VÀ NỘI DUNG: Giới thiệu tổng quan phương pháp PSO tốn phân bố cơng suất tối ưu, nghiên cứu phương pháp PSO cải tiến, ứng dụng vào tốn phân bố cơng suất tối ưu với ràng buộc an ninh Bài toán thực mô mạng điện mẫu IEEE 30 nút, chương trình MatPower 4.1 chạy Matlab 7.0, cấu hình máy tính Window 7, chip Intel, core i5 III- NGÀY GIAO NHIỆM VỤ: 12-06-2013 IV- NGÀY HOÀN THÀNH NHIỆM VỤ: 30-03-2014 V- CÁN BỘ HƯỚNG DẪN: PGS.TS Phan Thị Thanh Bình CÁN BỘ HƯỚNG DẪN PGS.TS Phan Thị Thanh Bình KHOA QUẢN LÝ CHUYÊN NGÀNH i LỜI CAM ĐOAN Tôi xin cam đoan cơng trình nghiên cứu riêng Các số liệu, kết nêu Luận văn trung thực chƣa đƣợc công bố cơng trình khác Tơi xin cam đoan giúp đỡ cho việc thực Luận văn đƣợc cảm ơn thơng tin trích dẫn Luận văn đƣợc rõ nguồn gốc Học viên thực Luận văn Nguyễn Bá Thạnh ii LỜI CÁM ƠN Em xin chân thành cảm ơn sâu sắc đến PGS.TS Phan Thị Thanh Bình hƣớng dẫn, dạy giúp đỡ em tận tình suốt q trình nghiên cứu hồn thành luận văn Em xin cảm ơn thầy ThS.Nguyễn Phúc Khải cơng tác xa nhƣng tận tình giúp đỡ hƣớng dẫn trình thực Luận văn Em xin chân thành cảm ơn thầy cô giáo Khoa Cơ – Điện – Điện Tử cung cấp kiến thức, phòng Quản lý khoa học Đào tạo sau ĐH trƣờng Đại Học Công Nghệ TP HCM tạo điều kiện suốt trình học tập trƣờng, góp ý nhiều ý kiến quý báu để em hoàn thành tốt luận văn Em xin cảm ơn, gia đình, quan, bạn bè đồng nghiệp tạo điều kiện, quan tâm giúp đỡ em hoàn thành luận văn Mặc dù thời gian qua cố gắng nỗ lực nghiên cứu nhƣng kiến thức cịn nhiều hạn chế nên khơng thể tránh đƣợc thiếu sót Kính mong thầy hội đồng khoa học xem xét góp ý, chỉnh sửa để luận văn đƣợc hoàn thiện tốt nghiên cứu sau Em xin chân thành cảm ơn! TP HCM, ngày 28 tháng 03 năm 2014 Nguyễn Bá Thạnh iii TÓM TẮT Ngày nay, ngành điện Việt Nam bƣớc thay đổi cấu hội nhập với tình hình chung nƣớc khu vực, thị trƣờng điện vào hoạt động bƣớc sơ khởi Tuy nhiên non trẻ, kinh nghiệm từ thực tế nhƣ nghiên cứu vấn đề liên quan đến ràng buộc an ninh tốn phân phối cơng suất tối ƣu hoạt động giá chi phí nhiên liệu cố Sự vận hành hoạt động nhà máy điện, hệ thống truyền tải phân phối phải đảm bảo đƣợc vấn đề linh hoạt, tối ƣu tin cậy hệ thống nhằm đáp ứng đƣợc nhu cầu phụ tải, nhƣ nhà đầu tƣ tham gia thị trƣờng cách hiệu đơi bên Bài tốn phân bố cơng suất tối ƣu (OPF) đƣợc hình thành phát triển trải qua nhiều hệ, phƣơng pháp truyền thống đƣợc áp dụng thành công Ngày nay, với phát triển khoa học máy tính thúc đẩy OPF phát triển với phƣơng pháp thông minh nhƣ: Phƣơng pháp EP (Evolutionary programming), Phƣơng pháp AM (Ant Manners), Phƣơng pháp DE (Differential Evolution), Phƣơng pháp GA (Genetic Algorithm), Phƣơng pháp ACO (Ant Colony Optimization), Phƣơng pháp TS (Tabu Search), Phƣơng pháp SA (Simulated Annealing), phƣơng pháp PSO (Particle Swarm Optimal) Mỗi phƣơng pháp điều có mạnh ƣu điểm riêng cho trƣờng hợp giải vấn đề Tuy nhiên qua nghiên cứu, nhận thấy chúng cịn có hạn chế riêng chƣa thể giải cách tối ƣu so với phƣơng pháp “tối ƣu bầy đàn cải tiến” hay gọi phƣơng pháp “Gradient – giả dựa tối ƣu bày đàn” để giải toán OPF với ràng buộc an ninh Tại Việt Nam năm gần chƣa có nhiều nghiên cứu phƣơng pháp PSO toán OPF ràng buộc an ninh mạng lƣới điện truyền tải bối cảnh thị trƣờng điện cạnh tranh đặc biệc phƣơng pháp PSO cải tiến Do đó, “Áp dụng phƣơng pháp PSO cải tiến cho iv toán phân bố công suất với ràng buộc an ninh” đƣợc chọn làm đề tài nghiên cứu luận văn v ABSTRACT Recently, Vietnam Power Sector is gradually changing the structure of integration with the overall situation in the regional countries, power markets have operated a preliminary stepping However, it is a little young, lack in practical experience as well as research issues related to security constraints in power distribution problem for the optimal operation of the fuel price cost base and incidents The operational activities of power plants, transmission systems and distribution issues to ensure flexible, optimized and reliable system that is adaptable to load demand, as well as investors to enter the market one of the most effective ways both parties The problem of optimal power flow ( OPF ) has been formed and developed as so far gone through several generations, the traditional approach has been successfully applied Nowadays, with the development of computer science has spurred development OPF intelligent methods such as: Method EP (Evolutionary programming), Methods of AM (Ant Manners), DE method (Differential Evolution), methods GA (Genetic Algorithm), method ACO (Ant Colony Optimization), method TS (Tabu Search), methods of SA (Simulated Annealing), method PSO ( Particle Swarm Optimal ) Each method has advantages and strength for each case to solve the problem However, past research has found that they also own limitations can not optimally solve than the "Particle Swarm Optimal improvement", also known as the "Pseudo- gradient based particel swarm optimization" to solve OPF problem with security constraints In Vietnam in recent years not much research on PSO method in OPF problem with security constraints in the electricity transmission network in the context of a competitive electricity market and more architecture-specific PSO method improvements Thus, "Applying PSO improved method for seccurity constrained optimal power flow " was chosen as the research subjects in this thesis master vi MỤC LỤC Lời cam đoan i Lời cảm ơn ii Tóm tắt iii Abstract…………………………………………………………………………… v Mục lục vi Danh mục từ viết tắt ix Danh mục bảng x Danh mục biểu đồ, đồ thị, sơ đồ, hình ảnh…………………………………… xi LỜI MỞ ĐẦU CHƢƠNG 1: GIỚI THIỆU CHUNG 1.1 Đặt vấn đề 1.2 Tính cấp thiết đề tài 1.3 Mục tiêu đề tài 1.4 Phạm vi áp dụng đề tài 1.5 Giá trị thực tiễn đề tài 1.6 Kết cấu đề tài CHƢƠNG 2: GIỚI THIỆU BÀI TỐN PHÂN BỐ CƠNG SUẤT TỐI ƢU CĨ RÀNG BUỘC AN NINH 2.1 Giới thiệu tổng quan toán phân bố công suất tối ƣu 2.1.1 Hàm mục tiêu cho chi phí nhiên liệu tối thiểu OPF 2.1.2 Hàm mục tiêu cho chi phí nhiên liệu tối thiểu OPF có ràng buộc 10 2.1.3 Hàm mục tiêu tổn thất công suất tối thiểu OPF 11 2.1.4 Hàm mục tiêu tổn thất công suất tối thiểu OPF có ràng buộc 11 2.1.5 Mục tiêu thử thách OPF 12 2.2 Sự điều chỉnh hệ thống sau cố (Phân bố cơng suất có ràng buộc an ninh) 14 2.3 Tổng quan phƣơng pháp áp dụng giải toán phân bố tối ƣu công suất 16 % Penalty for transmission lines Sl = max(sqrt(results.branch(:,14).^2 + results.branch(:,15).^2),sqrt(results.branch(:,16).^2 + results.branch(:,17).^2)); Slmax_sc = Slmax(sc~=Nbr); FSl_sc(k) = sum((Sl>Slmax_sc).*(Sl-Slmax_sc).^2); end % Function to be minimized FFd(d) = FC + K*FPr + K*FQg + K*FVl + K*FSl + K*sum(FQg_sc) + K*sum(FVl_sc) + K*sum(FSl_sc); % Return the value of data data = data_org; end % end of for % Calculate pseudo gradient dirid = zeros(N,NP); indx = find(FFdFPbestd).*Pbestid + ones(N,1)*(FFdFPbestd).*FPbestd + (FFdPgrmax)*(Pgr - Pgrmax) + (PgrQgimax).*(Qgi-Qgimax) + (QgiVimax(Nload)).*(Vli-Vimax(Nload)) + (VliSlmax).*(Sl-Slmax)); Ploss = sum(results.gen(:,2)) - sum(results.bus(:,3)); VD = sum(abs(Vli-1)); Ybus = makeYbus(data); Y1 = Ybus(Nload,Nload); Y2 = Ybus(Nload,Ngen); H2 = -inv(Y1)*Y2; Vg = results.bus(Ngen,8).*exp(1i*results.bus(Ngen,9)*pi/180); Vl0 = H2*Vg; Vl = results.bus(Nload,8).*exp(1i*results.bus(Nload,9)*pi/180); Limax = max(abs(1 - Vl0./Vl)); %% Check the contigency cases for k = 1:No sc = outline(k); % position of outage data.branch = data_org.branch(sc~=Nbr,:); % Run power flow opt = mpoption('VERBOSE',0, 'OUT_ALL',0); results = runpf(data, opt); % Penalty for Qg Qgi = results.gen(:,3); FQg_sc(k) = sum((Qgi>Qgimax).*(Qgi-Qgimax) + (QgiVimax(Nload)).*(Vli-Vimax(Nload)) + (VliSlmax_sc).*(Sl-Slmax_sc)); end if max(FQg_sc)>1e-3 || max(FVl_sc)>1e-3 || max(FSl_sc)>1e-3 disp('INFEASIBLE SOLUTION'); end %% Recorded result % Parameter Para.NP = NP; Para.R = R; Para.Itmax = Itmax; % Result Solution.Pgi = Pgi; Solution.Ploss = Ploss; Solution.Qgi = Qgi; Solution.Vgi = Gbesti(Nvg); Solution.Vli = Vli; Solution.Tt = Gbesti(Ntt); Solution.Sl = Sl; Solution.VD = VD; Solution.Limax = Limax; Solution.dPgr = dPgr; Solution.dQgi = dQgi; Solution.dVli = dVli; Solution.dSl = dSl; Solution.FF = FF; Solution.CPU = total_time; Solution.FQg_sc = FQg_sc; Solution.FVl_sc = FVl_sc; Solution.FSl_sc = FSl_sc; % % disp(' '); % % disp(' - RESULT OF PSO -'); %% % % disp(' '); % % fprintf('Fitness Function for Gbest :\n'); % % fprintf(' %6.4f\n',FF(Itmax)); % % fprintf('Power generation:\n'); % % fprintf(' %6.4f\n',Pgi); % % fprintf('Generation bus voltage:\n'); % % fprintf(' %4.4f\n',results.gen(:,6)); % % fprintf('Load bus voltage:\n'); % % fprintf(' %4.4f\n',results.bus(Nload,8)); % % fprintf('Tap changers:\n'); % % fprintf(' %4.4f\n',results.branch(Ntap,9)); % % % fprintf('Shunt capacitor:\n'); % % % fprintf(' %4.4f\n',results.bus(Ncap,6)); %% % % disp(' '); % % fprintf('Maximum error slack bus :'); fprintf(' %1g\n', dPgr); % % fprintf('Maximum error reactive gen :'); fprintf(' %1g\n', dQgi); % % fprintf('Maximum error transmission :'); fprintf(' %1g\n', dSl); % % fprintf('Maximum error voltage :'); fprintf(' %1g\n', dVli); % % fprintf('Total iterations :'); fprintf(' %1g\n', Itmax); fprintf('Total cost ($) :'); fprintf(' %8.4f\n', FC); fprintf('Total time (s) :'); fprintf(' %4.2f\n', total_time); %% % % %% Graphic dispatch for convergence process % % semilogx(1:Itmax,FF,'-r','LineWidth',3); % % grid; % % xlabel(['Number of iterations = ', num2str(Itmax)]); % % ylabel('Fitness function'); % % title(['Max = ', num2str(max(FF)), ', Min = ', num2str(min(FF))]); Total cost ($) : 825.3627 Total time (s) : 103.19 Su co duong day % OPF by PGPSO method using matpower to run power flow % % clear all; clc; start = cputime; %% Data input % Data from Matpower % 1* mpc.bus = busdata % (1) Bus number; (2) Bus code (slack = 3; gen = 2; load = 1); (3) Pdi; (4) Qdi; (5) Shunt L % (6) Shunt Qc; (7) (8) Vm (pu); (9) Va (degree); (10) Voltage base; (11) Loss zone; (12) Vmax; (13) Vmin % 2* mpc.gen = gendata % (1) Bus number; (2) Real Pgi; (3) Reactive Qgi; (4) Qgimax; (5) Qgimin; (6) Vg (pu); (7) MVA base; % (8) Gen status (1 = on; = off); (9) Pmax; (10) Pmin % 3* mpc.branch = linedata % (1) from; (2) to; (3) R; (4) X; (5) Bc; (6) Long term rates; (7) Short term rates; (8) Emergency rates % (9) Tap changer; (10) Phase shifter (degree); (11) Branch status (1 = on; = off); (12) min(deli-delj) % (13) max(deli-delj) % 4* mpc.gencost for OPF data = case_ieee30; % from Matpower 4.10 % Additional data % Position of Qc % Ncap = [10 12 15 17 20 21 23 24 29]'; % Constraint limits Vref_lim = [0.95 1.05]; Vpv_lim = [0.95 1.10]; Vpq_lim = [0.95 1.05]; Tap_lim = [0.90 1.10]; Slmax = [130 130 65 130 130 65 90 130 130 32 65 32 65 65 65 65 32 32 32 16 16 16 16 32 32 32 32 32 32 16 16 16 16 16 16 65 16 16 16 32 32]'; % Generator data % Bus a b c Pmin Pmax Qmin Qmax gencost = [ 2.00 0.00375 50 200 -20 150 1.75 0.01750 20 80 -20 80 1.00 0.06250 15 50 -15 60 3.25 0.00834 10 35 -15 60 11 3.00 0.02500 10 30 -10 50 13 3.00 0.02500 12 40 -15 45]; %% Data processing % Bus data Nb = length(data.bus(:,1)); % number of bus Ngen = find(data.bus(:,2)>1); % gen position Ng = length(Ngen); % number of gen Nload = setdiff(data.bus(:,1),Ngen);% load position ref = find(data.bus(:,2)==3); % reference bus % Line data Ntap = find(data.branch(:,9)>0); % tap position Nt = length(Ntap); % number of taps data.branch(:,6) = Slmax; % Gen data = gencost(:,2); bi = gencost(:,3); ci = gencost(:,4); Pgimin = gencost(:,5); Pgimax = gencost(:,6); Qgimin = gencost(:,7); Qgimax = gencost(:,8); data.gen(:,4) = Qgimax; data.gen(:,5) = Qgimin; data.gen(:,9) = Pgimax; data.gen(:,10) = Pgimin; %% Parameters for PSO K = 1e6; NP = 20; Itmax = 250; % Maximum iteration number c1 = 2.05; c2 = 2.05; phi = 4.1; C = 2/abs(2 - phi - sqrt(phi^2 - 4*phi)); R = 0.15; %% Initial conditions % Limits Pgrmax = Pgimax(Ngen==ref); % limits of ferference bus Pgrmin = Pgimin(Ngen==ref); % ref = Pgi_rmax = Pgimax(Ngen~=ref); % limits of generation bus except reference bus Pgi_rmin = Pgimin(Ngen~=ref); % i = Ng-1 % Qgimax and Qgimin are the same Vimax = ones(Nb,1)*Vpq_lim(:,2); % voltage limits incl gen and load Vimax(Ngen) = Vpv_lim(:,2); Vimax(ref) = Vref_lim(:,2); Vimin = ones(Nb,1)*Vpq_lim(:,1); Vimin(Ngen) = Vpv_lim(:,1); Vimin(ref) = Vref_lim(:,1); data.bus(:,12) = Vimax; data.bus(:,13) = Vimin; Ttimax = ones(Nt,1)*Tap_lim(:,2); % tap limits Ttimin = ones(Nt,1)*Tap_lim(:,1); % Slmax is them same % X = [Pg2 PgNg, Vg1 VgNg, Qc1 QcNc, Tt1 TtNt]; % Siez(X) = [Ng-1, Ng, Nc, Nt] % U = [Pg1, Qg1 QgNg, Vl1 VlNld, Sl1 SlNln] Ximax = [Pgi_rmax; Vimax(Ngen); Ttimax]; Ximin = [Pgi_rmin; Vimin(Ngen); Ttimin]; Xidmax = Ximax*ones(1,NP); Xidmin = Ximin*ones(1,NP); Vidmax = R*(Xidmax - Xidmin); Vidmin = -Vidmax; % Initialization N = length(Ximax); Npg = 1:Ng-1; % position of gen in the Xi Nvg = Ng:2*Ng-1; % position of bus vol in the Xi Ntt = 2*Ng:N; % position of tap changers in the Xi Xid = Xidmin + rand(N,NP).*(Xidmax - Xidmin); Vid = Vidmin + rand(N,NP).*(Vidmax - Vidmin); % Security data outline = [1 33 35 37 38]; No = length(outline); FQg_sc = zeros(1,No); FVl_sc = zeros(1,No); FSl_sc = zeros(1,No); Nbr = (1:length(data.branch(:,1)))'; % Run power flow and evaluate fitness function FFd = zeros(1,NP); for d = 1:NP % Assign initial values data.gen(Ngen~=ref,2) = Xid(Npg,d); data.gen(:,6) = Xid(Nvg,d); data.bus(:,8) = ones(Nb,1); % May not be needed data.bus(Ngen,8) = Xid(Nvg,d); % May not be needed data.branch(Ntap,9) = Xid(Ntt,d); data_org = data; % Run power flow for base case opt = mpoption('VERBOSE',0, 'OUT_ALL',0); results = runpf(data, opt); % Fuel cost function Pgi = results.gen(:,2); FC = sum(ai + bi.*Pgi + ci.*Pgi.^2); % Penatlty for ref bus Pgr = Pgi(Ngen==ref); FPr = (Pgr>Pgrmax)*(Pgr - Pgrmax)^2 + (PgrQgimax).*(Qgi-Qgimax).^2 + (QgiVimax(Nload)).*(Vli-Vimax(Nload)).^2 + (VliSlmax).*(Sl-Slmax).^2); % Run PF for contingency cases for k = 1:No sc = outline(k); % position of outage data.branch = data_org.branch(sc~=Nbr,:); % Run power flow opt = mpoption('VERBOSE',0, 'OUT_ALL',0); results = runpf(data, opt); % Penalty for Qg Qgi = results.gen(:,3); FQg_sc(k) = sum((Qgi>Qgimax).*(Qgi-Qgimax).^2 + (QgiVimax(Nload)).*(Vli-Vimax(Nload)).^2 + (VliSlmax_sc).*(Sl-Slmax_sc).^2); end % Function to be minimized FFd(d) = FC + K*FPr + K*FQg + K*FVl + K*FSl + K*sum(FQg_sc) + K*sum(FVl_sc) + K*sum(FSl_sc); % Return the value of data data = data_org; end %% Initial pseudo gradient dirid = zeros(N,NP); gpid = dirid; %% Store the best values FPbestd = FFd; [FGbest,ind] = min(FPbestd); Pbestid = Xid; % The best of an agent Gbesti = Xid(:,ind); % The best among the agents %% Main loop Iter = 0; FF = zeros(1,Itmax); % store he best value for every uiteration GG = cell(1,Itmax); % store the best position for every iteration while Iter < Itmax Iter = Iter + 1; % % fprintf('Iteration: %1.0f\n\n', Iter); % Update velocity Vid = C*(Vid + c1*rand(N,NP).*(Pbestid - Xid) + c2*rand(N,NP).*(Gbesti*ones(1,NP) - Xid)); Vid(Vid>Vidmax) = Vidmax(Vid>Vidmax); Vid(VidXidmax); Xid(XidQgimax).*(Qgi-Qgimax).^2 + (QgiVimax(Nload)).*(Vli-Vimax(Nload)).^2 + (VliSlmax_sc).*(Sl-Slmax_sc).^2); end % Function to be minimized FFd(d) = FC + K*FPr + K*FQg + K*FVl + K*FSl + K*sum(FQg_sc) + K*sum(FVl_sc) + K*sum(FSl_sc); % Return the value of data data = data_org; end % end of for % Calculate pseudo gradient dirid = zeros(N,NP); indx = find(FFdFPbestd).*Pbestid + ones(N,1)*(FFdFPbestd).*FPbestd + (FFdPgrmax)*(Pgr - Pgrmax) + (PgrQgimax).*(Qgi-Qgimax) + (QgiVimax(Nload)).*(Vli-Vimax(Nload)) + (VliSlmax).*(Sl-Slmax)); Ploss = sum(results.gen(:,2)) - sum(results.bus(:,3)); VD = sum(abs(Vli-1)); Ybus = makeYbus(data); Y1 = Ybus(Nload,Nload); Y2 = Ybus(Nload,Ngen); H2 = -inv(Y1)*Y2; Vg = results.bus(Ngen,8).*exp(1i*results.bus(Ngen,9)*pi/180); Vl0 = H2*Vg; Vl = results.bus(Nload,8).*exp(1i*results.bus(Nload,9)*pi/180); Limax = max(abs(1 - Vl0./Vl)); %% Check the contigency cases for k = 1:No sc = outline(k); % position of outage data.branch = data_org.branch(sc~=Nbr,:); % Run power flow opt = mpoption('VERBOSE',0, 'OUT_ALL',0); results = runpf(data, opt); % Penalty for Qg Qgi = results.gen(:,3); FQg_sc(k) = sum((Qgi>Qgimax).*(Qgi-Qgimax) + (QgiVimax(Nload)).*(Vli-Vimax(Nload)) + (VliSlmax_sc).*(Sl-Slmax_sc)); end if max(FQg_sc)>1e-3 || max(FVl_sc)>1e-3 || max(FSl_sc)>1e-3 disp('INFEASIBLE SOLUTION'); end %% Recorded result % Parameter Para.NP = NP; Para.R = R; Para.Itmax = Itmax; % Result Solution.Pgi = Pgi; Solution.Ploss = Ploss; Solution.Qgi = Qgi; Solution.Vgi = Gbesti(Nvg); Solution.Vli = Vli; Solution.Tt = Gbesti(Ntt); Solution.Sl = Sl; Solution.VD = VD; Solution.Limax = Limax; Solution.dPgr = dPgr; Solution.dQgi = dQgi; Solution.dVli = dVli; Solution.dSl = dSl; Solution.FF = FF; Solution.CPU = total_time; Solution.FQg_sc = FQg_sc; Solution.FVl_sc = FVl_sc; Solution.FSl_sc = FSl_sc; % % disp(' '); % % disp(' - RESULT OF PSO -'); %% % % disp(' '); % % fprintf('Fitness Function for Gbest :\n'); % % fprintf(' %6.4f\n',FF(Itmax)); % % fprintf('Power generation:\n'); % % fprintf(' %6.4f\n',Pgi); % % fprintf('Generation bus voltage:\n'); % % fprintf(' %4.4f\n',results.gen(:,6)); % % fprintf('Load bus voltage:\n'); % % fprintf(' %4.4f\n',results.bus(Nload,8)); % % fprintf('Tap changers:\n'); % % fprintf(' %4.4f\n',results.branch(Ntap,9)); % % % fprintf('Shunt capacitor:\n'); % % % fprintf(' %4.4f\n',results.bus(Ncap,6)); %% % % disp(' '); % % fprintf('Maximum error slack bus :'); fprintf(' %1g\n', dPgr); % % fprintf('Maximum error reactive gen :'); fprintf(' %1g\n', dQgi); % % fprintf('Maximum error transmission :'); fprintf(' %1g\n', dSl); % % fprintf('Maximum error voltage :'); fprintf(' %1g\n', dVli); % % fprintf('Total iterations :'); fprintf(' %1g\n', Itmax); fprintf('Total cost ($) :'); fprintf(' %8.4f\n', FC); fprintf('Total time (s) :'); fprintf(' %4.2f\n', total_time); %% % % %% Graphic dispatch for convergence process % % semilogx(1:Itmax,FF,'-r','LineWidth',3); % % grid; % % xlabel(['Number of iterations = ', num2str(Itmax)]); % % ylabel('Fitness function'); % % title(['Max = ', num2str(max(FF)), ', Min = ', num2str(min(FF))]); Total cost ($) : 825.9834 Total time (s) : 179.65