3.2.3.1 Xác định các yếu tố ảnh hưởng đến dự báo
Các yếu tố ảnh hưởng đến dự báo phụ tải đã được nêu chi tiết tại mục 2.1.5. Sau khi đã loại bỏ các tham số trùng lặp, ta có được danh sách các tham số đối với từng loại dự báo như sau:
- Với chức năng dự báo phụ tải giờ tới, chúng tôi sử dụng cách tiếp cận đã được dùng phổ biến hiện nay trong ngành điện (chương trình AREVA dùng cho dự báo và tối ưu1
): phụ tải giờ tới được dự báo dựa vào phụ tải của 24 giờ trước đó như minh hoạ trong hình. Ngoài cách tiếp cận này ra, chúng ta cũng có thể sử dụng những cách dự phụ tải báo giờ tới dựa vào: (i) phụ tải của giờ đó trong N ngày trước, (ii) dựa vào giờ đó trong những mùa trước, năm trước, … Những cách tiếp cận sẽ được thử nghiệm trong thời gian tới trong định hướng phát triển tiếp theo của luận văn.
32
Hình 3.5: Tham số sử dụng để dự báo phụ tải giờ tới
- Với chức năng dự báo phụ tải ngày tới, cũng tham khảo từ chương trình AREVA, chúng tôi xác định được các yếu tố ảnh hưởng trực tiếp tới việc dự báo phụ tải ngày tới, chi tiết như sau:
33
Hình 3.6: Tham số dùng để dự báo phụ tải ngày tới
Trong đó:
Ngày D+1: để xác định được xem đó có phải ngày nghỉ lễ hay không.
Ngày trong tuần: để xác định xem đây là ngày làm việc, ngày thứ 7 hay Chủ nhật.
Mùa vụ: để xác định các mùa xuân, hạ, thu, đông.
Năm, tháng: có thể xác định các giá trị này từ giá trị của ngày D+1.
Tmin: nhiệt độ thấp nhất trong ngày.
Tmax: nhiệt độ cao nhất trong ngày.
Pmin: công suất thấp nhất trong ngày.
34
- Với chức năng dự báo phụ tải tháng tới, ta có các yếu tố ảnh hưởng trực tiếp đến dự báo phụ tải như sau:
Hình 3.7: Các yếu tố ảnh hưởng đến dự báo phụ tải tháng tới
Trong đó:
M+1: để xác định tháng cần dự báo
Mùa vụ: để xác định các mùa xuân, hạ, thu, đông
Năm: năm của tháng cần dự báo
Tmin: nhiệt độ thấp nhất trong tháng.
Tmax: nhiệt độ cao nhất trong tháng.
Pmin: công suất thấp nhất trong tháng.
Pmax: công suất cao nhất trong tháng.
35
Với mỗi loại dự báo phụ tải, các yếu tố ảnh hưởng đến việc dự báo không giống nhau, do đó chúng tôi xây dựng các mạng nơ ron nhân tạo tương ứng với từng loại dự báo đó. Với mỗi mạng nơ ron, chúng ta cần xác định được các yếu tố sau:
a.Xác định các nơron lớp vào và lớp ra
Mỗi nơron của lớp vào tương ứng với một thuộc tính của dữ liệu. Như vậy: - Dự báo giờ tới: có 24 nút ở lớp vào- tương ứng với phụ tải của 24 giờ trước đó. - Dự báo 24h của ngày tới: có 11 nút vào ứng với (giờ, loại giờ, ngày, loại ngày,
tháng, mùa, năm, Tmin, Tmax, Pmin, Pmax).
- Dự báo ngày tới: có 9 nút vào ứng với (ngày, loại ngày, tháng, mùa, năm, Tmin, Tmax, Pmin, Pmax).
- Dự báo tháng tới: có 7 nút vào ứng với (tháng, mùa, năm, Tmin, Tmax, Pmin, Pmax).
Trong trường hợp dữ liệu thu thập không đầy đủ, bị thiếu đối với 1 hay 2 thuộc tính - trường hợp này hay gặp trong thực tế, ta cần loại bỏ bớt đầu vào của mạng ứng với thuộc tính đó để đảm bảo mạng học được đầy đủ từ tập học.
Lớp ra có 1 nút ứng với phụ tải điện các giờ (hay ngày, tháng).
b.Xác định số lớp ẩn
Vì các mạng có hai lớp ẩn có thể thể hiện các hàm với hình dạng bất kỳ, nên, về lý thuyết, không có lý do nào sử dụng các mạng có nhiều hơn hai lớp ẩn. Người ta đã xác định rằng đối với phần lớn các bài toán cụ thể, chỉ cần sử dụng một lớp ẩn cho mạng là đủ. Các bài toán sử dụng hai lớp ẩn hiếm khi xảy ra trong thực tế. Thậm chí đối với các bài toán cần sử dụng nhiều hơn một lớp ẩn thì trong phần lớn các trường hợp trong thực tế, sử dụng chỉ một lớp ẩn cho ta hiệu năng tốt hơn là sử dụng nhiều hơn một lớp.
Việc huấn luyện mạng thường rất chậm khi mà số lớp ẩn sử dụng càng nhiều. Lý do sau đây giải thích cho việc sử dụng càng ít các lớp ẩn càng tốt là:
- Phần lớn các thuật toán luyện mạng cho các mạng nơron truyền thẳng đều dựa trên phương pháp gradient. Các lớp thêm vào sẽ thêm việc phải lan truyền các lỗi làm cho vector gradient rất không ổn định. Sự thành công của bất kỳ một thuật toán tối ưu theo gradient phụ thuộc vào độ không thay đổi của hướng khi mà các tham số thay đổi.
- Số các cực trị địa phương tăng lên rất lớn khi có nhiều lớp ẩn. Phần lớn các thuật toán tối ưu dựa trên gradient chỉ có thể tìm ra các cực trị địa phương, do vậy chúng có thể không tìm ra cực trị toàn cục. Mặc dù thuật toán luyện mạng có thể tìm ra cực trị toàn cục, nhưng xác suất khá cao là chúng ta sẽ bị tắc trong một cực trị địa phương sau rất nhiều thời gian lặp và khi đó, ta phải bắt đầu lại.
36
Vậy trong bài toán này, ta sẽ sử dụng mạng nơron với 1 lớp ẩn.
c. Số đơn vị trong lớp ẩn
Một vấn đề quan trọng trong việc thiết kế một mạng là cần có bao nhiêu đơn vị trong mỗi lớp ẩn. Sử dụng quá ít đơn vị có thể dẫn đến việc không thể nhận dạng được các tín hiệu đầy đủ trong một tập dữ liệu phức tạp, hay thiếu ăn khớp. Sử dụng quá nhiều đơn vị sẽ tăng thời gian luyện mạng, có lẽ là quá nhiều để luyện khi mà không thể luyện mạng trong một khoảng thời gian hợp lý. Số lượng lớn các đơn vị có thể dẫn đến tình trạng học quá khớp (overfitting), trong trường hợp này mạng có quá nhiều thông tin, hoặc lượng thông tin trong tập dữ liệu mẫu không đủ các dữ liệu đặc trưng để huấn luyện mạng.
Số lượng tốt nhất của các đơn vị ẩn phụ thuộc vào nhiều yếu tố như số đầu vào, đầu ra của mạng, độ nhiễu của dữ liệu đích, độ phức tạp của hàm lỗi, kiến trúc mạng và thuật toán huấn luyện mạng.
Tóm lại số đơn vị trong lớp ẩn là dựa trên kinh nghiệm và thực nghiệm, ta thường lấy nó nằm khoảng giữa kích thước lớp vào và lớp ra (các thông tin thực nghiệm chi tiết được nêu ở mục 3.2.2).
d. Số liên kết
Trong bài toán có đặc thù là các đầu vào tương đối độc lập nhau, do đó tôi chọn giải pháp là với mỗi cặp nơron ở 2 lớp kế tiếp nhau thì luôn có một liên kết và giữa các nơron trong cùng một lớp sẽ không có liên kết.
e. Hàm kích hoạt
Hàm kích hoạt sử dụng ở đây là một trong hai hàm: - Hàm sigmoid:
- Hàm sigmoid lưỡng cực:
Hai hàm này có ưu điểm là dễ lấy đạo hàm và miền giá trị nhỏ([0, 1] và [-1, 1]), nhược điểm là dễ tiến về 1 khi giá trị khá lớn. Nhưng với việc chuẩn hóa dữ liệu và bộ trọng số tương đối nhỏ thì có thể khắc phục được nhược điểm này.
f. Hàm lỗi
37
Còn đánh giá kết quả dự báo của hệ thống dựa trên MAPE (Mean absolute percentage error):
Trong đó:
- p:số thứ tự mẫu trong tập huấn luyện, i:số thứ tự của đơn vị đầu ra.
dpivà ypi:tương ứng là đầu ra mong muốn và đầu ra thực tế của mạng cho đơn vị đầu ra thứ i trên mẫu thứ p
3.3 THU THẬP VÀ XỬ LÝ DỮ LIỆU
3.3.1 Thu thập dữ liệu
Đây là bước rất quan trọng, quyết định đầu vào của hệ thống. Dữ liệu cần thu thập gồm có:
- Số liệu phụ tải theo thời gian (giờ, ngày, tháng, năm). - Dữ liệu về khí hậu trong quá khứ: nhiệt độ (Tmin, Tmax).
- Dữ liệu về khả năng vận hành của các nhà máy điện trong thực tế: Pmin, Pmax. Dữ liệu về nhiệt độ, phụ tải cũng như khả năng vận hành của các tổ máy trên thực tế sẽ được cung cấp đầy đủ. Ta cũng cần có một số đánh giá về nhu cầu về mặt dữ liệu quá khứ của từng loại dự báo - dựa trên yếu tố kinh nghiệm.
- Đối với dự báo giờ tới: ta chỉ cần có bộ dữ liệu của vài tháng gần nhất trở lại đây. Yêu cầu này trên thực tế hoàn toàn đáp ứng được.
- Đối với dự báo cho 24 giờ trong ngày tới:dự báo này là đòi hỏi bộ số liệu khá lớn, đầy đủ, cụ thể là số liệu phụ tải của 24 giờ của tất cả các ngày trong 2, 3 năm gần đây nhất.
- Đối với dự báo ngày tới: dự báo này là đòi hỏi bộ số liệu đầy đủ, cụ thể là số liệu phụ tải của tất cả các ngày trong 2, 3 năm gần đây nhất.
- Đối với dự báo tháng tới: ta cần số liệu phụ tải 12 tháng của 5- 10 năm gần đây nhất.
3.3.2 Tiền xử lý dữ liệu
Mục đích của tiền xử lý dữ liệu là cung cấp một bộ số liệu tin cậy cho hệ thống dự báo. Quá trình này bao gồm một số bước sau:
38
3.3.2.1 Kiểm tra tính hợp lệ của dữ liệu
Bước này nhằm kiểm tra một số ràng buộc cơ bản của dữ liệu và các thuộc tính của dữ liệu. Để thực hiện kiểm tra, ta dựa vào các ràng buộc ở trong bảng dưới đây:
Bảng 3.1: Ràng buộc dữ liệu đầu vào
Thuộc tính Mô tả Ràng buộc
Giờ Các giờ trong ngày. Giá trị nguyên thuộc đoạn [1, 24]. Ngày Ngày trong tháng. Giá trị nguyên, phải hợp lệ đối với
từng tháng. Ví dụ với tháng 1 có 31 ngày thì ngày thuộc đoạn [1, 31]. Tháng Tháng trong năm. Giá trị nguyên thuộc đoạn [1, 12]. Năm Năm. Giá trị nguyên, thường thì khởi điểm
từ 1990. Tmax Nhiệt độ lớn nhất trung
bình ngày (tháng).
Số thực. Với khí hậu ôn đới của Việt Nam thì nhiệt độ này khá cao (10- 40 độ C).
Tmin Nhiệt độ nhỏ nhất nhất trung bình ngày (tháng).
Số thực Tmin ≤ Tmax.
Pmax Khả năng vận hành cao nhất của tất cả các tổ máy. Số thực dương. Pmin Khả năng vận hành thấp nhất của tất cả các tổ máy. Số thực dương. Pmin<Pmax.
Phụ tải Giá trị phụ tải thực tế. Số thực dương, thuộc đoạn [Pmin, Pmax] với phụ tải giờ, thuộc đoạn [24*Pmin, 24*Pmax] với phụ tải ngày.
3.3.2.2 Phân nhóm dữ liệu
Dữ liệu cần được tập trung lại và phân ra theo các vùng: - Miền Bắc.
39
- Miền Trung. - Miền Nam.
3.3.2.3 Chuẩn hóa dữ liệu
Chuẩn hóa dữ liệu nhằm định lượng tất cả các thuộc tính của dữ liệu và đưa các giá trị thuộc tính về một miền được định nghĩa trước.
Các thuộc tính định tính cần được định lượng, đó là:
- Thuộc tính ngày trong tuần: các ngày thứ 2, thứ 3, thứ 4, thứ 5, thứ 6 có ảnh hưởng tới phụ tải điện tương đối bằng nhau nên ta qui định giá trị đầu vào ở các ngày này bằng 1. Thứ 7 và chủ nhật là ngày nghỉ nhưng ở Việt Nam một số lượng lớn cơ quan thì thứ 7 vẫn đi làm (nửa ngày) nên giá trị đầu vào ở ngày thứ 7 là 2 và giá trị đầu vào ở ngày chủ nhật là 3.
- Thuộc tính mùa vụ: có 4 mùa trong năm - mùa xuân, mùa hạ, mùa thu, mùa đông, ta định lượng các mùa này theo thứ tự là 1, 2, 3, 4.
Để chuẩn hóa dữ liệu, trong trường hợp đối với bài toán này, ta áp dụng công thức:
SV = ((TFmax - TFmin) / (MAX_VAL - MIN_VAL)) * (OV- MIN_VAL) Với:
- SV: Giá trị sau khi biến đổi.
- TFmax: giá trị lớn nhất của hàm chuyển. - TFmin: giá trị nhỏ nhất của hàm chuyển. - MAX_VAL: Giá trị lớn nhất của dữ liệu. - MIN_VAL: Giá trị nhỏ nhất của dữ liệu. - OV: Giá trị ban đầu.
3.4 CÀI ĐẶT VÀ THỰC NGHIỆM
3.2.1 Cài đặt
3.2.1.1 Các công cụ trong quá trình xây dựng hệ thống
- Công cụ thiết kế: EA (enterprise architect). - Công cụ lập trình:
o Cơ sở dữ liệu: MS SQL SERVER 2005.
o Lập trình chương trình: C# 2008.
40
Các ngoài các thư viện tham khảo từ Microsoft, trong chương trình mà tôi cài đặt có tham khảo thêm các bộ thư viện sau đây:
- Thư viện C1.Win.C1FlexGrid, C1.Win.C1Chart: hỗ trợ hiển thị dữ liệu trên lưới, vẽ biểu đồ.
3.2.1.3 Cài đặt mạng nơron và giải thuật di truyền * Một số hàm sử dụng trong chương trình:
Các hàm sử dụng với thuật toán lan truyền ngược
- private double ErrorCalculate(ref double[,] arrWeight, double[,]
data, int row, ref StreamWriter sw,ref int Increment_Time): hàm tính
lỗi khi sử dụng giải thuật lan truyền ngược.
- public double[,] Training(): hàm huấn luyện mạng sử dụng giải thuật lan truyền ngược.
- public static double Normalize(double Max, double Min, double Value):
hàm chuẩn hóa giá trị theo hàm kích hoạt.
- public static double UndoNormalize(double Max, double Min, double Value): hàm lấy lại giá trị trước khi chuẩn hóa.
- public static double ActiveFunction(double value): đột biến nút.
- public static double[,] NormalizedDataSet(double[,] data, double[,]
InputLayer, double[,] arrDataBound): chuẩn hóa toàn bộ dữ liệu đầu vào.
- public static double[,] InitWeight(double minWeight, double
maxWeight, int HiddenCount, int InputCount): khởi tạo bộ trọng số ngẫu
nhiên.
- public static List<double> OutputCaculate(double[,] Weight, double[,]
arrDataset, double[,] arrDataBound): thực hiện tính toán đầu ra cho mạng
nơron.
Các hàm sử dụng với giải thuật di truyền
- private List<double[,]> InitPopulation(): hàm khởi tạo quần thể
- private List<double> FitnessCalculate(List<double[,]> ls, double[,]
arrNormalizedData, double[,] arrData, double[,] arrDataBound): hàm
tính toán độ thích nghi của quần thể.
- private List<double[,]> Mutation(List<double[,]> lsPSelection,ref
List<int> lsMark): hàm đột biến.
- private List<double[,]> Crossover(List<double[,]> lsPSelection,ref
List<int> lsMark): hàm lai ghép.
Comment [HNN1]: Chia rõ phần cài đặt ANN và GA
41
- public double[,] TrainingForNextHour(): huấn luyện dự báo phụ tải giờ tới. - public static double ErrorCalculate(ref double[,] arrWeight,
double[,] data, int row, int HiddenCount, int InputCount, int
LearningRate):hàm tính toán độ thích nghi cho cả quần thể.
* Một vài hình ảnh về giao diện chương trình
Hệ thống dự báo phụ tải sau khi phân tích thiết kế đã được cài đặt dưới dạng phần mềm, dưới đây là một số hình ảnh về giao diện chương trình:
Giao diện mô đun thu thập dữ liệu quá khứ
Hình 3.8: Giao diện chức năng nhập dữ liệu quá khứ
42
Hình 3.9: Giao diện chức năng quản lý phương án
Hình 3.10: Giao diện chức năng thêm mới phương án
43
Hình 3.11: Giao diện chức năng dự báo
3.2.2 Thử nghiệm
3.2.2.1 Xác lập tham số
Trong mục này ta sẽ chọn ra tham số mô hình dự báo phù hợp cho bài toán. Tập dữ liệu là phụ tải ngày của hệ thống điện miền Bắc từ 01/01/2009 đến 31/12/2012, được chia thành 2 tập:
- Tập huấn luyện: từ 01/01/2009-31/12/2011. - Tập kiểm thử: từ 01/01/2012-31/12/2012.
i. Thử nghiệm thuật toán lan truyền ngƣợc
Đối với thuật toán lan truyền ngược, đã có nhiều mô hình dự báo phụ tải sử dụng mô hình này và chúng cũng đưa ra các bộ tham số hợp lý cho mô hình. Từ tham khảo các mô hình khác và thử nghiệm một số trường hợp mà tôi xây dựng được bộ tham số khá hợp lý:
- Số nơ ron lớp ẩn: 5. Tham số này tăng thì thời gian huấn luyện cũng tăng. - Hệ số học:0.1.
- Mô men quán tính: γ=0.5. - Ngưỡng sai số: 0.01. - Trọng số khởi tạo: (-3, 3).
Với ngưỡng vòng lặp: 1000, dưới đây là một số trường hợp tôi đã thử nghiệm với các tham số khác nhau:
44