1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Nghiên cứu, cải thiện kỹ thuật mô hình vỉa nứt nẻ liên tục (CFM), áp dụng cho mỏ của việt nam

108 17 0

Đ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

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƢỜNG ĐẠI HỌC CÔNG NGHỆ THANG VĂN ĐẠT NGHIÊN CỨU, CẢI THIỆN KỸ THUẬT MƠ HÌNH VỈA NỨT NẺ LIÊN TỤC (CFM), ÁP DỤNG CHO MỎ CỦA VIỆT NAM LUẬN VĂN THẠC SĨ CƠ HỌC KỸ THUẬT HÀ NỘI, NĂM 2014 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƢỜNG ĐẠI HỌC CÔNG NGHỆ THANG VĂN ĐẠT NGHIÊN CỨU, CẢI THIỆN KỸ THUẬT MƠ HÌNH VỈA NỨT NẺ LIÊN TỤC (CFM), ÁP DỤNG CHO MỎ CỦA VIỆT NAM Ngành Chuyên ngành Mã số : Cơ học kỹ thuật : Cơ học kỹ thuật :60520101 LUẬN VĂN THẠC SĨ CƠ HỌC KỸ THUẬT NGƢỜI HƢỚNG DẪN KHOA HỌC: PGS.TS ĐẶNG THẾ BA HÀ NỘI, NĂM 2014 LỜI CẢM ƠN Lời khóa luận em xin gửi lời cảm ơn đến thầy giáo PGS TS Đặng Thế Ba Thầy giao đề tài tận tình hƣớng dẫn em q trình hồn thành khóa luận Nhân dịp em xin gửi lời cám ơn tời tồn thầy giáo khoa Cơ Học Kỹ Thuật Tự Động Hóa giảng dạy giúp đỡ chúng em suốt q trình học tập khoa Đồng thời, tơi xin cảm ơn gia đình ngƣời thân chia sẻ, giúp đỡ, động viên, tạo điều kiện thuận lợi để tơi hồn thành nhiệm vụ học tập luận văn Hà nội, ngày 10 tháng 10 năm 2014 Học viên Thang Văn Đạt LỜI CAM ĐOAN Tơi xin cam đoan cơng trình nghiên cứu riêng Các kết nêu luận văn trung thực chƣa đƣợc cơng bố cơng trình khác Tác giả luận văn Học viên Thang Văn Đạt MỤC LỤC LỜI CẢM ƠN LỜI CAM ĐOAN DANH SÁCH HÌNH VẼ DANH SÁCH BẢNG MỞ ĐẦU Chƣơng KỸ THUẬT MƠ HÌNH VỈA NỨT NẺ LIÊN TỤC 1.1 Vỉa nứt nẻ tự nhiên 1.1.1 Mơ hình vỉa 1.2 Kỹ thuật mơ hình nứt nẻ liên tục - CFM 1.2.1 Xếp hạng yếu tố ảnh hƣởng tới nứt nẻ 1.2.2 Huấn luyện kiểm tra mơ hình 1.2.3 Mô xây số nứt nẻ hệ lƣới địa chất Chƣơng CÁC CƠNG CỤ TRÍ TUỆ NHÂN TẠO DÙNG TRONG MƠ HÌNH NỨT NẺ LIÊN TỤC – CFM 10 2.1 Logic mờ xếp hạng thông số đầu vào cƣờng độ nứt nẻ 10 2.2 Mạng thần kinh nhân tạo xây dựng cƣờng độ nứt nẻ 17 2.2.1 Cấu trúc mơ hình neuron sinh học 18 2.2.2 Cấu trúc mơ hình neuron nhân tạo 19 2.2.3 Cấu tạo phƣơng thức làm việc mạng neural nhân tạo – ANN .21 2.2.4 Các luật học 23 2.2.4.5 Mạng neural nhân tạo nhiều lớp truyền thằng 25 2.2.6 Thiết kế cấu trúc mạng neural nhân tạo nhiều lớp truyền thẳng 26 2.2.7 Thuật toán lan truyền ngƣợc 28 Chƣơng XÂY DỰNG CHƢƠNG TRÌNH MÁY TÍNH .37 3.1 Modul IMPORTS.F90 38 3.1.1 SUBROUTINE GET_UNIT 38 3.1.2 SUBROUTINE REMOVE_TRAILING_BLANK 38 3.1.3 SUBROUTINE SKIP_COMMENT_AND_NUMBER 39 3.1.4 SUBROUTINE SKIP_COMMENT(STR, GTL) 39 3.1.5 SUBROUTINE READ_SUPPORT_PROPERTIES 39 3.1.6 SUBROUTINE READ_FILE_ECLIPSE 39 3.1.7 SUBROUTINE READ_FILE_CMG 40 3.2 Modul RANKS.F90 41 3.2.21 SUBROUTINE READ_IO_FOR_RANKING .42 3.2.2 SUBROUTINE RANKS 43 3.2.3 SUBROUTINE WRITE_COMMAND_FILE 44 3.2.4 SUBROUTINE RUN_GNUPLOT 45 3.3 Modul NEURALNETWORK.F90 45 3.4 Modul EXPORT.F90 45 Chƣơng ÁP DỤNG THỬ NGHIỆM 47 4.1 Mỏ Teapot Dome 47 4.1.1 Dữ liệu đầu vào 48 KẾT LUẬN 62 DANH MỤC CÁC CƠNG TRÌNH CỦA TÁC GIẢ 64 LIÊN QUAN ĐẾN TÀI LIỆU 64 TÀI LIỆU THAM KHẢO 65 PHỤ LỤC 68 DANH SÁCH HÌNH VẼ   Hình 2.1: Mặt y  a2   x1 2  x2 2 (a), mặt cắt y  f x1(*) , x2   điểm x1(*) (b) 11 Hình 2.2: Mặt cắt       y x1 * , x2 k    (a), hình chiếu điểm mặt cắt (a) lên mặt x1  y (b)  Hình 2.3: Mặt cắt điểm x *   Hình 2.4: Đƣờng cong fuzzy trung bình thu đƣợc thay lần lƣợt x *   Hình2.5: Mặt cắt điểm x k  Hình 2.6: Đƣờng fuzzy trung bình thu đƣợc   xk ,k 1, m  Hình 2.7: Hàm liên thuộc tập mờ lân cận x * Hình 2.8: Ảnh neuron sinh học Hình 2.9: Mơ hình neuron nhân tạo Hình 2.10: Hàm truyền nhị phân Hình 2.11: Hàm truyền phân cực Hình 2.12: Hàm truyền sigmoid Hình 2.13: Mạng thần kinh nhân tạo nhiều lớp truyền thẳng Hình 2.14: Mang thần kinh nhân tạo quy hồi Hình 2.15: Sơ đồ luật học có giám sát Hình 2.16: Sơ đồ luật học không giám sát Hình 2.17: Mạng thần kinh nhân tạo lớp truyền thẳng Hình 2.18: Mạng neural nhân tạo lớp truyền thẳng Hình 3.1: Sơ đồ hoạt động chƣơng trình Hình 3.2: Sơ đồ đọc file định dạng Eclipse Hình 3.3: Sơ đồ đọc file định dạng CMG Hình 3.4: Lƣợc đồ hoạt đột chƣơng trình đọc file Hình 3.5: Lƣợc đồ chƣơng trình RANKS Hình 3.6: Lƣợc đồ hoạt động modul NEURALNETWORK.F90 Hình 4.1: Khoảng cách tới đứt gãy 48 Hình 4.2: Zones 49 Hình 4.3: Góc cắm (Dipangle) 49 Hình 4.4: Phƣơng vị (Dipazimuth) 50 Hình 4.5: Độ cong gauss 50 Hình 4.8: so sánh kết 53 Hình 4.8: Đồ thị tỷ lệ lƣới tƣơng ứng với khoảng nứt nẻ ban đầu 54 Hình 4.9: Đồ thị phân trăm số lƣới tƣơng ứng với khoảng nứt nẻ xây dựng modul “train estimation model” phần mềm Petrel 54 Hình 4.10: Đồ thị phân trăm số ô lƣới tƣơng ứng với khoảng nứt nẻ xây dựng chƣơng trình tự viết 55 Hình 4.11: So sánh kết tập liệu luyện tập, 56 kiểm tra, xác nhận; y cƣờng độ nứt nẻ tính từ ANN, 56 d liệu thực tế 56 Hình 4.13: Độ rỗng mỏ Bạch hổ 59 Hình 4.14: Khoảng cách tới đứt gãy mỏ Bạch Hổ 60 Hình 4.15: Độ thấm theo phƣơng x giếng 61 DANH SÁCH BẢNG Bảng 1.1: Các thông số đầu vào cho mơ hình CFM Bảng 3.1: File vào cho chƣơng trình máy tính 37 Bảng 4.1: Xếp hạng ảnh hƣởng thông số đầu vào 51 Hình 4.6: Sai số tập huấn luyện phần mềm tự viết 52 Hình 4.7: Sai số tập kiểm tra phần mềm tự viết 52 Bảng 4.2: Kết xếp hạng ảnh hƣởng thông số đầu vào độ thấm theo phƣơng x 61 72 CHARACTER(LEN = 50), DIMENSION(NUMBER_GLOBAL_P), INTENT(IN) :: GLOBAL_PROPERTIES REAL(8), ALLOCATABLE :: INPUT(:,:,:,:), & OUTPUT(:,:,:,:) REAL(8), ALLOCATABLE :: BUFF(:,:,:), & MAXI(:), MINI(:), MAXO(:), MINO(:), MAX_T(:), MIN_T(:) INTEGER :: I, J, K, L, M, NS, N INTEGER, ALLOCATABLE :: SAMPLE(:,:), RVEC(:) REAL(8), ALLOCATABLE :: W1(:,:), W2(:,:), W3(:,:), SW1(:,:), SW2(:,:), SW3(:,:), & GA1(:,:), GA2(:,:), GA3(:,:), GR1(:,:), GR2(:,:), GR3(:,:) REAL(8) :: R INTEGER :: NTR_MIN, NTR_MAX, NTE_MIN, NTE_MAX, & NVA_MIN, NVA_MAX CHARACTER(LEN = 200) :: COMMAND INTEGER(KIND = 4) :: STATUS INTEGER(KIND = 4) :: SYSTEM REAL(8), ALLOCATABLE :: X(:), Y(:), Z1(:), Z2(:), Z3(:) REAL(8) :: ERROR1, ERR, ERROR, ERROR2 INTEGER :: ITER FNS = 'NETWORK_STRUCTURE.TXT' FPI = 'PROPERTIES_INPUT_FOR_ANN.TXT' FPO = 'PROPERTIES_OUTPUT_FOR_ANN.TXT' CALL READ_NETWORK_STRUCT(FNS, NHU, EPS, PERCENT) CALL READ_IO_P_FOR_ANN(FPI, FPO, NPI, NPO, NUMBER_GLOBAL_P, GLOBAL_PROPERTIES, PI, PO) ALLOCATE (INPUT(NI, NJ, NK, NPI)) ALLOCATE (OUTPUT(NI, NJ, NK, NPO)) DO I = 1, NUMBER_GLOBAL_P DOJ=1,NPI IF (PI(J) EQ (GLOBAL_PROPERTIES(I))) THEN INPUT(:,:,:, J) = PROPERTIES(:,:,:, I) ELSE END IF END DO DOK=1,NPO IF (PO(K) EQ (GLOBAL_PROPERTIES(I))) THEN OUTPUT(:,:,:, K) = PROPERTIES(:,:,:, I) ELSE END IF END DO END DO M=0 DOK=1,NK DOJ=1,NJ DOI=1,NI DOL=1,NPO IF (OUTPUT(I, J, K, L) EQ - 9999) THEN 73 GOTO 100 END IF END DO DOL=1,NPI IF (INPUT(I, J, K, L) EQ - 9999) THEN GOTO 100 END IF END DO M=M+1 ! WRITE(IWR,*) 'DEM MAU: ',M 100 CONTINUE END DO END DO END DO NS=M ALLOCATE(SAMPLE(3, NS)) M=0 DOK=1,NK DOJ=1,NJ DOI=1,NI DOL=1,NPO IF (OUTPUT(I, J, K, L) EQ - 9999) THEN GOTO 101 END IF END DO DOL=1,NPI IF (INPUT(I, J, K, L) EQ - 9999) THEN GOTO 101 END IF END DO M=M+1 SAMPLE(1, M) = I SAMPLE(2, M) = J SAMPLE(3, M) = K 101 CONTINUE END DO END DO END DO PRINT*, 'TONG SO ', NS ! CHON MAU N=0 CONTINUE CALL RANDOM_NUMBER(R) L = INT(R*(NS))+1 CONTINUE CALL RANDOM_NUMBER(R) M = INT(R*(NS))+1 PRINT*, M, L 74 I = SAMPLE(1,L) J = SAMPLE(2,L) K = SAMPLE(3,L) SAMPLE(1,L) = SAMPLE(1,M) SAMPLE(2,L) = SAMPLE(2,M) SAMPLE(3,L) = SAMPLE(3,M) SAMPLE(1,M) = I SAMPLE(2,M) = J SAMPLE(3,M) = K N=N+1 IF (N.GE.(NS)) GOTO GOTO CONTINUE ALLOCATE (RVEC(NS)) CALL RANDOM_IVEC(1, NS, NS, RVEC) WRITE(IWR, *) 'KHOI TAO TRONG SO' ! KHAI BAO CAC MA TRAN TRONG SO ALLOCATE (W1(NHU, 0:NPI)) ALLOCATE (W2(NHU, 0:NHU)) ALLOCATE (W3(NPO, 0:NHU)) ALLOCATE (SW1(NHU, 0:NPI)) ALLOCATE (SW2(NHU, 0:NHU)) ALLOCATE (SW3(NPO, 0:NHU)) ALLOCATE (GR1(NHU, 0:NPI)) ALLOCATE (GR2(NHU, 0:NHU)) ALLOCATE (GR3(NPO, 0:NHU)) ALLOCATE (GA1(NHU, 0:NPI)) ALLOCATE (GA2(NHU, 0:NHU)) ALLOCATE (GA3(NPO, 0:NHU)) ! KHOI TAO GIA TRI NGAU NHIEN BAN DAU CHO CAC MA TRAN TRONG SO CALL RANDOM_NUMBER(W1) CALL RANDOM_NUMBER(W2) CALL RANDOM_NUMBER(W3) !W1=0.5 !W2=0.5 !W3=0.5 ! DONG BANG DO K=1,NHU DO J=0,NHU IF (J.EQ.0 OR J.EQ.K) THEN ELSE W2(K,J)=0 END IF END DO END DO SW1 = W1 SW2 = W2 75 SW3 = W3 NTR_MIN = NTR_MAX = INT(NS * PERCENT/100) NTE_MIN = NTR_MAX + NTE_MAX = NTR_MAX + INT((NS - NTR_MAX)/2) NVA_MIN = NTE_MAX + NVA_MAX = NS ALLOCATE (X(0:NPI)) ALLOCATE (Z3(NPO)) ALLOCATE (Z1(0:NHU)) ALLOCATE (Z2(0:NHU)) ALLOCATE (Y(NPO)) ALLOCATE(BUFF(NI, NJ, NK)) ALLOCATE(MAXI(NPI)) ALLOCATE(MINI(NPI)) ALLOCATE(MAXO(NPO)) ALLOCATE(MINO(NPO)) ALLOCATE(MAX_T(NPI)) ALLOCATE(MIN_T(NPI)) DOI=1,NPI BUFF(:,:,:) = INPUT(:,:,:, I) MAXI(I) = MAXVAL(BUFF) CALL MINIMUM_MATRIX(NI, NJ, NK, BUFF, MINI(I)) END DO MAX_T = MIN_T = -1 CALL NORMALIZATION(INPUT, NI, NJ, NK, NPI, MAXI, MINI, MAX_T, MIN_T) DEALLOCATE(MAX_T) DEALLOCATE(MIN_T) ALLOCATE(MAX_T(NPO)) ALLOCATE(MIN_T(NPO)) DOI=1,NPO BUFF(:,:,:) = OUTPUT(:,:,:, I) MAXO(I) = MAXVAL(BUFF) CALL MINIMUM_MATRIX(NI, NJ, NK, BUFF, MINO(I)) END DO PRINT *, 'MAX ', MAXO(1) MAX_T = MIN_T = CALL NORMALIZATION(OUTPUT, NI, NJ, NK, NPO, MAXO, MINO, MAX_T, MIN_T) ITER = ERROR1 = 10 GA1 = 0.5 GA2 = GA1 GA3 = GA2 GR1=0 76 GR2 = GR1 GR3 = GR2 OPEN (UNIT = 20, FILE = 'ERROR.TXT') OPEN (UNIT = 22, FILE = 'VALIDATION.TXT') 500 X(0) = -1 ERROR2 = DO I = NTE_MIN, NTE_MAX DOJ=1,NPI X(J) = INPUT(SAMPLE(1, RVEC(I)), SAMPLE(2, RVEC(I)), SAMPLE(3, RVEC(I)), J) END DO DOJ=1,NPO Y(J) = OUTPUT(SAMPLE(1, RVEC(I)), SAMPLE(2, RVEC(I)), SAMPLE(3, RVEC(I)), J) END DO CALL FORWARD(NPI, NPO, NHU, W1, W2, W3, X, Z1, Z2, Z3) CALL EFUNCTION(Z3, Y, ERR) ERROR2 = ERROR2 + ERR END DO ERROR2 = ERROR2 /(NTE_MAX - NTE_MIN) WRITE(IWR,*) 'TESTING ', ERROR2 IF ((ERROR2 GE EPS).AND.(ERROR2.LE.ERROR1)) THEN ITER = ITER + ERROR1 = ERROR2 ERROR = DO I = NTR_MIN, NTR_MAX X(0) = -1 DOJ=1,NPI X(J) = INPUT(SAMPLE(1, RVEC(I)), SAMPLE(2, RVEC(I)), SAMPLE(3, RVEC(I)), J) END DO DOJ=1,NPO Y(J) = OUTPUT(SAMPLE(1, RVEC(I)), SAMPLE(2, RVEC(I)), SAMPLE(3, RVEC(I)), J) END DO SW1 = W1 SW2 = W2 SW3 = W3 CALL FORWARD(NPI, NPO, NHU, W1, W2, W3, X, Z1, Z2, Z3) CALL BACKWARD_RPROPAGATION(NPI, NPO, NHU, W1, W2, W3, GR3, GR2, GR1,& GA1, GA2, GA3, X, Z1, Z2, Z3, Y) CALL FORWARD(NPI, NPO, NHU, W1, W2, W3, X, Z1, Z2, Z3) CALL EFUNCTION(Z3, Y, ERR) ERROR = ERROR + ERR END DO ERROR = ERROR/(NTR_MAX-NTR_MIN) WRITE(IWR,*) 'TRAINING ', ERROR 77 WRITE(20,*) ERROR, ERROR2 GOTO 500 ELSE W1 = SW1 W2 = SW2 W3 = SW3 PRINT *, 'SO LAN LAP', ITER OPEN (3, FILE = 'MOPHONG', STATUS = 'UNKNOWN', ACTION = 'WRITE') ERROR = DO I = 1, NVA_MAX X(0) = DOJ=1,NPI X(J) = INPUT(SAMPLE(1, RVEC(I)), SAMPLE(2, RVEC(I)), SAMPLE(3, RVEC(I)), J) END DO DOJ=1,NPO Y(J) = OUTPUT(SAMPLE(1, RVEC(I)), SAMPLE(2, RVEC(I)), SAMPLE(3, RVEC(I)), J) END DO CALL FORWARD(NPI, NPO, NHU, W1, W2, W3, X, Z1, Z2, Z3) WRITE(3, *) Z3, Y WRITE(22,*) Y, Z3 CALL EFUNCTION(Z3, Y, ERR) ERROR = ERROR + ERR END DO CLOSE (3) WRITE(IWR, *) 'XAC NHAN ERROR = ', ERROR/NVA_MAX !(NVA_MAX - NVA_MIN) ! TIEN HANH TINH TOAN MO PHONG DOK=1,NK DOJ=1,NJ DOI=1,NI DOL=1,NPI IF (INPUT(I, J, K, L) EQ - 9999) THEN GOTO 700 END IF END DO X(0) = -1 DOL=1,NPI X(L) = INPUT(I, J, K, L) END DO CALL FORWARD(NPI, NPO, NHU, W1, W2, W3, X, Z1, Z2, Z3) DOL=1,NPO OUTPUT(I, J, K, L) = Z3(L) END DO 700 CONTINUE 78 END DO END DO END DO end if CALL NORMALIZATION(OUTPUT, NI, NJ, NK, NPO, MAX_T, MIN_T, MAXO, MINO) 800continue DOI=1,NPO DO J = 1, NUMBER_GLOBAL_P IF (PO(I) EQ GLOBAL_PROPERTIES(J)) THEN PROPERTIES(:,:,:, J) = OUTPUT(:,:,:, I) END IF END DO END DO CLOSE (UNIT = 20) CLOSE(UNIT =22) OPEN (UNIT = 23, FILE = 'COMMAND_PLOT_SAMPLE.TXT') WRITE(23,*) 'set autoscale' WRITE(23,*) 'plot ''ERROR.TXT'' u w l title ''error in train group''' WRITE(23,*) 'set terminal png ' WRITE(23,*) 'set output ''errortrain.png'' ' WRITE(23,*) 'replot' WRITE(23,*) 'reset' WRITE(23,*) 'set autoscale' WRITE(23,*) 'plot ''ERROR.TXT'' u w l title ''error in test group'' ' WRITE(23,*) 'set terminal png' WRITE(23,*) 'set output ''errortest.png'' ' WRITE(23,*) 'replot' WRITE(23,*) 'reset' WRITE(23,*) 'set autoscale' WRITE(23,*) 'plot ''VALIDATION.TXT'' u w l title ''d'',\' WRITE(23,*) ' ''VALIDATION.TXT'' u w l title ''y''' WRITE(23,*) 'set terminal png ' WRITE(23,*) 'set output ''validation.png'' ' WRITE(23,*) 'replot' WRITE(23,*) 'reset' CLOSE (UNIT = 23) WRITE(COMMAND, *) 'gnuplot -persist COMMAND_PLOT_SAMPLE.TXT ' STATUS = SYSTEM(TRIM(COMMAND)) RETURN !200 FORMAT(I2,2X,I2,2X,I2) END SUBROUTINE NEURAL_NETWORK SUBROUTINE EFUNCTION(Y, D, ERR) REAL(8), INTENT(IN) :: Y(:), D(:) REAL(8), INTENT(OUT) :: ERR INTEGER :: I, NPO 79 REAL(8) :: SUM NPO = SIZE(Y) IF (NPO NE SIZE(D)) THEN PRINT *, 'ERROR, ' STOP END IF SUM=0 DOI=1,NPO SUM = SUM + (D(I) - Y(I))**2 END DO ERR = 0.5*SQRT(SUM) RETURN END SUBROUTINE EFUNCTION SUBROUTINE FORWARD(NPI, NPO, NHU, W1, W2, W3, X, Z1, Z2, Z3) INTEGER, INTENT(IN) :: NPI, NPO, NHU REAL(8), INTENT(IN) :: X(0:NPI) REAL(8), INTENT(OUT) :: Z3(NPO), Z1(0:NHU), Z2(0:NHU) REAL(8), INTENT(IN) :: W1(NHU, 0:NPI), W2(NHU, 0:NHU), W3(NPO, 0:NHU) INTEGER :: I, J, K REAL(8) :: SUM Z1(0) = -1 Z2(0) = -1 ! TIN HIEU LAN TRUYEN QUA LOP THU NHAT DOI=1,NHU SUM=0 DOJ=0,NPI SUM = SUM + W1(I, J) * X(J) END DO Z1(I) = 1/(1 + EXP(-SUM)) END DO ! TIN HIEU LAN TRUYEN QUA LOP THU ! TIN HIEU LAN TRUYEN QUA LOP THU DOI=1,NPO SUM=0 DOJ=0,NHU SUM = SUM + W3(I, J) * Z2(J) END DO Z3(I) = 1/(1 + EXP(-SUM)) END DO RETURN 80 END SUBROUTINE FORWARD SUBROUTINE BACKWARD(NPI, NPO, NHU, W1, W2, W3, X, Z1, Z2, Z3, Y) INTEGER, INTENT(IN) :: NPI, NPO, NHU REAL(8), INTENT(IN) :: X(0:NPI), Z1(0:NHU), Z2(0:NHU), Z3(NPO), Y(NPO) REAL(8), INTENT(INOUT) :: W1(NHU, 0:NPI), W2(NHU, 0:NHU), W3(NPO, 0:NHU) INTEGER :: I, J, K, L, M, N, R REAL(8) :: SU, SU1 REAL(8), DIMENSION(NHU, 0:NPI) :: GRAD1, DELTA1 REAL(8), DIMENSION(NHU, 0:NHU) :: GRAD2, DELTA2, FROZEN REAL(8), DIMENSION(NPO, 0:NHU) :: GRAD3, DELTA3 ! BACKWAR AND UPDATE WEIGHT3 MATRIX DOM=1,NPO DON=0,NHU ! GRADIEN OF ERROR FUNCTION GRAD3(M, N) = -(Y(M) - Z3(M)) * Z3(M)*(1 - Z3(M)) * Z2(N) ! LEARNING COEFFICIENT: ALPHA=0.5 DELTA3(M, N) = -0.5 * GRAD3(M, N) ! BACKWAR AND UPDATE WEIGHT2 MATRIX DOL=1,NHU DOK=0,NHU SU=0 DOR=1,NPO SU = SU + (Y(R) - Z3(R)) * Z3(R)*(1 - Z3(R)) * W3(R, L) END DO ! GRADIENT OF ERROR FUNCTION AT (L,K) GRAD2(L, K) = -SU * Z2(L)*(1 - Z2(L)) * Z1(K) DELTA2(L, K) = -0.5 * GRAD2(L, K) END DO END DO DOJ=1,NHU DOI=0,NPI SU=0 DOR=1,NPO SU1=0 DOK=1,NHU SU1 = SU1 + W3(R, K) * Z2(K)*(1 - Z2(K)) * W2(K, J) END DO SU = SU + (Y(R) - Z3(R)) * Z3(R)*(1 - Z3(R)) * SU1 END DO GRAD1(J, I) = -SU * Z1(J)*(1 - Z1(J)) * X(I) ! LEARNING COEFFICIENT: ALPHA=0.5 DELTA1(J, I) = -0.5 * GRAD1(J, I) END DO 81 END DO W3 = W3 + DELTA3 W2 = W2 + DELTA2 DO K=1,NHU DO J=0,NHU IF (J.EQ.0 OR J.EQ.K) THEN ELSE W2(K,J)=0 END IF END DO END DO W1 = W1 + DELTA1 RETURN END SUBROUTINE BACKWARD SUBROUTINE FREEZE_MATRIX(N, M, MATRIX) INTEGER, INTENT(IN) :: N, M REAL(8), INTENT(INOUT) :: MATRIX(N, 0:M) INTEGER :: I, J DOI=1,N DOJ=0,M IF ((J EQ 0).OR.(J EQ I).OR.(J EQ (1 + MOD(I + N - 4, N)))) THEN ELSE MATRIX(I, J) = END IF END DO END DO RETURN END SUBROUTINE FREEZE_MATRIX SUBROUTINE RANDOM_IVEC(MIN, MAX, N, IVEC) INTEGER, INTENT(IN) :: N, MIN, MAX INTEGER, DIMENSION(N), INTENT(OUT) :: IVEC INTEGER :: I, J, K REAL(8) :: R DOK=1,N 102 CALL RANDOM_NUMBER(R) J = INT(R * (MAX + - MIN)) + MIN DOI=1,K IF (J EQ IVEC(I)) THEN GOTO 102 ELSE END IF END DO IVEC(K) = J END DO RETURN END SUBROUTINE RANDOM_IVEC SUBROUTINE MINIMUM_MATRIX(NI, NJ, NK, MATRIX, MINIMUM) 82 INTEGER, INTENT(IN) :: NI, NJ, NK REAL(8), DIMENSION(NI, NJ, NK), INTENT(IN) :: MATRIX INTEGER :: I, J, K REAL(8), INTENT(OUT) :: MINIMUM MINIMUM = 1000000 DOK=1,NK DOJ=1,NJ DOI=1,NI IF ((MINIMUM GT MATRIX(I, J, K)).AND.(MATRIX(I, J, K) NE - 9999)) THEN MINIMUM = MATRIX(I, J, K) END IF END DO END DO END DO RETURN END SUBROUTINE MINIMUM_MATRIX SUBROUTINE BACKWARD_RPROPAGATION(NPI, NPO, NHU, W1, W2, W3, GR3, GR2, GR1,& GA1, GA2, GA3, X, Z1, Z2, Z3, Y) INTEGER, INTENT(IN) :: NPI, NPO, NHU REAL(8), INTENT(IN) :: X(0:NPI), Z1(0:NHU), Z2(0:NHU), Z3(NPO), Y(NPO) REAL(8), INTENT(INOUT) :: W1(NHU, 0:NPI), W2(NHU, 0:NHU), W3(NPO, 0:NHU) REAL(8), INTENT(INOUT) :: GR1(NHU, 0:NPI), GR2(NHU, 0:NHU), GR3(NPO, 0:NHU) REAL(8), INTENT(INOUT) :: GA1(NHU, 0:NPI), GA2(NHU, 0:NHU), GA3(NPO, 0:NHU) INTEGER :: I, J, K, L, M, N, R REAL(8) :: SU, SU1 REAL(8), DIMENSION(NHU, 0:NPI) :: DELTA1, GRAD1, GAMA1 REAL(8), DIMENSION(NHU, 0:NHU) :: FROZEN, DELTA2, GRAD2, GAMA2 REAL(8), DIMENSION(NPO, 0:NHU) :: DELTA3, GRAD3, GAMA3 REAL(8) :: UP, DOWN, DMAX, DMIN UP = 1.1 DOWN = 1/UP DMAX = 50 DMIN = 0.0001 ! BACKWAR AND UPDATE WEIGHT3 MATRIX DOM=1,NPO DON=0,NHU ! GRADIEN OF ERROR FUNCTION GRAD3(M, N) = -(Y(M) - Z3(M)) * Z3(M)*(1 - Z3(M)) * Z2(N) END DO END DO ! BACKWAR AND UPDATE WEIGHT2 MATRIX 83 DOL=1,NHU DOK=0,NHU SU=0 DOR=1,NPO SU = SU + (Y(R) - Z3(R)) * Z3(R)*(1 - Z3(R)) * W3(R, L) END DO GRAD2(L, K) = -SU * Z2(L)*(1 - Z2(L)) * Z1(K) END DO END DO DOJ=1,NHU DOI=0,NPI SU=0 DOR=1,NPO SU1=0 DOK=1,NHU SU1 = SU1 + W3(R, K) * Z2(K)*(1 - Z2(K)) * W2(K, J) END DO SU = SU + (Y(R) - Z3(R)) * Z3(R)*(1 - Z3(R)) * SU1 END DO GRAD1(J, I) = -SU * Z1(J)*(1 - Z1(J)) * X(I) END DO END DO ! TINH VOI LOP NGOAI CUNG ! CAP NHAT HE SO HOC: GAMA3 DOM=1,NPO DON=0,NHU IF (GRAD3(M,N)*GR3(M,N) GT 0) THEN GAMA3(M,N) = DMIN1(GA3(M,N)*UP,DMAX) ELSE IF (GRAD3(M,N)*GR3(M,N) LT 0) THEN GAMA3(M,N) = DMAX1(GA3(M,N)*DOWN,DMIN) ELSE GAMA3(M,N) = GA3(M,N) END IF END DO END DO ! CAP NHAT PHAN UPDATE: DELTA3 DOM=1,NPO DON=0,NHU IF (GRAD3(M,N)*GR3(M,N) GE 0) THEN DELTA3(M,N) = -SIGN(GA3(M,N),GR3(M,N)) IF (GRAD3(M,N) EQ ) DELTA3(M,N) = ELSE DELTA3(M,N) = GRAD3(M,N) = END IF END DO END DO ! CAP NHAT W3 84 W3 = W3 + DELTA3 ! SAO LUU GR3 = GRAD3 GA3 = GAMA3 ! TINH VOI LOP AN THU HAI ! CAP NHAT HE SO HOC: GAMA2 DOM=1,NHU DON=0,NHU IF (GRAD2(M,N)*GR2(M,N) GT 0) THEN GAMA2(M,N) = DMIN1(GA2(M,N)*UP,DMAX) ELSE IF (GRAD2(M,N)*GR2(M,N) LT 0) THEN GAMA2(M,N) = DMAX1(GA2(M,N)*DOWN,DMIN) ELSE GAMA2(M,N) = GA2(M,N) END IF END DO END DO ! CAP NHAT PHAN UPDATE: DELTA2 DOM=1,NHU DON=0,NHU IF (GRAD2(M,N)*GR2(M,N) GE 0) THEN DELTA2(M,N) = -SIGN(GA2(M,N),GR2(M,N)) IF (GRAD2(M,N) EQ ) DELTA2(M,N) = ELSE DELTA2(M,N) = GRAD2(M,N) = END IF END DO END DO ! CAP NHAT W2 W2 = W2 + DELTA2 ! CALL FREEZE_MATRIX(NHU, NHU, W2) DO K=1,NHU DO J=0,NHU ! IF (J.EQ.0) THEN ! ELSE IF (J.EQ.K) THEN ! ELSE IF (J.EQ.(MOD(K+NHU-4,NHU)+1)) THEN ! ELSE ! END IF END DO ! SAO LUU GR2 = GRAD2 GA2 = GAMA2 85 ! TINH VOI LOP AN THU NHAT ! CAP NHAT HE SO HOC: GAMA1 DOM=1,NHU DON=0,NPI IF (GRAD1(M,N)*GR1(M,N) GT 0) THEN GAMA1(M,N) = DMIN1(GA1(M,N)*UP,DMAX) ELSE IF (GRAD1(M,N)*GR1(M,N) LT 0) THEN GAMA1(M,N) = DMAX1(GA1(M,N)*DOWN,DMIN) ELSE GAMA1(M,N) = GA1(M,N) END IF END DO END DO ! CAP NHAT PHAN UPDATE: DELTA1 DOM=1,NHU DON=0,NPI IF (GRAD1(M,N)*GR1(M,N) GE 0) THEN DELTA1(M,N) = -SIGN(GA1(M,N),GR1(M,N)) IF (GRAD1(M,N) EQ ) DELTA1(M,N) = ELSE DELTA1(M,N) = GRAD1(M,N) = END IF END DO END DO ! CAP NHAT W1 W1 = W1 + DELTA1 ! SAO LUU GR1 = GRAD1 GA1 = GAMA1 RETURN END SUBROUTINE BACKWARD_RPROPAGATION END MODULE NEURALNETWORK ... ĐẠT NGHIÊN CỨU, CẢI THIỆN KỸ THUẬT MƠ HÌNH VỈA NỨT NẺ LIÊN TỤC (CFM), ÁP DỤNG CHO MỎ CỦA VIỆT NAM Ngành Chuyên ngành Mã số : Cơ học kỹ thuật : Cơ học kỹ thuật :60520101 LUẬN VĂN THẠC SĨ CƠ HỌC KỸ... hình địa chất đƣợc áp dụng phổ biến nhƣ mơ hình địa học, mơ hình mạng nứt nẻ rời rạc (DFN), mơ hình nứt nẻ liên tục, … làm việc với vỉa nứt nẻ tự nhiên (NFR) mơ hình nứt nẻ liên tục – CFM tỏ có hiểu... số thấm cho mơ hình kỹ thuật khai thác vỉa nứt nẻ trình bày hình 1.1 Các yếu tố hƣởng tới cƣ độ nứt n Mơ hình nứt nẻ Hình 1.1 Sơ đồ thành phần phƣơng pháp mơ hình hóa đặc trƣng nứt nẻ vỉa theo

Ngày đăng: 11/11/2020, 22:05

Xem thêm:

w