2.4.2.1 Hàm mục tiêu
Xét một hệ thống điện gồm n tổ máy phát điện với nhu cầu công suất tải PD(MW). Mục tiêu là làm thế nào để tổng chi phí phát điện của các tổ máy là nhỏ nhất mà vẫn đảm bảo điều kiện ràng buộc cân bằng công suất và các ràng buộc khác. Vì vậy, bài toán phân bố tối ưu được thành lập với hàm mục tiêu như sau:
Hàm mục tiêu tối thiểu chi phí vận hành:
Min C = n i i i P C 1 ) ( (1) Với: max min 2 max 1 1 min 1 2 1 1 1 1 1 n n n n n n n n i i P P P P c P b a P P P P c P b a P C i là tổ máy thứ i, i = 1,2,…n
Ci (Pi): chi phí nhiên liệu ứng với công suất phát tổ máy thứ i Pi công suất phát tổ máy thứ i
ai; bi; ci: các hệ số hàm chi phí tổ máy thứ i. Trong đó hằng số ai là chi phí nhiên liệu của tổ máy thứ i tương ứng với công suất phát bằng 0.
Chương II: Tối ưu hóa phân bố công suất
và phương pháp tính toán tối ưu hóa phân bố công suất CBHD: Trần Anh Nguyện
SVTH: Trần Quốc Thái -1111044 Trang 20
Điều kiện ràng buộc cân bằng công suất để đáp ứng yêu cầu của phụ tải: n i D i P P 1
0 (n là số máy phát tham gia vận hành) Công suất phát cho từng tổ máy
Pimin ≤ Pi ≤ Pimax
2.4.2.3 Phương pháp giải
Hàm Lagrange được thành lập dựa vào hàm mục tiêu và điều kiện ràng buộc cân bằng công suất.
L = n i n i D i i i P P P C 1 1 ) ( (2)
Với λ: nhân tử lagrange tương ứng với suất tăng chi phí nhiên liệu của các tổ máy phát.
Đạo hàm bậc nhất hàm Lagrange rồi tìm cực trị, ta có thể viết:
0 P L i i i i P P C (3) Khai triển phương trình (3) ta thu được phương trình sau:
i i
i c P
b 2 (4)
Tính công suất cho từng tổ máy phát theo công thức (4)
5 2 i i i c b P
Ta có thể giải phương trình (5) với một giá trị λ biết trước bằng phương pháp lặp. Quá trình giải lặp sẽ kết thúc khi nào công suất phát sai số nhỏ hơn sai số cho phép.
Điều này có nghĩa là tại thời điểm chi phí nhiên liệu gia tăng bằng nhau giữa tất cả các tổ máy phát cũng là lúc công suất được phân bố tối ưu nhất.
Chương III: Ứng dụng phần mềm
tính toán tối ưu hóa phân bố công suất CBHD: Trần Anh Nguyện
SVTH: Trần Quốc Thái -1111044 Trang 21
CHƯƠNG III
ỨNG DỤNG PHẦN MỀM TÍNH TOÁN TỐI ƯU HÓA PHÂN BỐ CÔNG SUẤT
3.1 Giới thiệu về chương trình Matlab
Matlab là một trong những hệ thống được soạn thảo hết sức chu đáo mạch lạc với việc áp dụng nhiều thuật toán phong phú, đặc biệt như chính tên của nó “Matric Laboratory”, thuật toán ma trận được coi là hạt nhân quan trọng trong lập trình Matlab. Cú pháp ngôn ngữ của chương trình Matlab được thiết lập tinh tế đến mức người sử dụng không có cảm giác là đang tiếp xúc với các phép tính phức tạp của ma trận. Ma trận được áp dụng rộng rãi trong các bài toán kỹ thuật điện, điện tử, cơ học… Matlab có thể làm việc ở hai chế độ: tương tác và lập trình. Trong tương tác, Matlab thực hiện từng lệnh được gõ trong cửa sổ lệnh sau dấu nhắc lệnh (>>). Trong chế độ lập trình, một tập lệnh được soạn thảo và ghi lại thành một tệp đuôi .m (m-file). Để gọi chương trình ta chỉ cần gọi tên m-file trong cửa sổ lệnh.
Hệ thống Matlab là hệ thống mở cho phép người sử dụng giải các bài toán chuyên sâu như: bài toán tối ưu, hệ thống điều khiển, mô phỏng dạng sóng… với độ chính xác cao và tốc độ nhanh. Hệ thống Matlab chứa một lượng khổng lồ các phép tính, thuật giải và hàm cho phép giải rất nhiều bài toán phức tạp như: lấy đạo hàm, vi phân, ma trận nghịch đảo…Thêm vào đó, hệ thống còn có khả năng hiệu chỉnh chương trình, khi người sử dụng dùng câu lệnh sai thì máy sẽ báo lỗi giúp cho việc tìm ra lỗi dễ dàng hơn. Do đó Matlab là một phần mềm hết sức thuận tiện và hiệu quả.
3.2 Giao diện của chương trình
Chương III: Ứng dụng phần mềm
tính toán tối ưu hóa phân bố công suất CBHD: Trần Anh Nguyện
SVTH: Trần Quốc Thái -1111044 Trang 22
Hình 3.1: Các cửa sổ làm việc chính của Matlab.
NewScript: cửa sổ để viết các lệnh lập trình, có phần mở rộng là file.m.
Help (demo): trợ giúp thông tin về phần mềm.
Current directory: cho biết các thư mục đang lưu trữ.
Command windown: Cửa sổ để nhập các lệnh và dữ liệu, đồng thời là nơi xuất ra các kết quả tính toán.
Command history: cửa sổ lưu trữ các lệnh đã thực thi cùng với thời gian sử
dụng.
3.3 Các phép toán, tên biến, các hàm cơ bản 3.3.1 Các phép toán 3.3.1 Các phép toán
Các phép toán đại số: +, -, *,^, /, \ (chia trái), ' phép chuyển vị ma trận hay liên hợp phức.
Chương III: Ứng dụng phần mềm
tính toán tối ưu hóa phân bố công suất CBHD: Trần Anh Nguyện
SVTH: Trần Quốc Thái -1111044 Trang 23
Các toán tử logic: & (and), | (or), ~ (not).
Các hằng: pi, j, inf (vô cùng), NaN (không xác định).
3.3.2 Cách đặt tên biến
Matlab có những quy định về tên biến: tên biến phải bắt đầu bằng chữ và không chứa các kí tự đặt biệt như @, !, #, % … Ngoài ra Matlab còn phân biệt chữ hoa với chữ thường.
3.3.3 Điều khiển vào ra
Các lệnh sau dùng để đưa số liệu vào và ra:
Nhập dữ liệu: input (cú pháp: tên biến = input (‘chuỗi hiển thị’)).
Hiển thị nội dung của mảng hay chuỗi: disp (cú pháp disp (tên biến hoặc tên chuỗi cần hiển thị)).
Điều khiển xuất kết quả tính toán: format.
Lưu dữ liệu: save (cú pháp: save ‘tên file’ ‘tên biến’ ‘kiểu định dạng’).
3.4 Ma trận 3.4.1 Ma trận 3.4.1 Ma trận Ma trận là một mảng các số liệu gồm có m hàng và n cột: mn m m n n a a a a a a a a a A ... . . . ... ... 2 1 2 22 21 1 12 11 Có các cách nhập ma trận sau: Nhập ma trận từ bàn phím (liệt kê). Nhập từ file dữ liệu. Tạo ma trận từ các hàm có sẵn, các hàm tự tạo. Nhập ma trận theo kiểu liệt kê:
Chương III: Ứng dụng phần mềm
tính toán tối ưu hóa phân bố công suất CBHD: Trần Anh Nguyện
SVTH: Trần Quốc Thái -1111044 Trang 24
Nhập ma trận nhờ các hàm tự tạo:
>>A=ones(m,n) (ma trận A gồm toàn các phần tử 1)
>>A=zeros(m,n) (ma trận A gồm toàn các phần tử 0, có m hàng n cột).
Địa chỉ mảng: Để truy xuất đến phần tử nằm ở hàng i cột j của ma trận A ta dùng lệnh:
>>A(i,j)
>>A(:,j) (Truy xuất tất cả các phần tử của cột j) >>A(i,:) (Truy xuất tất cả các phần tử của hàng i).
3.4.2 Các phép toán với ma trận trong Matlab
Phép nhân hai ma trận:
>>G=A*B. Số cột của A phải bằng với số hàng của B. Nhân theo mảng:
>>G=A .*B. Khi nhân theo mảng thì A, B phải cùng kích thước. Với phép nhân thì các phần tử của hai ma trận được nhân tương ứng với nhau.
Phép cộng trừ hai ma trận:
>>G=A+B (G=A-B). Các ma trận A và B phải cùng kích thước. Phép chia ma trận:
Nếu G*B=A thì G=A/B
Nếu A*G=B thì G=A\B (phép chia trái). Chia theo mảng:
>>G=A ./B Phép lũy thừa ma trận:
>>G=A^p (p là một số nguyên dương). Ma trận G có được bằng cách nhân các ma trận A với nhau p lần.
Phép nghịch đảo ma trận: >>G=inv(A).
Chương III: Ứng dụng phần mềm
tính toán tối ưu hóa phân bố công suất CBHD: Trần Anh Nguyện
SVTH: Trần Quốc Thái -1111044 Trang 25
3.5 Cấu trúc điều kiện 3.5.1 Cấu trúc if-end 3.5.1 Cấu trúc if-end
Cú pháp:
if <biểu thức điều kiện>
lệnh 1; lệnh 2; lệnh 3; ……...; lệnh n; end
sơ đồ khối của cấu trúc if-end như hình 3.2:
Hình 3.2: Sơ đồ khối cấu trúc if-end.
Khi biểu thức điều kiện đúng thì Matlab thực thi lệnh. Nếu sai thì thực thi các lệnh phía sau end.
3.5.2 Cấu trúc if-elseif-else-end
Cú pháp:
Chương III: Ứng dụng phần mềm
tính toán tối ưu hóa phân bố công suất CBHD: Trần Anh Nguyện
SVTH: Trần Quốc Thái -1111044 Trang 26
<khối lệnh1>
elseif <biểu thức điều kiện 2> <khối lệnh 2>
else
<khối lệnh 3> end
Sơ đồ khối của cấu trúc if-elseif-else-end như hình 3.3:
Hình 3.3: Sơ đồ khối cấu trúc if-elseif-else-end.
Nếu điều kiện 1 đúng thì thực hiện khối lệnh 1, nếu sai Matlab sẽ kiểm tra biểu thức điều kiện 2. Nếu điều kiện 2 đúng thì Matlab sẽ thực hiện khối lệnh 2, nếu sai thì Matlab sẽ thực hiện khối lệnh 3.
3.6 Cấu trúc lặp
3.6.1 Cấu trúc for-end
Vòng lặp for cho phép một nhóm lệnh thực hiện lại một số lần cố định. Cú pháp của vòng lặp for như sau:
Chương III: Ứng dụng phần mềm
tính toán tối ưu hóa phân bố công suất CBHD: Trần Anh Nguyện
SVTH: Trần Quốc Thái -1111044 Trang 27
for <biến chỉ số>=<chỉ số đầu>:<bước tăng>:<chỉ số cuối> <khối lệnh>
end
Sơ đồ khối của cấu trúc for-end như hình 3.4:
Hình 3.4: Sơ đồ khối cấu trúc for-end.
Bước tăng có thể được mặc định bằng 1 hoặc có giá trị dương hay âm nhưng phải phù hợp với giá trị của chỉ số đầu và chỉ số cuối.
Cấu trúc for-end được sử dụng khi số vòng lập đã xác định.
3.6.2 Cấu trúc while-end
Vòng lặp while thực hiện lặp lại một nhóm lệnh một số lần cố định, nhưng không biết trước được số lần lặp lại.
Cú pháp của vòng lặp while như sau:
While <biểu thức điều kiện> <khối lệnh>
end
Chương III: Ứng dụng phần mềm
tính toán tối ưu hóa phân bố công suất CBHD: Trần Anh Nguyện
SVTH: Trần Quốc Thái -1111044 Trang 28
Hình 3.5: Sơ đồ khối cấu trúc while-end.
“khối các lệnh…” giữa hai trạng thái while và end được thực hiện lặp đi lặp lại khi tất cả các “biểu thức điều kiện” là đúng. Thông thường giá trị của điều kiện đưa ra kết quả là một số, nhưng nếu kết quả đưa ra là một mảng thì vẫn hợp lệ. Trong trường hợp mảng, tất cả các phần tử trong mảng kết quả đưa ra phải là True (đúng).
Cấu trúc while-end khi chưa xác định rõ số vòng lặp, quá trình lặp chỉ kết thúc cùng với điều kiện đi kèm.
3.6.3 Cấu trúc switch-case
Khi một chuỗi các lệnh đánh giá dựa trên một biểu thức thử hoặc biểu thức điều kiện với nhiều giá trị thử khác nhau, người ta thường dùng cấu trúc switch- case. Cấu trúc switch-case có dạng như sau:
switch biểu thức điều kiện case {giá trị thử 1}
khối lệnh 1
case {giá trị thử 2, giá trị thử 3, giá trị thử 4} khối lệnh 2
otherwise
khối lệnh 3 end
Chương III: Ứng dụng phần mềm
tính toán tối ưu hóa phân bố công suất CBHD: Trần Anh Nguyện
SVTH: Trần Quốc Thái -1111044 Trang 29
Tại đây biểu thức điều kiện phải là dạng số hoặc dạng chuỗi, nếu biểu thức điều kiện là dạng số thì lệnh case sẽ thử xem giá trị của biểu thức đó có bằng giá trị thử i hay không. Nếu biểu thức điều kiện là một chuỗi thì lệnh case sẽ so sánh chuỗi đó với giá trị thử i. Trong ví dụ trước biểu thức điều kiện được đem so sánh với giá trị thử 1, nếu chúng bằng nhau thì khối lệnh đầu tiên được thực hiện, mà các khối lệnh tiếp theo cho đến trước trạng thái end được bỏ qua, nếu chúng không bằng nhau thì điều kiện tiếp tục được đem so sánh với giá trị thử 2, giá trị thử 3, giá trị thử 4, nếu một trong các giá trị này bằng biểu thức điều kiện thì khối lệnh 2 được thực hiện. Nếu tất cả các lệnh so sánh của case đều không đúng thì khối lệnh 3 được thực hiện. Chú ý rằng trong cấu trúc switch-case có ít nhất một nhóm lệnh phải được thực hiện.
3.7 Giao diện đồ họa GUIDE trong Matlab
GUI cung cấp các công cụ có khả năng liên kết các môi trường tính toán và đồ họa làm tăng tính trực quan và sinh động của vấn đề.
Để khởi động GUI, từ cửa sổ Command Windown ta gõ lệnh guide, khi đó cửa sổ GUI sẽ xuất hiện:
Hình 3.6: Cửa sổ GUIDE.
Muốn tạo một GUI ta chọn “Create New GUI”. Khi đó sẽ xuất hiện như hình 3.7:
Chương III: Ứng dụng phần mềm
tính toán tối ưu hóa phân bố công suất CBHD: Trần Anh Nguyện
SVTH: Trần Quốc Thái -1111044 Trang 30
Hình 3.7: Vùng không gian làm việc của GUI.
Một số công cụ của GUI như:
Push button: tạo nút ấn.
Edit text: tạo khung, tại khung này cho phép truy xuất dữ liệu.
Static text: cho phép hiển thị chuỗi văn bản.
Axes: tạo hệ trục tọa độ, cho phép hiển thị các hình vẽ...
Để xây dựng GUI ta kéo các đối tượng cần sử dụng vào vùng không gian thiết kế. Mỗi đối tượng GUI có hai thuộc tính quan trọng:
Thuộc tính String: hiển thị một chuỗi kiểu văn bản (text) ngay trên vị trí đặt đối tượng.
Thuộc tính Tag: tên của đối tượng, tên Tag do người lập trình đặt. Sau khi đã xác định thuộc tính cho các đối tượng, ta chọn Run để kiểm tra kết quả. Lúc này Matlab sẽ tự động tạo hai file có phần mở rộng là file.m và file.fig. File.m chứa các chương trình con (callback) mà người lập trình yêu cầu Matlab thực hiện khi click chuột vào đối tượng. File.fig chứa giao diện của GUI vừa tạo ra.
3.8 Liên kết giữa Matlap và Microsoft Excel
Chương III: Ứng dụng phần mềm
tính toán tối ưu hóa phân bố công suất CBHD: Trần Anh Nguyện
SVTH: Trần Quốc Thái -1111044 Trang 31
Với Microsoft Office 2003, Matlab có thể liên kết với Excel thông qua tính năng Excel Link do đó có thể trao đổi dữ liệu (dạng ma trận) qua lại giữa hai phần mềm. Để sử dụng tính năng này cần thiết lập cấu hình Excel Link của phần mềm Excel. Với Matlab tính năng Excel Link chứa trong hộp công cụ Tool Box. Các bước hướng dẫn thiết lập được trình bày khá cụ thể trong thư mục Help (Excel Link) của Matlab.
Thư mục Help (Excel Link) trong phần mềm Matlab hình 3.8:
Hình 3.8: Hướng dẫn thiết lập Excel Link trong thư mục Help của Matlab.
3.8.1 Các tiện ích của liên kết
Sau khi thiết lập liên kết, trên thanh công cụ (Tool Bars) của Excel xuất hiện các tiện ích.
Chương III: Ứng dụng phần mềm
tính toán tối ưu hóa phân bố công suất CBHD: Trần Anh Nguyện
SVTH: Trần Quốc Thái -1111044 Trang 32
Hình 3.9: Các tiện ích của Excel Link- Matlab.
Chức năng như sau:
Startmatlab: khởi động Matlab từ Excel.
Putmatrix: đưa ma trận từ bảng tính của Excel vào Matlab. Ma trận đưa vào Matlab phải được đặt tên biến.
Getmatrix: lấy ma trận từ Matlab ra bảng tính của Excel. Ma trận lấy ra từ Matlab phải được khai báo đúng tên biến.
Evalstring: chạy các lệnh Matlab.
3.8.2 Chuyển dữ liệu từ Excel sang Matlab
Từ bản tính Excel ta có các dữ liệu dạng ma trận như hình 3.10:
Hình 3.10: Ma trận dữ liệu từ bảng tính Excel.
Để đưa dữ liệu vào Matlab trước hết ta đánh dấu bôi đen phần dữ liệu cần thực hiện, chọn startmatlab để khởi động Matlab, tiếp theo chọn putmatrix. Lúc này chương trình yêu cầu ta đặt tên biến cho các dữ liệu này, hộp hội thoại như sau xuất hiện:
Chương III: Ứng dụng phần mềm
tính toán tối ưu hóa phân bố công suất CBHD: Trần Anh Nguyện