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ứ
Hình 3.8: Giao diện chức năng nhập dữ liệu quá khứ
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
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: