Các yếu tố ảnh hưởng đến dự báo phụ tải tháng tới

Một phần của tài liệu (LUẬN văn THẠC sĩ) xây dựng công cụ hỗ trợ dự báo, đánh giá nhu cầu phụ tải điện theo vùng (Trang 41 - 48)

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.

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.

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

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:

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.

- 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.

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

- 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ứ

Một phần của tài liệu (LUẬN văn THẠC sĩ) xây dựng công cụ hỗ trợ dự báo, đánh giá nhu cầu phụ tải điện theo vùng (Trang 41 - 48)