(Luận Án Tiến Sĩ) Chẩn Đoán Dầm Cầu Bằng Phương Pháp Phân Tích Dao Động Trên Mô Hình Số Hoá Kết Cấu Được Cập Nhật Sử Dụng Thuật Toán Tối Ưu Hoá Bầy Đàn Kết Hợp Mạng Nơ Ron Nhân Tạo.pdf

151 3 0
(Luận Án Tiến Sĩ) Chẩn Đoán Dầm Cầu Bằng Phương Pháp Phân Tích Dao Động Trên Mô Hình Số Hoá Kết Cấu Được Cập Nhật Sử Dụng Thuật Toán Tối Ưu Hoá Bầy Đàn Kết Hợp Mạng Nơ Ron Nhân Tạo.pdf

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC GIAO THÔNG VẬN TẢI  HỒ KHẮC HẠNH CHẨN ĐOÁN DẦM CẦU BẰNG PHƯƠNG PHÁP PHÂN TÍCH DAO ĐỘNG TRÊN MÔ HÌNH SỐ HOÁ KẾT CẤU ĐƯỢC CẬP NHẬT SỬ DỤNG THUẬT TOÁN TỐI ƯU HOÁ[.]

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC GIAO THÔNG VẬN TẢI - - HỒ KHẮC HẠNH CHẨN ĐOÁN DẦM CẦU BẰNG PHƯƠNG PHÁP PHÂN TÍCH DAO ĐỘNG TRÊN MƠ HÌNH SỐ HỐ KẾT CẤU ĐƯỢC CẬP NHẬT SỬ DỤNG THUẬT TOÁN TỐI ƯU HOÁ BẦY ĐÀN KẾT HỢP MẠNG NƠ RON NHÂN TẠO LUẬN ÁN TIẾN SĨ KỸ THUẬT HÀ NỘI – 2021 BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC GIAO THÔNG VẬN TẢI - - HỒ KHẮC HẠNH CHẨN ĐỐN DẦM CẦU BẰNG PHƯƠNG PHÁP PHÂN TÍCH DAO ĐỘNG TRÊN MƠ HÌNH SỐ HỐ KẾT CẤU ĐƯỢC CẬP NHẬT SỬ DỤNG THUẬT TOÁN TỐI ƯU HOÁ BẦY ĐÀN KẾT HỢP MẠNG NƠ RON NHÂN TẠO Chuyên ngành : Kỹ thuật Xây dựng Cầu - Hầm Mã số : 9580205 LUẬN ÁN TIẾN SĨ KỸ THUẬT NGƯỜI HƯỚNG DẪN KHOA HỌC: PGS.TS Bùi Tiến Thành PGS.TS Ngô Văn Minh HÀ NỘI – 2021 LỜI CAM ĐOAN Tơi xin cam đoan cơng trình nghiên cứu khoa học độc lập riêng Các số liệu sử dụng phân tích luận án có nguồn gốc rõ ràng, công bố theo quy định Các kết nghiên cứu luận án tự tìm hiểu, phân tích cách trung thực Việc tham khảo nguồn tài liệu thực trích dẫn ghi nguồn tài liệu tham khảo quy định Hà Nội, ngày 30 tháng 10 năm 2021 Tác giả Hồ Khắc Hạnh MỤC LỤC MỞ ĐẦU 1 Đặt vấn đề nghiên cứu Mục tiêu nghiên cứu Phương pháp nghiên cứu Đối tượng phạm vi nghiên cứu 5 Ý nghĩa khoa học thực tiễn Nội dung luận án CHƯƠNG 1: TỔNG QUAN VỀ GIÁM SÁT SỨC KHỎE KẾT CẤU CƠNG TRÌNH DỰA TRÊN PHƯƠNG PHÁP ĐO NHẬN DẠNG DAO ĐỘNG 1.1 Tổng quan giám sát sức khỏe kết cấu công trình dựa vào kết đo đặc trưng dao động 1.2 Tình hình nghiên cứu giới giám sát sức khỏe kết cấu cơng trình dựa phương pháp đo nhận dạng dao động 11 1.3 Tình hình nghiên cứu Việt Nam giám sát sức khỏe kết cấu cơng trình dựa phương pháp đo nhận dạng dao động 16 Kết luận Chương 18 CHƯƠNG 2: NGHIÊN CỨU VÀ ĐỀ XUẤT PHƯƠNG PHÁP CHẨN ĐOÁN HƯ HỎNG KẾT CẤU BẰNG PHƯƠNG PHÁP ĐO DAO ĐỘNG NGẪU NHIÊN 19 2.1 Cơ sở lý thuyết dao động kết cấu 19 2.2 Các phương pháp chẩn đoán hư hỏng kết cấu dựa dao động 23 2.2.1 Phương pháp dựa thay đổi tần số dao động riêng 23 2.2.2 Phương pháp dựa vào thay đổi hình dạng dao động 25 2.2.3 Phương pháp dựa hàm đáp ứng tần số .34 2.3 Chẩn đoán hư hỏng kết cấu dựa kết đo nhận dạng dao động sử dụng thuật toán bầy đàn PSO 37 2.4 Chẩn đoán hư hỏng kết cấu dựa kết đo nhận dạng dao động sử dụng mạng nơ ron nhân tạo 40 2.5 Chẩn đoán hư hỏng kết cấu dựa kết đo nhận dạng dao động sử dụng thuật toán kết hợp PSO-ANN 44 Kết luận Chương 52 CHƯƠNG 3: ÁP DỤNG PSO KẾT HỢP VỚI ANN ĐỂ CHẨN ĐOÁN CÁC HƯ HỎNG CHO MƠ HÌNH SỐ .53 3.1 Cầu dầm giản đơn 53 3.1.1 Trường hợp hư hỏng phần tử 56 3.1.2 Trường hợp hư hỏng nhiều phần tử .59 3.2 Tấm composite 61 3.2.1 Trường hợp hư hỏng phần tử 64 3.2.2 Trường hợp hư hỏng nhiều phần tử .66 3.3 Cầu dàn thép liên tục 68 3.3.1 Trường hợp hư hỏng phần tử 73 3.3.2 Trường hợp hư hỏng nhiều phần tử .75 Kết luận Chương 77 CHƯƠNG 4: ÁP DỤNG PSO KẾT HỢP VỚI ANN ĐỂ CHẨN ĐỐN CÁC HƯ HỎNG TRÊN MƠ HÌNH THỰC NGHIỆM 79 4.1 Dầm giản đơn phịng thí nghiệm 79 4.1.1 Mơ hình tốn .79 4.1.2 Mơ hình thực nghiệm 80 4.1.3 Phân tích, so sánh kết thu từ lý thuyết thực nghiệm 83 4.2 Cầu Bến Quan 88 4.2.1 Giới thiệu cầu Bến Quan 88 4.2.2 Mơ hình thí nghiệm 89 4.2.3 Mơ hình phần tử hữu hạn 91 4.2.4 Cập nhật mơ hình xác định hư hỏng kết cấu .92 Kết luận Chương 96 KẾT LUẬN VÀ KIẾN NGHỊ .97 DANH MỤC HÌNH VẼ Hình 1.1 Cầu Tsing Ma lắp đặt 600 đầu đo phục vụ cho việc giám sát sức khỏe kết cấu cơng trình 10 Hình 2.1 Sơ đồ thuật tốn tối ưu hố bầy đàn – PSO 39 Hình 2.2 Kiến trúc mạng ANN 40 Hình 2.3 Sơ đồ thuật tốn ANN 43 Hình 2.4 Quá trình xác định giải pháp tối ưu dựa phương pháp GD ANN (a) mạng với điểm tối ưu toàn cục, (b) mạng với tối ưu toàn cục cục 45 Hình 2.5 Mạng với nhiều tối ưu cục 46 Hình 2.6 Áp dụng PSO để khắc phục vấn đề tối ưu cục ANN 47 Hình 2.7 Sơ đồ thuật toán PSO kết hợp song song với ANN 51 Hình 3.1 Bố trí chung cầu 53 Hình 3.2 Mặt cắt ngang cầu 54 Hình 3.3 Kiến trúc mạng nơ ron cho toán xác định hư hỏng dầm giản đơn 55 Hình 3.4 Giá trị hồi quy (a) ANN (b) ANN kết hợp với PSO 57 Hình 3.5 Sai số phân bố (a) ANN (b) ANN kết hợp với PSO 57 Hình 3.6 Sai số thực (a) ANN (b) ANN kết hợp với PSO 58 Hình 3.7 Kết phát hư hỏng PSO, ANN ANNPSO phần tử số 3: (a) 7% hư hỏng; (b) 70% hư hỏng 59 Hình 3.8 Giá trị hồi quy (a) ANN (b) ANN kết hợp với PSO 60 Hình 3.9 Sai số phân bố (a) ANN (b) ANN kết hợp với PSO 60 Hình 3.10 Sai số thực (a) ANN (b) ANN kết hợp với PSO 60 Hình 3.11 Kết phát hư hỏng PSO, ANN ANNPSO dầm: 20% hư hỏng phần tử – 60% hư hỏng phần tử 61 Hình 3.12 (a) Tấm composite lớp ; (b) Mơ hình phần tử hữu hạn 62 Hình 3.13 Hình dạng dao động 15 mode 63 Hình 3.14 Kiến trúc mạng dùng để phát hư hỏng phần tử composite .64 Hình 3.15 Giá trị hồi quy (a) ANN (b) ANN kết hợp với PSO .64 Hình 3.16 Sai số thực (a) ANN (b) ANN kết hợp với PSO 65 Hình 3.17 Kết phát hư hỏng PSO, ANN ANNPSO phần tử số 9: .66 Hình 3.18 Giá trị hồi quy (a) ANN (b) ANN kết hợp với PSO .67 Hình 3.19 Sai số thực (a) ANN (b) ANN kết hợp với PSO 67 Hình 3.20 Kết phát hư hỏng PSO, ANN ANNPSO dầm: 50% hư hỏng phần tử 70% hư hỏng phần tử 68 Hình 3.21 Cầu Bến Thủy; (a) Kết cấu nhịp; (b) Mặt cắt ngang cầu 69 Hình 3.22 Mơ hình phần tử hữu hạn cầu Bến Thủy .70 Hình 3.23 Hình dạng dao động số mode tính tốn 72 Hình 3.24 Kiến trúc mạng dùng để phát hư hỏng 72 Hình 3.25 Giá trị hồi quy (a) ANN (b) ANN kết hợp với PSO 73 Hình 3.26 Sai số phân bố (a) ANN (b) ANN kết hợp với PSO .73 Hình 3.27 Sai số thực (a) ANN (b) ANN kết hợp với PSO 74 Hình 3.28 Kết phát hư hỏng PSO, ANN ANNPSO phần tử số 4: (a) 7% hư hỏng; (b) 80% hư hỏng 75 Hình 3.29 Giá trị hồi quy (a) ANN (b) ANN kết hợp với PSO .75 Hình 3.30 Sai số phân bố (a) ANN (b) ANN kết hợp với PSO .76 Hình 3.31 Sai số thực (a) ANN (b) ANN kết hợp với PSO 76 Hình 3.32 Kết phát hư hỏng PSO, ANN ANNPSO dầm: 20% hư hỏng phần tử 80% hư hỏng phần tử 77 Hình 4.1 Dầm giản đơn với điều kiện biên tự 79 Hình 4.2 Mơ hình dầm thép chia thành 21 phần tử 80 Hình 4.3 Thí nghiệm dầm thép [143] 81 Hình 4.4 Sơ đồ biểu diễn vị trí hư hỏng tạo .81 Hình 4.5 Tần số dao động riêng thí nghiệm dầm thép: 83 Hình 4.6 Kiến trúc mạng nơ ron 84 Hình 4.7 Giá trị hồi quy (a) ANN (b) ANN kết hợp với PSO 85 Hình 4.8.Sai số thực (a) ANN (b) ANN kết hợp với PSO .85 Hình 4.9 Sai số phân bố (a) ANN (b) ANN kết hợp với PSO 86 Hình 4.10 Kết phát hư hỏng PSO, ANN ANNPSO 87 Hình 4.11 Cầu Bến Quan 88 Hình 4.12 Bố trí chung cầu Bến Quan 88 Hình 4.13 Mặt cắt ngang cầu Bến Quan .89 Hình 4.14 Đo đạc trường (a) công tác chuẩn bị; (b) Thu thập liệu 89 Hình 4.15 Tạo hư hỏng mặt cầu (a) phá hủy mặt cầu (b) thu thập tín hiệu sau phá hủy mặt cầu 90 Hình 4.16 Bố trí điểm đo mặt cắt ngang .90 Hình 4.17 Mặt lưới điểm đo mặt cầu 91 Hình 4.18 Mơ hình cầu Bến Quan 91 Hình 4.19 Kiến trúc mạng nơ ron 93 Hình 4.20 Giá trị hồi quy (a) ANN (b) ANN kết hợp với PSO .94 Hình 4.21 Sai số thực (a) ANN (b) ANN kết hợp với PSO 94 Hình 4.22 Sai số phân bố (a) ANN (b) ANN kết hợp với PSO .95 Hình 4.23 Kết phát hư hỏng PSO, ANN ANNPSO 96 DANH MỤC BẢNG BIỂU Bảng 3.1 Đặc trưng vật liệu dầm chủ 53 Bảng 3.2 Tần số dao động riêng mười mode 54 Bảng 3.3 Các số đánh giá hiệu suất thuật toán - Kịch hư hỏng đơn 58 Bảng 3.4 Các số đánh giá hiệu thuật toán - Kịch hư hỏng nhiều phần tử cho dầm xem xét 61 Bảng 3.5 Thông số vật liệu Composite 62 Bảng 3.6 Tần số dao động riêng 15 mode 62 Bảng 3.7 Các số đánh giá hiệu thuật toán - Kịch hư hỏng phần tử 65 Bảng 3.8 Các số đánh giá hiệu thuật toán - Kịch hư hỏng hai phần tử 67 Bảng 3.9 Mặt cắt ngang dàn 69 Bảng 3.10 Tần số dao động riêng 15 mode 70 Bảng 3.11 Các số đánh giá hiệu thuật toán - Kịch hư hỏng phần tử 74 Bảng 3.12 Các số đánh giá hiệu thuật toán - Kịch hư hỏng hai phần tử 76 Bảng 4.1 Đặc trưng vật liệu dầm thép 79 Bảng 4.2 Tần số dao động riêng tính tốn mode .80 Bảng 4.3 Tần số dao động riêng mode 83 Bảng 4.4 Tần số dao động riêng mode 83 Bảng 4.5 Các số đánh giá hiệu suất thuật toán 86 Bảng 4.6 Đặc trưng vật liệu dầm chủ 89 Bảng 4.7 Tần số dao động mode dao động 91 Bảng 4.8 Tần số dao động mode dao động 92 Bảng 4.9 Tần số dao động riêng mode 92 Bảng 4.10 Các số đánh giá hiệu suất thuật toán 95 DANH MỤC CHỮ VIẾT TẮT Tiếng Việt NCS Nghiên cứu sinh Tiếng Anh ABC Artificial Bee Colony – Thuật toán bầy ong AC Ant Colony – Thuật toán đàn kiến ANN Artificial Neural Network (mạng nơ ron nhân tạo) AI Artificial Intelligence (Trí tuệ nhân tạo) BP Backpropagation - Thuật toán truyền ngược COMAC Co-Ordinate Modal Assurance Criterion (Tiêu chí đảm bảo hình dạng dạo động phối hợp) CS Cuckoo Search - Thuật tốn tìm kiếm chim Cúc cu DOF Degree-of-freedom (Bậc tự do) GA Genetic Algorithm - Thuật toán di truyền GD Gradient Descent - độ dốc xuống FFT Fast Fourier Transform (Chuyển đổi Fourier) FHWA Federal Highway Administration (Cục quản lý đường cao tốc liên bang) FRF Fast Response Transform (Chuyển đổi phản ứng nhanh) HS Thuật tốn tìm kiếm hài hịa LM Thuật tốn Levenberg-Marquest MAC Modal Assurance Criterion (Tiêu chí đảm bảo hình dạng dạo động) ML Machine learning - phương pháp học máy MSE Mean Square Error - sai số bình phương trung bình PSO Particle Swarm Optimization - Thuật tốn tối ưu hóa bầy đàn SHM Structural Health Monitoring – giám sát sức khỏe kết cấu WT Wavelet Transform (Chuyển đổi sóng Wavelet) 14 K_T(:,:,2)=KT(:,:,2)-KT(:,:,1); else k_t(:,:,tj)=kt_e(:,:,tj)-kt_e(:,:,tj-1); m_t(:,:,tj)=mt_e(:,:,tj)-mt_e(:,:,tj-1); k_d(:,:,tj)=kt_d(:,:,tj)-kt_d(:,:,tj-1); K_T(:,:,tj)=KT(:,:,tj)-KT(:,:,tj-1); end end [V,D] = eig(K,M); % V is to calculate mode shape, D is to calculate natural frequency % eigenproblem: free vibrations numberOfModes=15; % Liew, p-Ritz D0=e2*h^3/12/(1-miu12*miu21); D = diag(sqrt(D)*L*L/pi/pi*sqrt(rho*h/D0)); [D,iid] = sort(D); ii = iid(1:numberOfModes); V_ef = V(:,iid); VV = V(:,ii); activeDofW=setdiff((1:numberNodes)',fixedNodeW); NNN=size(activeDofW); %NNN is the number of DOF VVV(1:numberNodes,1:numberOfModes)=0; for i=1:numberOfModes VVV(activeDofW,i)=VV(1:NNN,i); end %% drawingEigenmodes3d(numberNodes,numberOfModes,NNN, numberElementsX,numberElementsY, zz=zeros(1,numberElements); for i=1:numberElements zz(i)=norm(K_eu(:,:,i)-K_ed(:,:,i)); end [V_D,D_D] = eig(Kd,M); % eigenproblem: free vibrations numberOfModes=15; 15 % Liew, p-Ritz D0=e2*h^3/12/(1-miu12*miu21); D_d = diag(sqrt(D_D)*L*L/pi/pi*sqrt(rho*h/D0)); [D_d,ii1] = sort(D_d); ii = ii1(1:numberOfModes); %sort the elements of A in ascending order V_Dd=V_D(:,ii1); VV = V(:,ii); activeDofW=setdiff((1:numberNodes)',fixedNodeW); NNN=size(activeDofW); VVV(1:numberNodes,1:12)=0; for i=1:numberOfModes VVV(activeDofW,i)=VV(1:NNN,i); end Frequency_Healthy=D(1:15) aaaa=Frequency_Healthy' Frequency_Damaged=D_d(1:15); ✓ Cầu giàn thép liên tục (Cầu Bến Thủy) clc;clear;close all Code=1; Node=Node _Sources_beam_BenThuy(Code); Nodes(:,2:end) = Nodes(:,2:end)./100; % Check the node coordinates as follows: figure; plotnodes(Nodes,'numbering','off'); % Element types -> {EltTypID EltName} Types= {1 'beam' 'truss';}; % Dac trung mat cat A1 = 0.0138 ; Iz1 = 0.056290253 ; Iy1 = 0.282335199 ; % V1a - M? th??ng A2 = 0.0138 ; Iz2 = 0.056290253 ; Iy2 = 0.282335199 ; % V2- Thanh ??ng ??u nh?p A3 = 0.0098 ; Iz3 = 0.042128938 ; Iy3 = 0.312185856 ; % V3- Thanh ??ng gi?a nh?p A4 = 0.018 ; Iz4 = 0.918132592 ; Iy4 = 8.47690707 ; % V4- Thanh xiên ??u nh?p A5 = 0.0138 ; Iz5 = 0.056290253 ; Iy5 = 0.282335199 ; % V4a- Thanh xiên gi?a nh?p A6 = 0.0044 ; Iz6 = 0.016765098 ; Iy6 = 0.334116109 ; % Gi?ng ngang 16 A7 = 0.0056 ; Iz7 = 0.021765094 ; Iy7 = 0.467769366 ; % H? gi?ng % Sections=[SecID A ky kz Ixx Iyy Izz yt yb zt zb] Sections=[ A1 Inf Inf Iz1 Iy1 0 0 A2 Inf Inf Iz2 Iy2 0 0 A3 Inf Inf Iz3 Iy3 0 0 A4 Inf Inf Iz4 Iy4 0 0 A5 Inf Inf Iz5 Iy5 0 0 A6 Inf Inf Iz6 Iy6 0 0 A7 Inf Inf Iz7 Iy7 0 0]; Elements= Elements_Sources_beam_BenThuy(Code); % Materials=[MatID E nu]; E = 2.05e11; %Elastic Modul 2.05*10^11 N/m2 v =0.3; % Poisson 0.3 p = 7850; % Density 7850 kg/m3 Materials= [1 E v p]; % steel % Elements=[EltID TypID SecID MatID n1 n2 n3] % Check node and element definitions as follows: hold('on'); plotelem(Nodes,Elements,Types,'Numbering','off'); title('Nodes and elements'); % Degrees of freedom % Assemble a column matrix containing all DOFs at which stiffness is % present in the model: DOF=getdof(Elements,Types); seldof=[ [101;301 108;109;308;309 120;320 132;332 143;144;343;344 151]+0.03 [101;301 151]+0.01 17 [101;301 108;109;308;309 120;320 132;332 143;144;343;344 151]+0.02]; DOF=removedof(DOF,seldof); % Assembly of stiffness matrix K [K,M]=asmkm(Nodes,Elements,Types,Sections,Materials,DOF); % bvib manual nMode=20; [phi,omega]=eigfem(K,M,nMode); % Display eigenfrequenties disp('Lowest eigenfrequencies [Hz]'); a=omega/2/pi; idx=(1:15); % Display eigenfrequenties % disp('Lowest eigenfrequencies [Hz]'); Show_animate = 0; for show_01 = 1:10 if Show_animate == % Disp Max figure; plotdisp(Nodes,Elements,Types,DOF,phi(:,show_01),'DispMax','off') title(['Eigenmode', num2str(show_01), '**** Frequency: ' , num2str(a(show_01))]) elseif Show_animate == % Animate eigenmodes figure; animdisp(Nodes,Elements,Types,DOF,phi(:,show_01)) title(['Eigenmode', num2str(show_01)]) elseif Show_animate == close all continue 18 end end figure; subplot(2,2,1),plotdisp(Nodes,Elements,Types,DOF,phi(:,1),'DispMax','off'); subplot(2,2,2),plotdisp(Nodes,Elements,Types,DOF,phi(:,2),'DispMax','off'); subplot(2,2,3),plotdisp(Nodes,Elements,Types,DOF,phi(:,3),'DispMax','off'); subplot(2,2,4),plotdisp(Nodes,Elements,Types,DOF,phi(:,4),'DispMax','off'); % Animate eigenmodes figure; animdisp(Nodes,Elements,Types,DOF,phi(:,1)) title('Eigenmode 1') for i = 1:nMode fre_FEM=a(i); disp(['Mode ',num2str(i),' - Frequency: ', num2str(a(i))]) end ✓ ANN clc; clear; close all; rng default tic %% % filename = 'ANN_Benthuy_04'; filename = 'Case2_Benthuy.xlsx'; sheetname1 = 'Sheet1'; sheetname2 = 'Sheet2'; input = xlsread(filename,sheetname1,'A1:Z10000'); %call datas from sheetname1 target = xlsread(filename,sheetname2,'A1:Z10000'); %call datas from sheetname2 inputs=input'; targets=target'; % x=inputs; x = awgn(inputs,90,'measured'); t = targets; 19 trainFcn = 'trainlm'; % Levenberg-Marquardt backpropagation % Create a Fitting Network hiddenLayerSize = 10; net = fitnet(hiddenLayerSize,trainFcn); net=feedforwardnet(hiddenLayerSize,trainFcn); net.divideParam.trainRatio =70/100; net.divideParam.valRatio = 15/100; net.divideParam.testRatio = 15/100; net.trainParam.epochs = 1000; [net] = train(net,x,t) y = net(x); performance = perform(net,t,y) %% nntraintool('plot','plotregression'); set(findall(gcf,'-property','FontSize'),'FontSize',10); for i1 = 1:4 subplot(2,2,i1) grid on end nntraintool('plot','plotperform'); set(findall(gcf,'-property','FontSize'),'FontSize',10); grid on; nntraintool('plot','plottrainstate'); set(findall(gcf,'-property','FontSize'),'FontSize',10); grid on; nntraintool('plot','ploterrhist'); set(findall(gcf,'-property','FontSize'),'FontSize',10); grid on; timeElapsed = toc 20 Giao diện ANN truyền thống tảng chương trình MATLAB ✓ ANNPSO %% Empty space clc clear rng default tic; %% Read data % Read the input file filename = 'Case2_Benthuy.xlsx'; sheet_input = 'Sheet1'; sheet_output = 'Sheet2'; input = xlsread(filename,sheet_input,'A1:Z10000'); target = xlsread(filename,sheet_output,'A1:Z10000'); inputs = awgn(input',100,'measured'); % inputs=input'; targets=target'; % Select number neuron of input, output and hidden layer 21 number_input=length(inputs(:,1)); number_output=length(targets(:,1)); number_hidden=100; %% STEP 1: TRAIN DATA WITH ANN % Chose your train function in ANN trainFcn = 'trainlm'; net = feedforwardnet(number_hidden,trainFcn); net = configure(net,inputs,targets); net = fitnet(number_hidden,trainFcn); % Close train window net.trainParam.showWindow = 0; % Setup Division of Data for Training, Validation, Testing net.divideParam.trainRatio = 70/100; net.divideParam.valRatio = 15/100; net.divideParam.testRatio = 15/100; % Train [net] = train(net,inputs,targets) % error NMSE PSO optimized NN outputs=net(inputs); error_1=outputs - targets; err_1st = mean(error_1.^2)/mean(var(targets',1));%.^ means square %% x=inputs; t = targets; y = net(x); perf = perform(net,t,y) %% % mean is used to calculate mean values For example A= [1 4] % mean (A)=(1+2+3+4)/4; %var returns the variance of the elements of A along the first array %dimension; see equation of var on Mathwork err_1st=norm(err_1st) disp (['the differen between output and target is: ' num2str(err_1st)]) 22 % get the normal NN weights and bias weight_bias = getwb(net); % setting up parameters parameters.MaxIt = 50; parameters.nPop = 100; parameters.Lower_Boundary = min(weight_bias); parameters.Upper_Boundary = max(weight_bias); % parameters.Lower_Boundary = -1.5; % parameters.Upper_Boundary = 1.5; parameters.c1 = 2; parameters.c2 = 2; parameters.w = 1; parameters.w_damp = 0.99; parameters.nn=err_1st; % Max epoch max_epoch = 1000; for epoch = : max_epoch % numWeightElements(nWE) nWE=number_hidden*number_input+number_output*number_hidden+number_hidden+number_outp ut; %% STEP 2: TRAIN WITH PSO % disp('STEP 2: TRAIN WITH PSO') [FinalCost,FinalPosition,BestCosts] = PSO (parameters,weight_bias,nWE, number_hidden,number_input,number_output,net,inputs,targets); xo = FinalPosition(1,:); xbest = xo; ybest = FinalCost; %% STEP 3: TRAIN NN SECOND TIME disp('STEP 3: TRAIN NN SECOND TIME') % Setup Division of Data for Training, Validation, Testing net_2nd.divideParam.trainRatio = 70/100; net_2nd.divideParam.valRatio = 15/100; net_2nd.divideParam.testRatio = 15/100; % Chose your train function in ANN 23 trainFcn_2nd = 'trainlm'; net_2nd=feedforwardnet(number_hidden,trainFcn_2nd); net_2nd=configure(net_2nd,inputs,targets); [a, b]=min(ybest); xo=xbest(b,:); k=0; % Setup global best for weight and bias in neural network % inputlayers*hiddenlayers xi=zeros(number_hidden,number_input); for i=1:number_hidden for j=1:number_input k=k+1; xi(i,j)=xo(k); end end % outputlayers*hiddenlayers xl=zeros(number_output,number_hidden); for i=1:number_hidden for j=1:number_output k=k+1; xl(j,i)=xo(k); end end % hiddenlayers xb1=zeros(number_hidden,1); for i=1:number_hidden k=k+1; xb1(i,1)=xo(k); end % outputlayers xb2=zeros(number_output,1); for i=1:number_output k=k+1; 24 xb2(i,1)=xo(k); end % Chose your train function in ANN trainFcn = 'trainlm'; net_2nd = feedforwardnet(number_hidden,trainFcn); net_2nd = configure(net,inputs,targets); net_2nd = fitnet(number_hidden,trainFcn); % Close train window net_2nd.trainParam.showWindow = 1; % Train [net_2nd] = train(net_2nd,inputs,targets); outputs_2=net_2nd(inputs); error_2=outputs_2 - targets; err_2nd = mean(error_2.^2)/mean(var(targets',1)) x=inputs; t = targets; y = net_2nd(x); perf3 = perform(net_2nd,t,y) % This line will caculate for outputs err_2nd=norm(err_2nd); disp (['the differen between output and target is: ' num2str(err_2nd)]) disp (['Epoch - ' num2str(epoch)]) if err_2nd < err_1st disp ('complete model') break %Terminate execution of for or while loop else weight_bias = getwb(net_2nd); end end disp('Complete Final model net_f') toc; %% Test disp('Testing out put ') 25 % Test for all value in used data Test_ouputs1=net_2nd(inputs); Test_ouputs1 = [Test_ouputs1; targets]; nntraintool('plot','plotregression') set(findall(gcf,'-property','FontSize'),'FontSize',10) for i1 = 1:4 subplot(2,2,i1) grid on end nntraintool('plot','plotperform') set(findall(gcf,'-property','FontSize'),'FontSize',10) grid on; nntraintool('plot','plottrainstate') set(findall(gcf,'-property','FontSize'),'FontSize',10) grid on; nntraintool('plot','ploterrhist') set(findall(gcf,'-property','FontSize'),'FontSize',10) grid on; timeElapsed = toc ✓ Dầm phịng thí nghiệm clear all; % materials E = 1.96E11; poisson = 0.30; % E = 1.82095E11; poisson = 0.30; % matriz C C=E/(1-poisson^2)*[1 poisson 0;poisson 0;0 (1-poisson)/2]; % % load % P = 1e6; rho=7810; thickness=15e-3; % thickness=6e-3; %Mesh generation Lx=800e-3; 26 Ly=50e-3; % Lx=0.6; % hauteur de la section droite de la poutre % Ly=38e-3; % largeur de la section droite de la poutre L=Lx; B=Ly; numberElementsX=101; numberElementsY=1; Nx=numberElementsX; Ny=numberElementsY; numberElements=numberElementsX*numberElementsY; [nodeCoordinates, elementNodes] = MeshRectangular(L,B,Nx,Ny); % rectangularMesh(Lx,Ly,numberElementsX,numberElementsY); xx=nodeCoordinates(:,1); yy=nodeCoordinates(:,2); % drawingMesh(nodeCoordinates,elementNodes,'Q4','k-'); numberNodes=size(xx,1); % GDof: global number of degrees of freedom GDof=2*numberNodes; [stiffness,mass]=formStiffness2D(GDof,numberElements, elementNodes,numberNodes,nodeCoordinates,C,rho,thickness); [Val_prop_Range,Indice] = sort(diag(Val_prop)); % définition de l'ordre des indices Vect_prop_range = Vect_prop(:,Indice); % Matrice ordonnée (Vecteurs propres) K_range=stiffness; M_range=mass; Puls_prop = Val_prop_Range.^(1/2) ;% Pulsation propre (en rad/s) freqHz = Puls_prop/(2*pi) ; % UNITS : Hertz freqHzz=freqHz(4:10,:) ➢ Cầu Bến Quan clc; close all; % bvib manual % Tutorial: static analysis % Units: m, kN 27 % Nodes=[NodID X Y Z] lspan = 12; %dy = 0.0001; %m, distance between nodes at a truss joint b=0; % reference node % Check the node coordinates as follows: figure plotnodes(Nodes); Element types -> {EltTypID EltName} % Sections=[SecID A ky kz Ixx Iyy Izz yt yb zt zb] Sections=[1 A inf inf 0 Izz yt yb b/2 b/2]; % pi*r^2 NaN NaN NaN NaN NaN NaN NaN NaN NaN]; % Materials=[MatID E nu]; E=2E11; Materials= [1 E 0.3 7850] Code=1; % Elements=[EltID(ten phan tu) TypID SecID MatID n1 n2 n3)] Elements=Elements_Sources_beam_Benquan(Code); figure; plotnodes(Nodes,'numbering','off'); hold('on') plotelem(Nodes,Elements,Types,'numbering','on'); DOF=getdof(Elements,Types); seldof = [0.01;0.04 [Edge4]+0.02 [Edge4]+0.03 [Edge4]+0.05 [Edge1;Edge3]+0.05 Edge2+0.03 Edge2+0.05]; DOF=removedof(DOF,seldof); [K,M]=asmkm(Nodes,Elements,Types,Sections,Materials,DOF); % bvib manual % Tutorial: dynamic analysis: eigenvalue problem 28 % Units: m, N % Assembly of M and K % Eigenvalue problem nMode=20; [phi,omega]=eigfem(K,M,nMode); % Display eigenfrequenties % disp('Lowest eigenfrequencies [Hz]'); a=omega/2/pi; idx=[1 4]; figure; plotdisp(Nodes,Elements,Types,DOF,phi(:,1),'DispMax','off') figure; plotdisp(Nodes,Elements,Types,DOF,phi(:,2),'DispMax','off') figure; plotdisp(Nodes,Elements,Types,DOF,phi(:,3),'DispMax','off') figure; plotdisp(Nodes,Elements,Types,DOF,phi(:,4),'DispMax','off') fre_FEM=a(idx)

Ngày đăng: 04/09/2023, 10:27

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan