2. Tối ƣu hóa sử dụng mạng nơron nhân tạo
3.2. Tạo mạng nơron trong matlab
Chạy chƣơng trình matlab/Vào trong “Command window” gõ dòng lệnh:
“nnstart” nhƣ hình 2.18. Sẽ hiện ra cho chúng ra thanh công cụ để tạo mạng nơ ron. Ở đây ta chọn mạng nơ ron là “Fitting tool”
49
Hình 2.18. Giới thiệu về mạng nơ ron
Sau khi vào môi trƣờng của thanh công cụ network, chọn “Fitting Tool” sau đố nhấn “Next” sẽ suất hiện cửa sổ nhƣ hình 2.18 tiếp theo thực hiện việc nhập ma trận dữ liệu đầu vào và ma trận đích nhƣ sau:
50
Hình 2.19. Chọn dữ liệu input và output cho mạng
Ở vị trí input chúng ta chỉ đƣờng dẫn và chọn file: mydata, sau đó chọn đến đƣờng dẫn và chọn “Finish”nhƣ hình dƣới.
51
Tƣơng tự vị trí output chúng ta chỉ đƣờng dẫn và chọn file: mytarget
2.21. Chọn dữ liệu đầu ra
Tiếp theo chọn Next
Tiếp theo ta chọn tỷ lệ học của mạng nơ ron. Chọn tỉ lệ cho việc traning; testing và (Validation).
52
Tiếp theo ấn Next - Ở bƣớc này ta sẽ nhập số nơ ron ở lớp ẩn là n nơ ron( ví dụ ta nhập 9 nơ ron), và ta sẽ có cấu trúc mạng nơ ron nhƣ hình vẽ.
Hình 2.22. Lựa chọn số nơ ron lớp ẩn
Tiếp theo ấn Next, và training ta bắt đầu quá trình luyện mạng nhƣ hình 2.23
53
Nhấn vào nút “Train” để cho mạng Noron học. Khi học xong ở cột “R” xuất hiện 3 giá trị, nếu 3 giá trị này tiến tới 0 thì mạng noron đƣợc huấn luyện là tốt nhƣ hình2.23. Còn nếu giá trị này mà lớn hơn 2 thì tốt nhất mạng nơron đƣợc học lại cho đến khi đặt đƣợc giá trị tốt nhất. Nút lệnh “Training again” đƣợc dùng nếu muốn cho chƣơng trình học lại, nếu không thì Next qua nhƣ hình 2.24.
Hình2.24. Thực hiện luyện mạng lại
sau đó, nếu muốn xem tất cả các câu lệnh trong quá trình luyện mạng thì click
chọn biểu tƣợng “Simple Script”, nếu kết quả luyện mạng đạt yêu cầu mong muốn thì
có thể chọn biểu tƣợng “Save Results” để lƣu các kết quả và ta chọn những file mà ta
54
Hình 2.25.Lưu kết quả luyện mạng
Hình 2.26. là toàn bộ câu lệnh đã đƣợc sử dụng trong quá trình luyện mạng
55
Chƣơng trình cụ thể nhƣ sau:
% Solve an Input-Output Fitting problem with a Neural Network % Script generated by NFTOOL
% Created Tue Jan 07 14:15:43 ICT 2014 %
% This script assumes these variables are defined: %
% X - input data. (dữ liệu đầu vào) % Z - target data. (dữ liệu đầu ra) inputs = X;
targets = Z;
% Create a Fitting Network
hiddenLayerSize = n; (n - Số nơ ron lớp ẩn) net = fitnet(hiddenLayerSize);
% Choose Input and Output Pre/Post-Processing Functions
% For a list of all processing functions type: help nnprocess net.inputs{1}.processFcns = {'removeconstantrows','mapminmax'}; net.outputs{2}.processFcns = {'removeconstantrows','mapminmax'}; % Setup Division of Data for Training, Validation, Testing
% For a list of all data division functions type: help nndivide net.divideFcn = 'dividerand'; % Divide data randomly
net.divideMode = 'sample'; % Divide up every sample
net.divideParam.trainRatio = 70/100;(tỉ lệ số dữ liệu dùng cho việc Training)
net.divideParam.valRatio = 15/100;(tỉ lệ số dữ liệu dùng cho việc validation)
net.divideParam.testRatio = 15/100;(tỉ lệ số dữ liệu dùng cho việc testing)
% For help on training function 'trainlm' type: help trainlm % For a list of all training functions type: help nntrain net.trainFcn = 'trainlm'; % Levenberg-Marquardt
% Choose a Performance Function
% For a list of all performance functions type: help nnperformance net.performFcn = 'mse'; % Mean squared error
% Choose Plot Functions
% For a list of all plot functions type: help nnplot
net.plotFcns = {'plotperform','plottrainstate','ploterrhist', ... 'plotregression', 'plotfit'};
% Train the Network
[net,tr] = train(net,inputs,targets); % Test the Network
outputs = net(inputs);
errors = gsubtract(targets,outputs);
performance = perform(net,targets,outputs)
% Recalculate Training, Validation and Test Performance trainTargets = targets .* tr.trainMask{1};
valTargets = targets .* tr.valMask{1}; testTargets = targets .* tr.testMask{1};
trainPerformance = perform(net,trainTargets,outputs) valPerformance = perform(net,valTargets,outputs) testPerformance = perform(net,testTargets,outputs) % View the Network
view(net) % Plots
% Uncomment these lines to enable various plots. %figure, plotperform(tr)
%figure, plottrainstate(tr)
%figure, plotfit(net,inputs,targets) %figure, plotregression(targets,outputs) %figure, ploterrhist(errors)
56
Sau đó ta vào cửa số “workspace” để xem nhƣng file ta đa lƣu hình 2.27.
Hình 2.27.Vị trí lưu giữ các file trong quá trình luyện mạng
- Chọn vào file output để xem kết quả luyện mạng, và vào file error để xem sai lệnh giữa đầu y ra của mạng và kết quả hàm z.
Sau khi luyện mạng ta sẽ đƣợc bộ trọng số W và độ dốc b tối ƣu, vào môi trƣờng “command window” đánh dòng lệnh:
save mytrain net
Hàm toán học này có dạng: y = lw21*(tansig(iw11*[v f t]'+b1))+b2; hay dạng tắt là: y = net([v f t ]'); trong đó: lw21 = net.LW{2,1}; iw11 = net.IW{1,1}; b1 = net.b{1}; b2 = net.b{2};
57
Hình 2.28. File lưu hàm toán học thể hiện quan hệ đầu vào và ra
Hình 2.28. Chính là file lƣu hàm toán học diển tả mối quan hệ giữa đầu vào X và đầu ra là các giá trị hàm Z.
4. Kết luận chƣơng 2
Trong chƣơng này tác giả đã nghiên cứu tổng quan về mạng nơ ron nhân tạo đó là một cấu trúc gồm các đơn vị kết nối với nhau. Mỗi đơn vị có những đặc tính nhập, xuất và đƣợc cài đặt một tính toán hay chức năng cục bộ.
Đầu ra của một đơn vị đƣợc xác định bởi các đặc tính nhập, xuất của nó, những mối liên hệ của nó với những đơn vị khác, và đầu vào bên ngoài. Một mạng thƣờng phát triển một chức năng tổng thể thông qua một hay nhiều dạng đào tạo.
Kỹ thuật ANN có tiềm năng trở thành cấu trúc tính toán chiếm ƣu thế.Công nghệ ANN đang hình thành là một lƣợng lớn kiến thức và kỹ thuật thƣờng liên quan với nhau.Nó thay thế cho các giải pháp tính toán truyền thống và đƣa ra một khả năng để tiếp cận nhiều vấn đề hiện tại không giải quyết đƣợc.
58
ANN là lĩnh vực vừa khoa học vừa kỹ thuật, trong đó khoa học đƣợc định nghĩa một cách lỏng lẻo nhƣ là kiến thức có cấu trúc và kỹ thuật là khoa học ứng dụng ANN có một số ƣu điểm nhƣ: Giảm đƣợc công sức và không cẩn nhiều kinh nghiệm trong công việc chuyên môn cần giải quyết. Nó có sẳn tính thích nghi và không cần phải cập nhật lại khi đầu vào thay đổi.Cho phép tổng quan hóa từ những thông tin chi tiết.
Ứng dụng ANN để thể giải các bài toán tối ƣu thì sau khi luyện mạng, mạng sẽ đƣa ra hàm toán học thể hiện mối quan hệ giữa đầu vào và đầu ra (hàm tối ƣu). Sau đó tiến hành tìm giá trị cực đại hoặc cực tiểu của hàm đó.
59
Chƣơng III.
ỨNG DỤNG MẠNG NƠ RON NHÂN TẠO ĐỂ TỐI ƢU HÓA CHẾ ĐỘ CẮT KHI TIỆN THÉP 9XC ĐÃ TÔI BẰNG DAO PCBN