Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 79 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
79
Dung lượng
908,69 KB
Nội dung
ĐẠI HỌC QUỐC GIA TP Hồ Chí Minh TRƯỜNG ĐẠI HỌC BÁCH KHOA LÊ ĐỨC THƯỜNG VẬN HÀNH TỐI ƯU HỒ CHỨA THUỶ ĐIỆN SƠN LA BẰNG PHƯƠNG PHÁP QUY HOẠCH ĐỘNG CHUYÊN NGÀNH : XÂY DỰNG CÔNG TRÌNH THỦY MÃ SỐ : 60.58.40 LUẬN VĂN THẠC SĨ TP HỒ CHÍ MINH, Năm 2011 CƠNG TRÌNH ĐƯỢC HỒN THÀNH TẠI TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH Cán hướng dẫn khoa học : PGS TS NGUYỄN THỐNG Cán chấm nhận xét : PGS TS LÊ ĐÌNH HỒNG Cán chấm nhận xét : PGS TS TRƯƠNG CHÍ HIỀN Luận văn thạc sĩ bảo vệ Trường Đại học Bách Khoa, ĐHQG Tp HCM ngày 21 tháng 09 năm 2011 Thành phần Hội đồng đánh giá luận văn thạc sĩ gồm: (Ghi rõ họ, tên, học hàm, học vị Hội đồng chấm bảo vệ luận văn thạc sĩ) Chủ tịch hội đồng: PGS.TS HOÀNG VĂN HUÂN Thư ký hội đồng: TS NGUYỄN QUANG TRƯỞNG Ủy viên hội đồng: PGS.TS NGUYỄN THỐNG Ủy viên hội đồng: TS TRƯƠNG CHÍ HIỀN Ủy viên hội đồng: PGS.TS LÊ ĐÌNH HỒNG Xác nhận Chủ tịch Hội đồng đánh giá LV Trưởng Khoa quản lý chuyên ngành sau luận văn sửa chữa (nếu có) CHỦ TỊCH HỘI ĐỒNG TRƯỞNG KHOA XÂY DỰNG ĐẠI HỌC QUỐC GIA TP.HCM TRƯỜNG ĐẠI HỌC BÁCH KHOA CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập - Tự - Hạnh phúc NHIỆM VỤ LUẬN VĂN THẠC SĨ Họ tên học viên: Lê Đức Thường MSHV : 10200399 Ngày, tháng, năm sinh: 29/04/1980 Nơi sinh: Phú Yên Chuyên ngành: Xây Dựng Cơng Trình Thủy Mã số : 60.58.40 1- TÊN ĐỀ TÀI : VẬN HÀNH TỐI ƯU HỒ CHỨA THUỶ ĐIỆN SƠN LA BẰNG PHƯƠNG PHÁP QUY HOẠCH ĐỘNG 2- NHIỆM VỤ LUẬN VĂN: Trên sở đề cương Hội Đồng Chuyên Ngành thông qua, luận văn phải đề cập đến tổng quan nghiên cứu lý thuyết quy hoạch động, viết chương trình tính tốn thuỷ cho hồ chứa đa mục tiêu Vận dụng mơ hình tốn quy hoạch động vào việc điều tiết tối ưu hồ chứa thuỷ điện Sơn La, đồng thời phân tích hiệu ích tài cho dự án 3- NGÀY GIAO NHIỆM VỤ : Ngày 14 tháng 02 năm 2011 4- NGÀY HOÀN THÀNH NHIỆM VỤ : Ngày 01 tháng 07 năm 2011 5- HỌ VÀ TÊN CÁN BỘ HƯỚNG DẪN : PGS.TS NGUYỄN THỐNG Nội dung đề cương Luận văn thạc sĩ Hội Đồng Chuyên Ngành thông qua Tp HCM, ngày 22 tháng 09 năm 2011 CÁN BỘ HƯỚNG DẪN (Họ tên chữ ký) PGS TS NGUYỄN THỐNG CHỦ NHIỆM BỘ MÔN ĐÀO TẠO (Họ tên chữ ký) PGS TS HUỲNH THANH SƠN TRƯỞNG KHOA XÂY DỰNG (Họ tên chữ ký) LỜI CẢM ƠN Trước tiên xin chân thành cảm ơn thầy Nguyễn Thống tận tình hướng dẫn, góp ý động viên tơi q trình thực luận văn tốt nghiệp Xin chân thành cảm ơn quý Thầy Cô khoa Xây Dựng, môn Kỹ Thuật Tài Nguyên Nước – Trường Đại Học Bách Khoa TP.HCM, bạn học viên cao học xây dựng cơng trình thuỷ khố 2008, 2010 nhiệt tình giúp đỡ tơi suốt khoá học vừa qua Những lời cảm ơn sau xin dành cho người thân gia đình hết lòng quan tâm tạo điều kiện tốt để tơi hồn thành luận văn tốt nghiệp Mặc dù cố gắng, thời gian kiến thức có hạn nên chắn luận văn cịn thiếu sót định Kính mong q Thầy Cơ, quý anh chị bạn đóng góp ý kiến giúp khắc phục nâng cao kiến thức Xin trân trọng cảm ơn! Tp HCM, Ngày 22 tháng 09 năm 2011 Tác giả LÊ ĐỨC THƯỜNG TÓM TẮT LUẬN VĂN Mục đích luận văn nghiên cứu ứng dụng chương trình quy hoạch động vào toán thực tế Luận văn gồm chương: Chương 1: Là chương Tổng quan, trình bày tình hình nghiên cứu ngồi nước, mục đích, nội dung phương pháp nghiên cứu luận văn Chương 2: Trình bày Cơ sở lý thuyết phương pháp quy hoạch động, dùng để giải toán tối ưu phân tích hệ thống nguồn nước Chương 3: Trình bày mơ hình tối ưu hóa tổng qt tốn hệ thống nguồn nước, bước tổng quát để giải tốn tối ưu hóa Chương 4: Thiết lập mơ hình tốn học tính tốn thủy hồ chứa đa mục tiêu bao gồm: xác định hàm mục tiêu, điều kiện ràng buộc toán Chương 5: Xây dựng thuật tốn viết chương trình tính tốn, giải toán thủy vận hành hồ chứa đa mục tiêu Chương 6: Áp dụng chương trình trình bày phần trên, tính tốn điều tiết hồ chứa thủy điện Sơn La Chương 7: Kết luận kiến nghị vấn đề làm THESIS ABSTRACT The purpose of this thesis is to study and application of dynamic programming on real problems The thesis consists of seven chapters: Chapter 1: Is the overview chapter which presents some researches of dynamic programming used in Vietnam and in the world, the purpose, contents and the research methodology of the thesis Chapter 2: Presents the theoretical basis of dynamic programming, methodologies solves problems in planning water resource Chapter 3: Presents models of the general optimization problem of water resource, the general steps to solve the optimization problem Chapter 4: Establish mathematical of model calculates hydraulic power for reservoir multiple objective consist of determined objective function and some condition tie together of problem Chapter 5: To built algorithm and programming calculation from above model and solution the problem optimal operation reservoir multiple objective Chapter 6: Apply to programming have showed above, calculation the regulation of the hydro power reservoir Son La Chapter 7: Conclusion and petition some problem had finished MỤC LỤC CHƯƠNG TỔNG QUAN 1.1 Cơ sở hình thành lý thực đề tài 1.2 Tình hình nghiên cứu giải tốn vận hành tối ưu .2 1.2.1 Những nghiên cứu nước 1.2.2 Những nghiên cứu nước 1.3 Mục tiêu, phương pháp phạm vi nghiên cứu 1.3.1 Mục tiêu nghiên cứu 1.3.2 Phương pháp phạm vi nghiên cứu CHƯƠNG 2: CƠ SƠ LÝ THUYẾT 2.1 Khái niệm quy hoạch động 2.2 Các phần tử mơ hình quy hoạch động 2.3 Các đặc trưng phương pháp quy hoạch động CHƯƠNG 3: MƠ HÌNH TỐI ƯU TỔNG QT CỦA BÀI TOÁN HỆ THỐNG NGUỒN NƯỚC 12 3.1 Mơ hình tối ưu tổng qt tốn hệ thống nguồn nước 12 3.2 Thiết kế phân tích tốn hệ thống nguồn nước 13 3.3 Quy trình truyền thống quy trình tối ưu hố .13 3.3.1 Quy trình truyền thống 13 3.3.2 Quy trình tối ưu hố 15 a Các bước tổng quát giải toán tối ưu hoá 15 b Tối ưu hoá đơn mục tiêu so với đa mục tiêu 17 c Áp dụng tối ưu hoá hệ thống quản lý nguồn nước 18 d Xây dựng mơ hình 19 CHƯƠNG 4: MƠ HÌNH TỐN HỌC GIẢI BÀI TOÁN TỐI ƯU TRONG VẬN HÀNH HỒ CHỨA ĐA MỤC TIÊU 21 4.1 Nguyên tắc chung xác định chế độ vận hành tối ưu hồ chứa đa mục tiêu .22 4.2 Ý nghĩa việc nghiên cứu toán chế độ vận hành tối ưu so với mơ hình tốn dịng chảy xác định .22 4.3 Mơ hình tốn giải tốn tối ưu vận hành tối ưu hồ chứa đa mục tiêu 22 4.3.1 Lựa chọn hàm mục tiêu 23 4.3.2 Thiết lập quan hệ, ràng buộc cho toán 24 CHƯƠNG 5: LỰA CHỌN PHƯƠNG PHÁP GIẢI XÂY DỰNG THUẬT TOÁN VÀ VIẾT CHƯƠNG TRÌNH 28 5.1 Phân tích mơ hình tốn lựa chọn phương pháp giải 28 5.2 Các thành phần MHT theo phương pháp quy hoạch động 29 5.2.1 Giai đoạn 29 5.2.2 Biến định .29 5.2.3 Biến trạng thái 29 5.2.4 Kết giai đoạn 29 5.2.5 Hàm trạng thái 30 5.3 Xây dựng thuật toán để giải MHT 30 5.3 Xây dựng thuật toán để giải MHT 30 CHƯƠNG 6: ÁP DỤNG MƠ HÌNH TỐN TÍNH TỐN ĐIỀU TIẾT HỒ CHỨA THUỶ ĐIỆN SƠN LA .38 6.1 Tổng quan dự án thuỷ điện Sơn La 38 6.2 Dữ liệu đầu vào 40 6.2.1 Đặc tính hồ .42 6.2.2 Bốc 42 6.3 Kết tính tốn 43 CHƯƠNG 7: KẾT LUẬN VÀ KIẾN NGHỊ .46 7.1 Kết luận 46 7.2 Kiến nghị 46 Tài liệu tham khảo: 47 Phụ lục: .48 DANH MỤC HÌNH VẼ Hình 2.1 Các thành phần phương pháp quy hoạch động Hình 3.1 Thủ tục thiết kế phân tích truyền thống 14 Hình 3.2 Trình tự xây dựng mơ hình tối ưu hóa 19 Hình 5.1 Sơ đồ tính điều tiết tối ưu theo phương pháp QHĐ 30 Hình 5.2 Thuật tốn truy tốn ngược giai đoạn cuối i=N 32 Hình 5.3 Thuật toán truy toán ngược giai đoạn i = N-1 Ỉ1 33 Hình 5.4 Thuật tốn truy toán ngược giai đoạn đầu i=0 34 Hình 5.5 Thủ tục chung cho tồn tốn tối ưu vận hành hồ chứa đa mục tiêu……………………………………………………………………………… 36 Hình 5.6 Sơ đồ tổ chức subroutine chương trình 37 Hình 6.1 W=f(Z) tuyến đập 42 Hình 6.2 Tia điều tiết tọa độ xiên điển hình .43 Hình 6.3 Dao động mực nước hồ .44 DANH MỤC BẢNG BIỂU Bảng Thơng số dự án Sơn La .40 Bảng Dòng chảy trung bình tháng từ 2060 đến 2009 41 Bảng Chênh lệch bốc mặt hồ 42 Bảng Đơn giá bán điện theo tháng 42 Bảng Tóm tắt kết giá trị hàm mục tiêu tối ưu 44 PHỤ LỤC CODE CHƯƠNG TRÌNH CHÍNH c **************************************************** c * Copyright 2004 HCM City University of Technology * c **************************************************** c PROGRAM Optimal Opreration of Hydropower Reservoir with Dynamics Programming Methods - Trang 55 - c c c c HV LE DUC THUONG March, 2011 INCLUDE 'SonLa-DMT.INC' c c SUBROUTINE DYNA_PROGRAM c c c c c c c c c c c c c c c SUBROUTINE ENERGIE SUBROUTINE FLOW SUBROUTINE H_TinhToan SUBROUTINE Q_POLAIR SUBROUTINE RESERVOIR SUBROUTINE RESULT1(Npa) SUBROUTINE RESULT2(Npa) SUBROUTINE STAT SUBROUTINE TAICHINH SUBROUTINE THOIGIAN SUBROUTINE TIADIEUTIET SUBROUTINE TONTHAT_Q(Loop) SUBROUTINE TOADOXIEN SUBROUTINE XATHUA open(103,file='Z_KetQua.txt') c CALL USER c print *, 'USER OK' c c File bien thoi gian c CALL THOIGIAN c print *, 'THOIGIAN OK' c c So lieu dong chay thien nhien c CALL FLOW c print *, 'FLOW OK' c c Thong so ho chua c CALL RESERVOIR c print *, 'RESERVOIR OK' c pause c c Thong so ve tai chinh c CALL TAICHINH c print *, 'TAICHINH OK' c c SO LIEU Q=F(Z) SAU NHA MAY c CALL QZ_NHAMAY c c Nhap bang so lieu quan he giua luu luong va ton that qua Ham va Ap Luc c CALL Tonthat_Q_dh c 100 Npa =1,L_GiaDien print *, 'Chuong trinh se chay tu LOOP = > LOOP = *de ke den ton that ho chua ==> Just wait patiently !!!' 90 Loop =1,2 ! Loop =1 : chua ke ton that ! Loop =2 : da ke ton that c print *, ' ' print *, 'LOOP = ',Loop print *, ' ' c c Xac dinh luu luong ton that va tinh luu luong dong chay lai c CALL TONTHAT_Q(Loop) c c Mang toa xien c CALL TOADOXIEN c c Chuong trinh chinh QUY HOACH DONG c c CALL DYNA_PROGRAM(Npa,Loop) - Trang 65 - c c Tinh tung duong dieu tiet toa xien c c print *, 'ENTER TIADIEUTIET' c CALL TIADIEUTIET c print *, 'OK TIADIEUTIET' c c Ket qua thong ke c CALL STAT c print *, 'OK STAT' c 90 continue c c c Tinh luu luong xa thua cho p/a chon c CALL XATHUA c CALL STAT c c Xuat so lieu c CALL RESULT1(Npa) CALL RESULT2(Npa) c print *, 'OK RESULT' c 100 continue ! So phuong an gia dien c PRINT *, ' ' write(6,*) 'EXECUTION FINISHED NORMALLY' c close(103) c stop end c c -c SUBROUTINE USER c INCLUDE 'SonLa-DMT.INC' c data Z_MNDBT / 215.0 / ! Son La data Z_MNC / 175.0 / data Z_DayHo / 110.0 / c c Muc nuoc sau nha may data Z_NhaMay / 117.5 / ! Son La c c Muc nuoc sau nha may c data Z_MNTBSauNM / 117.5 / ! Son La c data Z_NM_true /0/ ! =0 : Z NM khong doi =Z_MNTBSauNM c ! =1 : Z NM =F(Q) c c Cong suat lap may data X_LapMay / 2400 / ! Son La c c Hieu suat Tua bin, may phat c data eta1, eta2 / 0.90 , 0.975 / c c Luu luong qua tuabin lon nhat c data Qmax / 3462 / ! Son La c data N_ToMay / / ! Son La c c Qmin = 1.5*Qmax/N_ToMay c Qmin = 0.25*Qmax data Qmin / 807 / c c Tinh ton that dh duong ham va duong ong c data I_dh / / ! =0 : tinh theo l/l TB (tuabin chay suot thang) c ! =1 : Chua co c ! =2 : tra bang tu Q tuabin tinh dh > lap bang dh_F(Q) c c Niveaux nuoc ban dau ho chua dieu tiet c data Niv_Init / / ! = Niv ==> Ho day (MNDBT) c ! = ==> Ho can (MNC) c Gia so cao duong dac tinh ho chua c c data Delta_Z / 2.5 / ! Son La c c Tan suat cong suat dam bao p% c data Pr_Ndambao / 90 / c c Thang bat dau va ket thuc mua kho c Dung phan chia nang luong nua kho - mua mua data Mua_BatDau,Mua_KetThuc /2,9/ c c Ton that boc hoi (mm/thang) data BocHoi(1),BocHoi(2),BocHoi(3),BocHoi(4),BocHoi(5),BocHoi(6) * ,BocHoi(7),BocHoi(8),BocHoi(9),BocHoi(10),BocHoi(11),BocHoi(1 2) c * /31.7,33.2,47.2,55.0,57.4,59.2,62.3,57.1,40.0,31.1,25.4,24.2/ * /0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0./ c c Phuong phap tinh tham qua ho c Itham =1 : tinh tham theo ty le % Dung tich ho cho nam (TyleTham) c Itham =0 : tinh tham theo chieu day lop nuoc mat cho nam * F(km**2) c Ty le tham qua long ho (%Who) c c data Itham / / data Itham / / c c data TyleTham / 0.005 / c data XLopNuoc / / data TyleTham / 0.00 / data XLopNuoc / / c c Mat nuoc tham qua dap va ke cua van tran (m3/s) c c data Q_dap / 1.0 / data Q_dap / / c c Luu luong lay tu ho thuong xuyen c data Qconst / / c c Chon cong thuc tinh ton that duong dai : Manning, 2: HazenWilliams c data M_H_W /1/ c c c Thong so hinh hoc duong ham va duong ong ap luc Son La c data D_Ham / 46 / ! m data L_Ham / 200 / ! m - Trang 66 - data D_ApLuc data L_ApLuc / 46 / / 50 / !m !m c c c He so nham theo Manning hoac HW data X_Nham_Ham / 0.014 / data X_Nham_ApLuc / 0.011 / data HW_BeTong / 110 / data HW_Thep / 140 / c c Hoi doai dolla data TySuat / 20000 / c c Gia Profit phat Q < hoac Q < Q yeu cau KHAC data Penal / -1.E+10 / c c So phuong an gia dien c data L_GiaDien /1/ c c Ham muc tieu (0:khong chon, 1: chon) c data Max_Energie / / ! =1 Max doanh thu tu DIEN c ! =0 Max doanh thu tu DIEN+NONG NGHIEP Max_Profit = 1- Max_Energie c c data Max_Profit / 1/ c return end c c -c c SUBROUTINE FLOW use dflib c INCLUDE 'SonLa-DMT.INC' dimension QQ(Nthang) dimension Q2D(100,12) c open(1,file='Z_Q2D-DMT.txt') read(1,*) c ii =1,Nnam read(1,*) x1,(Q2D(ii,jj),jj=1,12) enddo close(1) c kk =1,Nnam jj =1,12 ii =12*(kk-1)+jj Qden_tn(ii) =Q2D(kk,jj) Qden(ii) =Qden_tn(ii) QQ(ii) = Qden(ii) ! dung de SORT tim Qtn_db90% enddo enddo c Qtn_min = 1.E+10 Qtn_max =-1.E+10 c Inam = 1,Nnam Ithang = 1,12 ii = (Inam - 1) * 12 + Ithang c if(Qden(ii).lt.Qtn_min) Qtn_min =Qden(ii) if(Qden(ii).gt.Qtn_max) Qtn_max =Qden(ii) enddo enddo c c Tinh Q0 c Tgiay = 30 * 86400 elseif(Ithang.eq.5) then Tgiay = 31 * 86400 elseif(Ithang.eq.6) then Tgiay = 30 * 86400 elseif(Ithang.eq.7) then Tgiay = 31 * 86400 elseif(Ithang.eq.8) then Tgiay = 31 * 86400 elseif(Ithang.eq.9) then Tgiay = 30 * 86400 elseif(Ithang.eq.10) then Tgiay = 31 * 86400 elseif(Ithang.eq.11) then Tgiay = 30 * 86400 elseif(Ithang.eq.12) then Tgiay = 31 * 86400 else print *, 'Co bat thuong ham Tgiay' stop endif Wtn_sum =0 ii = 1,Nthang Wtn_sum = Wtn_sum + Qden(ii)*(Z_Time(ii) - Z_Time(ii - 1)) enddo c Q0 = Wtn_sum/Z_Time(Nthang) Q0_tn =Q0 print *, 'Q0_tn = ',Q0 print *, '' c pause close(1) c c Tinh Q dam bao 90% cua Q thien nhien c CALL sortqq(loc(QQ),Nthang,srt$real4) c ii =1,Nthang s =100.*(ii-0.3)/(Nthang+0.4) if(s >=(100.0 - Pr_Ndambao)) then Qtn_90 =QQ(ii) c pause go to 100 else endif enddo c 100 return end c c -c SUBROUTINE THOIGIAN c INCLUDE 'SonLa-DMT.INC' c c Tao file bien thoi gian Z_Time(0:Nthang) : don vi 10**6 s c Z_Time(0) = Do Inam = 1,Nnam Do Ithang = 1,12 ii = (Inam - 1) * 12 + Ithang Z_Time(ii) = (Inam - 1) * 3.65 * 8.64 + ThoiDiem(Ithang) Enddo Enddo c return end c c -c Function ThoiDiem(IT) c X = Do jj = 1,IT X = X + Tgiay(jj) Enddo ThoiDiem = X/1.0E+6 return end c c -c Function Tgiay(Ithang) c if(Ithang.eq.1) then Tgiay = 31 * 86400 elseif(Ithang.eq.2) then Tgiay = 28 * 86400 elseif(Ithang.eq.3) then Tgiay = 31 * 86400 elseif(Ithang.eq.4) then c return end c c -c SUBROUTINE RESERVOIR c INCLUDE 'SonLa-DMT.INC' dimension Zhh(100) c open(1,file='W_F_Z-SonLa-DMT.txt') c read(1,*) Nxx,Delta_Z c read(1,*) ii =1,N_Echelle read(1,*) Zhh(ii),W_Ho(ii),F_Ho(ii) c print *, 'W_Ho(ii) va F_ho(ii)',ii,W_Ho(ii),F_Ho(ii) enddo c pause close(1) c if(Nxx.ne.N_Echelle) then print *, 'Xem lai tham so N_Echelle file ****.INC' stop else endif c c ii=1,(N_Echelle-1) if(abs((Zhh(ii+1)-Zhh(ii)) - Delta_Z).gt.0.1) then print *, 'Xem lai file Delta_Z THANG W_F_Z.txt' stop else endif enddo ! ii c W_MNDBT =W_FROM_Z(Z_MNDBT) W_MNC=W_FROM_Z(Z_MNC) W_HuuIch =W_MNDBT-W_MNC Z_Gia =(Z_MNDBT-Z_MNC)/(Niv-1) c c Z_Niveaux(1) =Z_MNC !chu y cach chia thu tu bac thang theo quy uoc c ii =2,Niv Z_Niveaux(ii) =Z_Niveaux(ii-1) + Z_Gia enddo c - Trang 67 - ii =1,2 print *, 'Z_Niveaux(',ii,')=',Z_Niveaux(ii) enddo c ii =Niv-1,Niv print *, 'Z_Niveaux(',ii,')=',Z_Niveaux(ii) enddo c pause c ss=0 ii =1,(Niv-1) Z1 =Z_Niveaux(ii) Z2 =Z_Niveaux(ii+1) W_Gia(ii) =W_FROM_Z(Z2)-W_FROM_Z(Z1) ss = ss + W_Gia(ii) enddo print *, 'K/tra SUM W_Gia va Whi :',ss,'=???',(W_MNDBTW_MNC) print *, ' ' print *, ' ' if(Max_Energie.eq.1) then print *, 'Ban dang chay bai toan Max DOANH THU TU DIEN' print *, 'Chuoi dong chay phan tich ',Nnam,' nam' elseif(Max_Profit.eq.1) then print *, 'Ban dang chay bai toan Max DOANH THU TU (DIEN + *NONG NGHIEP)' print *, 'Chuoi dong chay phan tich dai=',Nnam,' nam' else endif print *, ' ' print *, ' ' c pause c c Print *, 'W_Gia(1 >Niv-1)' c print *, W_Gia(1) c ii =2,(Niv-1) c print *, W_Gia(ii) c enddo c pause c c The tich nuoc ho ban dau c Z =Z_Niveaux(Niv_Init) W_BanDau =W_FROM_Z(Z) - W_MNC c c Beta ho beta =(W_MNDBT-W_MNC)/(3.65*8.64*Q0) c c Muc nuoc luu NM c ii =1,Nthang Zhaluu(ii) =Z_MNTBSauNM enddo c print *, ' ' print *, 'W_MNDBT=',W_MNDBT , 'tr.m3' print *, 'W_MNC=',W_MNC , 'tr.m3' print *, 'W_HuuIch=',W_MNDBT-W_MNC ,'tr.m3' print *, 'W_BanDau=',W_BanDau , 'tr.m3' print *, 'Z_MNDBT=',Z_MNDBT , 'm' print *, 'Z_MNC=',Z_MNC , 'm' print *, 'Z_MNTBSauNM=',Z_MNTBSauNM ,'m' print *, 'Z_NhaMay=',Z_NhaMay , 'm' print *, 'Qtn_max =',Qtn_max , 'm3/s' print *, 'Qtn_90% =',Qtn_90 , 'm3/s' print *, 'Qtn_min =',Qtn_min , 'm3/s' print *, 'Qmax ban dau=',Qmax , 'm3/s' print *, 'Z_Gia Ho=',Z_Gia , 'm' print *, 'Delta_Z=',Delta_Z , 'm' print *, 'Gia so MN ho', (Z_MNDBT-Z_MNC)/float(Niv-1),'m' print *, ' ' - Trang 68 - c pause c return end c -c Function W_FROM_Z(Z0) c INCLUDE 'SonLa-DMT.INC' c Z1 =Z_DayHo Do jj = 2,N_Echelle Z2 =Z1 + Delta_Z if(Z2.ge.Z0.and.Z0.ge.Z1) then W_FROM_Z =W_Ho(jj-1)+ * (Z0-Z1)*(W_Ho(jj)-W_Ho(jj-1))/Delta_Z go to 1111 else Z1 =Z2 endif enddo 1111 return end c -c Function F_FROM_Z(Z0) c INCLUDE 'SonLa-DMT.INC' c Z1 =Z_DayHo Do jj = 2,N_Echelle Z2 =Z1 + Delta_Z if(Z2.ge.Z0.and.Z0.ge.Z1) then F_FROM_Z =F_Ho(jj-1)+ * (Z0-Z1)*(F_Ho(jj)-F_Ho(jj-1))/Delta_Z go to 1111 else Z1 =Z2 endif enddo 1111 return end c -c SUBROUTINE TAICHINH c INCLUDE 'SonLa-DMT.INC' c open(1,file='Z_DonGiaDien.txt') c jj =1,12 read(1,*) nn,(GiaDien(ii,jj),ii=1,L_GiaDien) enddo c c ii =1,L_GiaDien c print *, 'L_GiaDien:',ii c print *, 'GiaDien(ii,jj)',(GiaDien(ii,jj),jj=1,12) c pause c enddo close(1) c open(1,file='Z-Qtuoi-DonGia-SonLa.txt') c read(1,*) c print *, 'Qtuoi & Don gia' jj =1,12 read(1,*) mois,Qtuoi(jj),DonGiaNuoc(jj) c print *, jj,Qtuoi(jj),DonGiaNuoc(jj) enddo c print *, '' c pause c close(1) c return end c c -c SUBROUTINE QZ_NHAMAY c c Nhap so lieu quan he Z=F(Q) sau NM c INCLUDE 'SonLa-DMT.INC' c open(1,file='Z_Q_NM_SONLA.txt') c open(1,file='Z_Q_NM_SB4.txt') c read(1,*) IZ_NM ii =1,IZ_NM read(1,*) Q_NM(ii),Z_NM(ii) enddo close(1) c return end c -c SUBROUTINE Tonthat_Q_dh dimension xx(100,15),dd(15) c INCLUDE 'SonLa-DMT.INC' c c Nhap so lieu bang tinh Q va dh tuong ung Ham va Ap luc c c Duong ham c c open(1,file='Tab_Ham_SB4.txt') open(1,file='Tab_Ham_SonLa.txt') c read(1,*) read(1,*) I_cot,(dd(ii),ii=1,I_cot) read(1,*) N_Thang_Q_dh ii =1,N_Thang_Q_dh read(1,*) (xx(ii,jj),jj=1,I_cot) enddo close(1) c c Do tim duong kinh duong ham tinh c ii =1,I_cot if(dd(ii).eq.D_Ham) then jx =ii go to else endif enddo print *, 'Khong tim thay D_Ham bang tra' print *, 'D_Ham=',D_Ham stop c continue c c Gan gia tri su dung tra ton that duong ham voi D_Ham da chon c ii =1,N_Thang_Q_dh Q_dh_Ham(ii,1) =xx(ii,1) Q_dh_Ham(ii,2) =xx(ii,jx+1) enddo c c print*, 'Q_dh_Ham(ii,1)' c ii =1,N_Thang_Q_dh c print*, 'Q_dh_Ham(ii,1&2)=',Q_dh_Ham(ii,1),Q_dh_Ham(ii,2) c enddo - Trang 69 - c pause c c Duong ong Ap luc c open(1,file='Tab_ApLuc_SonLa.txt') c read(1,*) read(1,*) I_cot,(dd(ii),ii=1,I_cot) read(1,*) N_Thang_Q_dh ii =1,N_Thang_Q_dh read(1,*) (xx(ii,jj),jj=1,I_cot) enddo close(1) c c Do tim duong kinh duong ong Ap luc tinh c ii =1,I_cot if(dd(ii).eq.D_ApLuc) then jx =ii go to else endif enddo print *, 'Khong tim thay D_Apluc bang tra' print *, 'D_ApLuc=',D_ApLuc stop c continue c c Gan gia tri su dung tra ton that voi D_ApLuc da chon c ii =1,N_Thang_Q_dh Q_dh_ApLuc(ii,1) =xx(ii,1) Q_dh_ApLuc(ii,2) =xx(ii,jx+1) enddo c c print *, 'Q_dh_ApLuc(ii,1)' c ii =1,N_Thang_Q_dh c print *, 'Q_dh_ApLuc(ii,1&2)=',Q_dh_ApLuc(ii,1),Q_dh_ApLuc(ii,2) c enddo c pause c c open(1,file='Q_dh_Ham.txt') c read(1,*) c read(1,*) N_Thang_Q_dh c ii =1,N_Thang_Q_dh c read(1,*) Q_dh_Ham(ii,1),Q_dh_Ham(ii,2) c enddo c close(1) c c open(1,file='Q_dh_ApLuc.txt') c read(1,*) c read(1,*) N_Thang_Q_dh c ii =1,N_Thang_Q_dh c read(1,*) Q_dh_ApLuc(ii,1),Q_dh_Apluc(ii,2) c enddo c close(1) c c print *, 'Q_dh_Ham(N_Thang_Q_dh,1)=',Q_dh_Ham(N_Thang_Q_dh,1) c pause c return end c -c SUBROUTINE TONTHAT_Q(Loop) c INCLUDE 'SonLa-DMT.INC' c c Tinh luu luong ton that boc hoi, tham qua long ho, tham qua dap c Q0 = Wtn_sum/Z_Time(Nthang) if(Loop.eq.1) then ii =1,Nthang Q_BocHoi(ii) =0 Q_ThamLongHo(ii) =0 Q_ThamThanDap(ii)=Q_dap enddo else c print *, 'Luu luong trung binh sau ke ton that' print *, 'Q0= ',Q0,' m3/s' c return end c -c SUBROUTINE TOADOXIEN c INCLUDE 'SonLa-DMT.INC' c c Tong luu luong den cua toan chuoi Nnam (m3) c W_Den = 0.0 Inam = 1,Nnam jj = 1,12 ii = (Inam - 1)*12 + jj W_Den = W_Den + Qden(ii)*(Z_Time(ii) - Z_Time(ii - 1)) enddo enddo c c Tinh luu luong Q(m3/s) trung binh thang c Q0 = W_Den / Z_Time(Nthang) c print *, 'Q0=',Q0 c pause c c Tính gia tri luy tich toa xien thang 10^6 m3 :W_BacThang(0:Nthang,Niveaux) c ii = 0,Nthang jj = 1,Niv W_BacThang(ii,jj) =0 enddo enddo c c Tam cho de tinh duong luy tich toa xien, gia tri dung cho c trang thai ban dau se gan lai sau c W_BacThang(0, 1) =0 jj =2,Niv W_BacThang(0,jj) = W_BacThang(0,(jj-1)) - W_Gia(jj-1) enddo c Inam = 1,Nnam jn = 1,12 ii = (Inam - 1)*12 + jn c c Tai thoi diem thang ii cho dung luy tich xien co ban c W_BacThang(ii, 1) = W_BacThang((ii-1), 1) + (Qden(ii) - Q0)* * (Z_Time(ii) - Z_Time(ii - 1)) c c Tinh cho toan bo bac thang cung thoi diem ii cho cac duong luy tich bo tro c jj=2,Niv W_BacThang(ii,jj) = W_BacThang(ii,(jj-1)) - W_Gia(jj-1) enddo c enddo ! jn enddo ! Inam c c Xuat gia tri duong luy tich toa xien c c ii=1,3 c print *, 'W_BacThang(ii,',ii,')',W_BacThang(1,ii), ' tr.m3' c enddo c pause c c c Tinh boc hoi va tham qua dap c jstep=1 istep =0,(Nthang-1) mois =mod(istep,12)+1 kstep =Nut_Opt_ke(istep,jstep) c Q_BocHoi(istep+1) =1000* * (Table_Opt(istep+1,jstep,5))* * BocHoi(mois)/Tgiay(mois) c Q_ThamThanDap(istep+1)=Q_dap c jstep =kstep enddo c c Tinh tham qua long ho c jstep=1 if(Itham.eq.1) then istep =0,Nthang-1 mois =mod(istep,12)+1 kstep =Nut_Opt_ke(istep,jstep) c Q_ThamLongHo(istep+1) =(1.E+6)*TyleTham* * (Table_Opt(istep+1,jstep,3)) * /Tgiay(mois) c jstep =kstep enddo else !TINH TON THAT THAM THEO CHIEU DAY LOP NUOC TRONG NAM istep =0,Nthang-1 mois =mod(istep,12)+1 kstep =Nut_Opt_ke(istep,jstep) c Q_ThamLongHo(istep+1) =XLopNuoc* * (Table_Opt(istep+1,jstep,5)) * /(3.65*8.64) c jstep =kstep enddo endif endif c c Xac dinh lai Qden sau da loai cac Q ton that c if(Loop.le.2) then ii =1,Nthang Qden(ii) = Qden(ii) - Qconst * (Q_BocHoi(ii)+Q_ThamLongHo(ii)+Q_ThamThanDap(ii)) enddo else endif c c Tinh Q0 c Wtn_sum =0 ii = 1,Nthang Wtn_sum = Wtn_sum + Qden(ii)*(Z_Time(ii) - Z_Time(ii - 1)) enddo c - Trang 70 - c jj=1,3 c print *, 'W_BacThang(2',jj,')',W_BacThang(2,jj), ' tr.m3' c enddo c pause c ii=Nthang-2,Nthang c print *, 'W_BacThang(',ii,',1)',W_BacThang(ii,1), ' tr.m3' enddo c ii=0,3 c print *, 'W_BacThang(',ii,',Niv)',W_BacThang(ii,Niv),'tr.m3' enddo ii=Nthang-2,Nthang c print *, 'W_BacThang(',ii,',Niv)',W_BacThang(ii,Niv),'tr.m3' enddo c pause c c Vi tri dau va cuoi dieu tiet c jj =1,Niv W_BacThang(0,jj) = -W_BanDau W_BacThang(Nthang,jj) = -W_BanDau enddo c print *, 'W_BanDau',W_BanDau c pause write(104,*) 'Mang W_BacThang' jj =1,Niv write(104,10000) (W_BacThang(ii,jj),ii=0,Nthang) enddo 10000 format(25f10.2) if(istep.eq.(Nthang - 1)) Niv_K =1 tai cuoi chu ky GIONG NHAU if(istep.eq.0) Niv_J =1 PHAT tai DAU chu ky GIONG NHAU - Trang 71 - ! THANG diem XUAT c write(104,*) 'Istep=',istep Do jstep = 1,Niv_J write(104,*) 'Jstep=',jstep Do kstep = 1,Niv_K ngon den ! Co Niveaux vi tri goc di ! Co Niveaux vi tri c CALL PROFIT_LINE(Npa,Pro,Profit_Dien,Profit_NNghiep, * Ithang,Qttoan,Zho,Who,Fho,Hdhinh,Htthat, * Httoan,Csuat,E_Mois,Q_NNghiep,istep,jstep,kstep) c c if(Max_Energie.eq.1) then ! Maximum nang luong Value_Opt =E_Mois + Func_Opt(istep+1,kstep) Value_Opt =Profit_Dien + Func_Opt(istep+1,kstep) c elseif(Max_Profit.eq.1) then! Maximum doanh thu ban dien Value_Opt =Pro + Func_Opt(istep+1,kstep) else print *, 'Xem lai chon H M Tieu' stop endif c if(Value_Opt.ge.Func_Opt(istep,jstep)) then thong so ung voi tia toi uu ! Luu lai cac c Func_Opt(istep,jstep) =Value_Opt Nut_Opt_ke(istep,jstep) =kstep istep,bac thang jstep Qnnghiep(istep+1) =Q_NNghiep dung nong nghiep tia toi uu c return end c -c SUBROUTINE DYNA_PROGRAM(Npa,Loop) c INCLUDE 'SonLa-DMT.INC' c Do ii = 0,Nthang Do jj = 1,Niv Nut_Opt_ke(ii,jj) = Func_Opt(ii,jj) = 0.0 end end c Do jj = 1,Niv Nut_Opt_ke(Nthang-1,jj) = Niv_Init ! Diem den cua cuoi chu ky dieu tiet end c c Gan gia tri Mang Profit c Do ii = 1,Nthang Do jj = 1,Niv Do kk = 1,20 Table_Opt(ii,jj,kk) = 0.0 enddo enddo enddo c Value_Opt =0.0 c c** TIM DINH TOI UU ********* c Do istep = (Nthang - 1),0 ,-1 ! Goc Vong lap QHD (1) Ithang =mod(istep,12)+1 c print *, 'Istep Ithang', istep, Ithang Niv_J =Niv Niv_K =Niv c ! THANG diem DEN ! Gia tri HMT ! Tai hoanh ! Luu luong c Table_Opt(istep+1,jstep,1) = Qden_tn(istep+1) Table_Opt(istep+1,jstep,2) = Qttoan Table_Opt(istep+1,jstep,3) = Who Table_Opt(istep+1,jstep,4) = Zho Table_Opt(istep+1,jstep,5) = Fho Table_Opt(istep+1,jstep,6) = Hdhinh Table_Opt(istep+1,jstep,7) = Htthat Table_Opt(istep+1,jstep,8) = Httoan Table_Opt(istep+1,jstep,9) = Csuat Table_Opt(istep+1,jstep,10) = E_Mois Table_Opt(istep+1,jstep,11) = Pro Table_Opt(istep+1,jstep,12) = Profit_Dien ! Thu nhap tu DIEN Table_Opt(istep+1,jstep,13) = Profit_NNghiep ! Thu nhap tu DIEN else endif enddo ! Ket thuc kstep (Diem den tia dieu tiet) c c print *,'Istep Jstep E',istep,jstep,Table_Opt(istep+1,jstep,8) c print *, 'Kstep=',Nut_Opt_ke(istep,jstep) c pause enddo ! Ket thuc jstep (2) CALL VERIFI(istep,jstep) enddo ! Ket thuc Vong lap QHD (1) c c Gia tri doanh thu trung binh nam c Func =Func_Opt(0,1)/Nnam c if(Max_Energie.eq.1) then print *, 'Bai toan Max DOANH THU TU DIEN ==> ' print *, 'GIA TRI TOI UU / Year = Func_Opt(0,1)/Nnam', *Func, '(ty VND/Year)' elseif(Max_Profit.eq.1) then print *, 'Bai toan Max DOANH THU TU (DIEN + NONG NGHIEP)==>' print *, 'GIA TRI TOI UU / Year = Func_Opt(0,1)/Nnam', *Func, '(ty VND/Year)' else endif c pause c 10000 format(i5,f12.3,i5) return end c -c SUBROUTINE PROFIT_LINE(Npa,Pro,Profit_Dien,Profit_NNghiep,Ithang, * Qttoan,Zho,Who,Fho,Hdhinh,Htthat, * Httoan,Csuat,E_Mois,Q_NNghiep,istep,jstep,kstep) c c Tim gia tri thu duoc Pro cho phuong an vi tri bat dau tu istep, jstep voi cac kstep c INCLUDE 'SonLa-DMT.INC' c c Xac dinh luu luong tia dieu tiet ==> Qttoan c CALL Q_POLAIR(istep,jstep,kstep,Q_Xien,Qttoan) c c print *, 'Q_Xien =',Q_Xien c print *, 'Qttoan =',Qttoan c pause CALL H_TonThat(Qttoan ,dh) c print *, 'dh= ',dh c pause CALL H_TinhToan(Qttoan,dh,istep,jstep,kstep, * Hdhinh,Httoan,Zho,Who,Fho) ! Xac dinh cot nuoc tinh toan Htt c print *, 'Httoan',Httoan c print *, 'istep=',istep c print *, 'jstep=',jstep c print *, 'kstep=',kstep c print *, 'Qttoan=',Qttoan c pause c c pause CALL ENERGIE(Qttoan,Httoan,Ithang,Npa,Csuat,E_Mois, * jstep,kstep) ! Xac dinh Nang luong c print *, 'E_Mois',E_Mois c pause c CALL PROFIT(Pro,Profit_Dien,Profit_NNghiep,E_Mois,Qttoan, *Ithang,Npa,Q_NNghiep) ! Xac dinh Doanh thu Thang c print *, 'Pro',Pro,'ty VND' c pause c c Loai bo truong hop tia dieu tiet co Qttoan Ho Can c jstep = Niv or kstep = Niv (Tren duong Bo tro) ==> Ho Day Pro =Penal Profit_Dien =Penal Profit_NNghiep =Penal E_Mois =Penal go to 100 else endif c pause c 100 return end c c -c SUBROUTINE Q_POLAIR(istep,jstep,kstep,Q_Xien,Qttoan) c INCLUDE 'SonLa-DMT.INC' c c Tinh Q toa xien cua cac phuong an tia luu luong c Q_Xien= (W_BacThang(istep+1,kstep)* W_BacThang(istep,jstep) )/ * (Z_Time(istep+1)-Z_Time(istep)) c Qttoan =Q_Xien+Q0 c c if(Qttoan.gt.Qmax) then c Qttoan =Qmax ! khong che l/l MAX qua tuabin c else c endif c return end c -c SUBROUTINE H_TonThat(Q1,dh) c INCLUDE 'SonLa-DMT.INC' c c dh =0 Q2 =min(Q1,Qmax) Q2 =max(Q2,0.) c if(I_dh.eq.0) then CALL H_TonThat_1_75(Q2,dh) ! tinh theo luu luong TB elseif(I_dh.eq.2) then CALL TonThat_TraBang(Q2,dh) else print *, 'Chua dinh nghia I_dh USER' stop endif c return end c -c SUBROUTINE H_TonThat_1_75(Q1,dh) c c Tinh ton that nang luong duong dai va mat nang cuc bo theo c Quy pham QT TL C 1-75 c INCLUDE 'SonLa-DMT.INC' c if(Q1.le.0) then dh =0.0 else c Q2 =Q1 if(Q2.gt.Qmax) Q2 =Qmax Ray_ham =Q2/3.14159/xnu_nuoc/D_ham Ray_Apluc =Q2/3.14159/xnu_nuoc/D_ApLuc c print *, 'Reynolds_ham=',Ray_ham c c Tinh xlamda1 che chay ham c if(Ray_ham.ge.XRe_kb) then xlamda1 =(1./(4*Log10(D_ham/4./X_Delta1)+4.25))**2 elseif(Ray_ham.ge.XRe_nh.and.Ray_ham.le.XRe_kb) then xlamda1 =(1./(4*Log10(D_ham/4./X_Delta1)+5.75))**2 else xlamda1 =0.056/Ray_ham**0.25 endif c c Tinh xlamda2 che chay penstock c if(Ray_Apluc.ge.XRe_1) then xlamda2 =phi1*(1./(4*Log10(D_ApLuc/4./X_Delta2)+5.48))**2 else xlamda2 =phi1*0.056/Ray_Apluc**0.25 endif c c Ton that duong dai duong ham va penstock c dai_ham =4.*xlamda1*L_Ham/D_ham dai_penstock =4.*xlamda2*L_ApLuc/D_ApLuc c c print *, 'dai_ham=',dai_ham c print *, 'dai_penstock',dai_penstock c dh_dai = dai_ham*(4.*Q2/3.14159/D_Ham**2)**2/2./9.81 + dai_penstock*(4.*Q2/3.14159/D_ApLuc**2)**2/2./9.81 c c Ton that cuc bo c cucbo_luoi =1.67*(0.01/0.1)**1.3333 cucbo_cuavao =0.2 cucbo_khephai =0.2 cucbo_gieng =0.2 gap_D =(D_ApLuc/D_ham)**2 epsi =0.57+0.0432/(1.1-gap_D) cucbo_thuhepdan=0.4*(1./epsi - 1)**2 cucbo_vannhanh =0.15 c dh_cucbo = (cucbo_luoi+cucbo_cuavao+cucbo_khephai+ cucbo_gieng+cucbo_thuhepdan+cucbo_vannhanh)* (4.*Q2/3.14159/D_Ham**2)**2/2./9.81 c c print *, 'dh_dai, dh_cucbo=',dh_dai,dh_cucbo c pause c dh =dh_dai + dh_cucbo endif c return end - Trang 73 - c -c SUBROUTINE TonThat_TraBang(Q1,dh) c c Tinh dh tu bang tra mat nang lap san c Q_dh_Ham(ii,1) > Luu luong Q c Q_dh_Ham(ii,2) > dh tuong ung Q c INCLUDE 'SonLa-DMT.INC' c Q2 =min(Q1,Qmax) c c c ii =1,N_Thang_Q_dh c print *, '** Q_dh_Ham(ii,1&2)=',Q_dh_Ham(ii,1),Q_dh_Ham(ii,2) c enddo c pause c print *, 'Q_dh_Ham(ii,1)=',Q_dh_Ham(N_Thang_Q_dh,1) c pause c c Ton that duong ham - Noi suy tuyen tinh c ii =2,N_Thang_Q_dh Qx =Q_dh_Ham(ii,1) if(Qx.ge.Q2) then gia_dh =Q_dh_Ham(ii,2)-Q_dh_Ham(ii-1,2) gia_dQ =Q_dh_Ham(ii,1)-Q_dh_Ham(ii-1,1) dQ =Q2 - Q_dh_Ham(ii-1,1) dh_ham = Q_dh_Ham(ii-1,2) * + dQ*gia_dh/gia_dQ c print *, 'Q2 - Qthuc=',Q2 c print *, 'Qx=',Qx c print *, 'ii=',ii,'gia_dQ=',gia_dQ,'gia_dh=',gia_dh,'dQ=',dQ go to 10 else endif enddo print *, 'Q2=',Q2,'vuot qua Qmax Q_dh_Ham(ii,1)' print *, 'Q_dh_Ham(ii,1) =',Q_dh_Ham(N_Thang_Q_dh,1) stop 10 continue c c Ton that duong ong ap luc - Noi suy tuyen tinh c ii =2,N_Thang_Q_dh Qx =Q_dh_ApLuc(ii,1) if(Qx.ge.Q2) then gia_dh =Q_dh_ApLuc(ii,2)-Q_dh_ApLuc(ii-1,2) gia_dQ =Q_dh_ApLuc(ii,1)-Q_dh_ApLuc(ii-1,1) dQ =Q2 - Q_dh_ApLuc(ii-1,1) dh_ApLuc = Q_dh_ApLuc(ii-1,2) * + dQ*gia_dh/gia_dQ go to 20 else endif enddo print *, 'Q2=',Q2,'vuot qua Qmax Q_dh_ApLuc(ii,1)' stop 20 continue c dh =dh_ham + dh_ApLuc c c print *, 'Q= ',Q2,'dh= ',dh c pause return end c -c SUBROUTINE H_TinhToan(Qttoan,dh,istep,jstep,kstep, * Hdhinh,Httoan,Zho,Who,Fho) c c Tinh cot nuoc hieu ich phat dien c INCLUDE 'SonLa-DMT.INC' c js =jstep ks =kstep if(istep.eq.0) js =Niv_Init if(istep.eq.(Nthang-1)) ks =Niv_Init it = istep+1 c Qplus =min(Qttoan,Qmax) Qplus =max(Qplus,0.) c Zho =0.5*(Z_Niveaux(js)+Z_Niveaux(ks)) c Hdhinh =Zho - Z_MNTBSauNM Hdhinh =Zho - Z_NhaMayT(Qplus,it) Httoan =Hdhinh - dh Who =W_FROM_Z(Zho) Fho =F_FROM_Z(Zho) c return end c c -c Function Z_NhaMayT(Q,it) c c Tính muc nuoc sau NM theo Q c INCLUDE 'SonLa-DMT.INC' c if(Z_NM_true.eq.0) then ! Muc nuoc sau NM khong doi c Z_NhaMayT = Z_MNTBSauNM Zhaluu(it) = Z_NhaMayT go to 100 c elseif(Z_NM_true.eq.1) then c ii =2,N_Echelle if(Q_NM(ii).ge.Q) then Z_NhaMayT =Z_NM(ii-1) + (Z_NM(ii)-Z_NM(ii-1))* * (Q-Q_NM(ii-1))/(Q_NM(ii)-Q_NM(ii1)) Zhaluu(it) =Z_NhaMayT go to 100 else endif enddo c print *, 'Khong xac dinh duoc Z_NhaMayT' print *, 'Kiem tra lai file nhap lieu Q=f(Z) sau NM' stop else endif c 100 continue c return end c c -c SUBROUTINE ENERGIE(Qttoan,Httoan,Ithang,Npa,Csuat,E_Mois, * jstep,kstep) c c Xac dinh cac thong so lien quan den Dien & doanh thu tu dien (Profit_Dien) c INCLUDE 'SonLa-DMT.INC' c Qtt =Qttoan if(Qtt.le.0.) Qtt =0 - Trang 74 - if(Qtt.gt.Qmax) Qtt =Qmax c c Kiem tra de loai truong hop Q dong chay lon tao N lon hon c X_LapMay va phai xa thua ma cuoi thang MN ho van chua den MNDBT c c N_dongchay =eta1*eta2*9.81*Qtt*Httoan/10**3 c if(N_dongchay.gt.X_LapMay) then c if(kstep.ne.Niv) then ! Niveaux cho ho co MNDBT c Pro =Penal c Qttoan =Qtt c Httoan =Httoan c Csuat =X_LapMay c E_Mois =Penal c go to 100 c else c endif c else c endif c c Csuat =eta1*eta2*9.81*Qtt*Httoan/10**3 c Csuat =amax1(Csuat,0.) c print *, 'Puissance',Csuat,' (MW)' c pause if(Csuat.ge.X_LapMay) then Csuat = X_LapMay Qttoan =1000.0*X_LapMay/(9.81*eta1*eta2*Httoan) c Qttoan =min(Qttoan,Qmax) c Csuat =eta1*eta2*9.81*Qttoan*Httoan/10**3 else endif E_Mois =Csuat*Tgiay(Ithang)/1000./3600 c c Profit_Dien =10**6*E_Mois*GiaDien(Npa,Ithang)*TySuat/1.0E+9 ! (ty VND/thang) c c if(Csuat.eq.0.) E_Mois =Penal c print *, 'NangLuong',E_mois, ' (tr.kWh)' c pause c 100 return end c c -c SUBROUTINE PROFIT(Pro,Profit_Dien,Profit_NNghiep,E_Mois,Qttoan, *Ithang,Npa,Q_NNghiep) c INCLUDE 'SonLa-DMT.INC' c Qtt = Qttoan if(Qtt.le.0.) Qtt =0 c c Tinh dong thu Pro (ty VND) cua thang thu Ithang c c print *, 'GiaDien(Npa,Ithang)',GiaDien(Npa,Ithang) c pause c c Luu luong nuoc dung cho nong nghiep vao chuoi thang thu : Nthang ==> c Q_NNghiep =min(Qtuoi(Ithang),Qtt) c t1 =1.0E+6*E_Mois*GiaDien(Npa,Ithang)*TySuat/1.0E+9 ! tien DIEN t2 =Q_NNghiep*Tgiay(Ithang)*DonGiaNuoc(Ithang)/1.0E+9 ! tien NUOC Nghiep c Profit_Dien = t1 Profit_NNghiep = t2 c Pro = t1 + t2 c c c c c c c c if(t2.gt.0.) then print *, 'Q_NNghiep=',Q_NNghiep, *'DonGiaNuoc(Ithang)=',DonGiaNuoc(Ithang),'t2=',t2 stop else endif return end c c -c SUBROUTINE TIADIEUTIET c c Xac dinh duong dieu tiet W_Xien_DieuTiet(0:Nthang) c INCLUDE 'SonLa-DMT.INC' c Nut_Dau =1 W_Xien_DieuTiet(0) = -W_BanDau ii=1,(Nthang-1) Nut_Cuoi = Nut_Opt_ke(ii-1, Nut_Dau) c print *, 'istep jstep kstep',(ii-1),Nut_Dau ,Nut_Cuoi W_Xien_DieuTiet(ii) =W_BacThang(ii,Nut_Cuoi) Nut_Dau =Nut_Cuoi enddo W_Xien_DieuTiet(Nthang) = -W_BanDau c c return end c -c SUBROUTINE STAT use dflib c INCLUDE 'SonLa-DMT.INC' dimension Q_nhamay(Nthang) dimension CongSuat(Nthang) c Q_nhamay_min = +1.E+15 Q_nhamay_sum =0 Htb_sum =0 jstep=1 istep =0,Nthang-1 kstep =Nut_Opt_ke(istep,jstep) Htb_sum =Htb_sum + Table_Opt(istep+1,jstep,8) Q_nhamay(istep+1) = Table_Opt(istep+1,jstep,2) Q_nhamay_sum =Q_nhamay_sum + Table_Opt(istep+1,jstep,2) CongSuat(istep+1) = Table_Opt(istep+1,jstep,9) c c Kien tra Q qua Nha May phai lon hon Q yeu cau cua TuaBin c c if(Q_nhamay(istep+1).lt.Q_nhamay_min) c * Q_nhamay_min =Q_nhamay(istep+1) c jstep =kstep enddo Wxa =1.0 - (Q_nhamay_sum/Nthang)/Q0_tn ! tinh ty le xa thua Htb = Htb_sum/Nthang Htt = 0.925*Htb c Qmax =1000*X_LapMay/9.81/Htt/eta1/eta2 c QminTuaBin = 0.3*1000*0.5*X_LapMay/(9.81*Htt*eta1*eta2) c c if(Q_nhamay_min.le.QminTuaBin) then c print *, 'Kiem tra Q dieu tiet qua Nha May < Q Tua Bin c * -> SUBROUTINE STAT ' c stop c else - Trang 75 - c endif c print *, 'Htt=',Htt c pause c CALL sortqq(loc(Q_nhamay),Nthang,srt$real4) CALL sortqq(loc(CongSuat),Nthang,srt$real4) c ii =1,Nthang s =100.*(ii-0.3)/(Nthang+0.4) if(s.ge.(100.-Pr_Ndambao)) then X_Ndb90 = CongSuat(ii) Qdb90 = Q_nhamay(ii) c print *, 'Ndb p=',Pr_Ndambao,'%=',X_Ndb90,'MW' c pause go to 100 else endif enddo c 100 return end c -c SUBROUTINE VERIFI(istep,jstep) c INCLUDE 'SonLa-DMT.INC' logical blocque c c Kiem tra dieu kien la tai moi vi tri hoanh (istep) c tat ca tia xuat phat tu (istep) deu bi Blocque (Penal) c c blocque =.true jj =1,Niv if(Func_Opt(istep,jj).ge.0.) then blocque =.false go to 100 else endif enddo print *, 'BLOCQUE tai Istep=',istep stop 100 return end c -c SUBROUTINE RESULT1(Npa) c INCLUDE 'SonLa-DMT.INC' c W_BacThang(0, 1) =0 W_BacThang(Nthang, 1) =0 c jj =2,Niv W_BacThang(0,jj) = W_BacThang(0,jj-1) - W_Gia(jj-1) W_BacThang(Nthang,jj) = W_BacThang(Nthang,jj-1) W_Gia(jj-1) enddo c c c write(103,10006) Npa write(103,10007) Etb =0 Ekho =0 Emua =0 ThuNhap =0 ThuNhap_Dien =0 ThuNhap_NNghiep =0 c jstep=1 istep =0,(Nthang-1) mois =mod(istep,12)+1 c c c c c c c c c kstep =Nut_Opt_ke(istep,jstep) c if(kstep.eq.0) then print *, 'kstep=',kstep print *, 'jstep=',jstep print *, 'istep=',istep c stop else endif c c js =jstep ks =kstep c if(istep.eq.0) js =Niv_Init if(istep.eq.Nthang-1) ks =Niv_Init c Zdauthang =Z_Niveaux(js) Zcuoithang =Z_Niveaux(ks) Wdauthang =W_FROM_Z(Zdauthang) Wcuoithang =W_FROM_Z(Zcuoithang) c write(103,10008) (istep+1), * Table_Opt(istep+1,jstep,1), * Q_BocHoi(istep+1), * Q_ThamLongHo(istep+1)+Q_ThamThanDap(istep+1), * Qconst, * Qxathua(istep+1), * Table_Opt(istep+1,jstep,2), * (Qden(istep+1)- Qxathua(istep+1) * Table_Opt(istep+1,jstep,2)), * Wdauthang, * Wcuoithang, * 0.5*(Wdauthang+Wcuoithang), * Table_Opt(istep+1,jstep,4), * Table_Opt(istep+1,jstep,5), * Zhaluu(istep+1), * Table_Opt(istep+1,jstep,6), * Table_Opt(istep+1,jstep,7), * Table_Opt(istep+1,jstep,8), * Table_Opt(istep+1,jstep,9), * Table_Opt(istep+1,jstep,10), * Qden(istep+1), * Qnnghiep(istep+1) c Etb =Etb + Table_Opt(istep+1,jstep,10) c ThuNhap =ThuNhap + Table_Opt(istep+1,jstep,11) c ThuNhap_Dien =ThuNhap_Dien + Table_Opt(istep+1,jstep,12) c ThuNhap_NNghiep =ThuNhap_NNghiep + Table_Opt(istep+1,jstep,13) c c if((mois.ge.Mua_BatDau).and.(mois.le.Mua_KetThuc)) then Emua =Emua + Table_Opt(istep+1,jstep,10) else Ekho =Ekho + Table_Opt(istep+1,jstep,10) endif c jstep =kstep c enddo ! istep c Etb =Etb/Nnam ThuNhap_Dien =ThuNhap_Dien/Nnam ThuNhap_NNghiep=ThuNhap_NNghiep/Nnam ThuNhap =ThuNhap/Nnam Ekho =Ekho/Nnam Emua =Emua/Nnam print *, 'Nang luong TB nam', Etb, ' tr.kWh' print *, 'Nang luong mua kho Ekho', Ekho, ' tr.kWh' print *, 'Nang luong mua mua', Emua, ' tr.kWh' if(Max_Profit.eq.1) then print *, 'Loi nhuan TB nam', Pro, ' ty VND' else endif write(103,*) '' write(103,9999) write(103,*) '' write(103,10003) Z_MNDBT,Z_MNC,W_MNDBT,W_HuuIch,W_MNC,100*beta, *100*Wxa,Qdb90,Qmax,QminTuaBin,Htb,Htt,X_Ndb90,X_LapMay , *8.76*X_Ndb90,Etb,Ekho,Emua,Z_NhaMay,Nnam, *D_Ham,L_Ham,D_ApLuc,L_ApLuc,ThuNhap,ThuNhap_Dien,Thu Nhap_NNghiep c c write(103,*) '' write(103,*) '' write(103,10001) jstep=1 ii =0,(Nthang-1) c kstep =Nut_Opt_ke(ii,jstep) js =jstep c if(ii.eq.0.or.ii.eq.Nthang) js =Niv_Init Zhochua =Z_Niveaux(js) c write(103,10002) ii,W_BacThang(ii,1),W_BacThang(ii,Niv), * W_Xien_DieuTiet(ii),Zhochua jstep =kstep enddo c c Xuat bo sung so lieu tai vi tri cuoi chuoi Nthang c write(103,10002) Nthang,W_BacThang(Nthang,1), * W_BacThang(Nthang,Niv), * W_Xien_DieuTiet(Nthang),Z_Niveaux(Niv_Init) c c print *, 'W_BanDau=',W_BanDau c print *, 'W_Xien_DieuTiet(0)',W_Xien_DieuTiet(0) c print *, 'W_Xien_DieuTiet(Nthang)',W_Xien_DieuTiet(Nthang) c pause c 10001 format('Mois W_LTICH(1)WBTRO(Niv)W_Xien(ii) Zho ') 10002 format(i5,4f10.2) c 9999 format('***') 10003 format('MNDBT',/,5x,f10.2,/,'MNC',/,5x,f10.2,/, *'W_MND',/,5x,f10.2,/,'W_Ich',/,5x,f10.2,/,'WCHET',/,5x,f10.2,/, *'Beta',/,5x,f10.2,/,'Xthua',/,5x,f10.2,/, *'Qdb90',/,5x,f10.2,/,'Qmax',/,5x,f10.2,/, *'Qmin',/,5x,f10.2,/,'Htb',/,5x,f10.2,/, *'Htt',/,5x,f10.2,/,'Ndb90',/,5x,f10.2,/, *'Nlm',/,5x,f10.2,/,'Edb90',/,5x,f10.2,/, *'Etb',/,5x,f10.2,/,'Ekho',/,5x,f10.2,/, *'Emua',/,5x,f10.2,/,'MNHL',/,5x,f10.2,/,'Nnam',/,5x,i10 *,/,'D_Ham',/,5x,f10.2,/,'L_Ham',/,5x,f10.2,/,'D_AL',/,5x,f10.2 *,/,'L_AL',/,5x,f10.2,/,'TNhap',/,5x,f10.2,/,'TNhap_Dien',/,5x, *f10.2,/,'TNhap_Nnghiep',/,5x,f10.2) c 10004 format('Mois',1x,'Nut_Opt_ke(istep,Nut_Dau)') 10005 format('ISTEP=',i5,' NUT_OPT_KE=',i5) 10006 format('P/AN GIA Npa =',i5) 10007 format(//,'Thang Qtn Qbhoi Qtham Qconst Qxa * *Q_dieutiet Wdau Wcuoi Wtb Ztb Ftb Zhluu * Hdh Qm dh Htt CSuat E * - Trang 76 - * Qden Qnnghiep') 10008 format(i5,25f10.2) 10009 format(25f10.2) c return end c -SUBROUTINE XATHUA c INCLUDE 'SonLa-DMT.INC' c jstep=1 istep =0,Nthang-1 mois =mod(istep,12)+1 kstep =Nut_Opt_ke(istep,jstep) c if(Table_Opt(istep+1,jstep,9).ge.X_LapMay) then ! chi tinh xa thua >=X_LapMay Wcuoi =W_BacThang(istep+1,kstep) Wdau =W_BacThang(istep,jstep) Wvaoho =Qden(istep+1)*Tgiay(mois) Wraho =Table_Opt(istep+1,jstep,2)*Tgiay(mois) c Qthua =((Wvaoho - Wraho) - (Wcuoi - Wdau))/Tgiay(mois) Qxathua(istep+1) =max(0.0,Qthua) else endif c jstep =kstep enddo c return end c -SUBROUTINE RESULT2(Npa) c INCLUDE 'SonLa-DMT.INC' c Xuat cac thong so co ban cua phuong an print *, '' print *, 'Xuat gia tri tu SUBROUTINE RESULT2(Npa)' c print *, '' - Trang 77 - print *, 'MNDBT =', Z_MNDBT, 'm' print *, 'MNC =', Z_MNC, 'm' print *, 'W_MNDBT =', W_MNDBT, 'tr.m3' print *, 'W_MNC =', W_MNC, 'tr.m3' print *, 'W_HuuIch =', W_HuuIch, 'tr.m3' print *, 'Beta ho =', 100*beta, '%' print *, 'Ty le xa thua =', 100*Wxa, '%' print *, 'Qdb 90% =', Qdb90, 'm3/s' print *, 'Htb =', Htb, 'm' print *, 'Htt =', Htt, 'm' print *, 'Ndb 90% =', X_Ndb90, 'MW' print *, 'Nlm =', X_LapMay, 'MW' print *, 'Edb 90% =', 8.76*X_Ndb90,'tr.kWh' print *, 'Ekho =', Ekho, 'tr.kWh' print *, 'Emua =', Emua, 'tr.kWh' print *, '' print *, 'Qmax =',Qmax,'m3/s' print *, '' print *, 'Qdieu tiet Min =', Qmin, 'm3/s' print *, ' ' print *, 'Dien nang TB nam Etb =',Etb,'(tr.kWh)' print *, ' ' print *, 'ThuNhap_Dien =',ThuNhap_Dien,'(ty VND/nam)' print *, ' ' print *, 'ThuNhap_NNghiep =',ThuNhap_NNghiep,'(ty VND/nam)' print *, ' ' if(Max_Profit.eq.1) then print *, 'Loai HMT ==> Max DOANH THU TU (DIEN+NONG NGHIEP)' print *, 'Max HMT (ThuNhap) =',ThuNhap,'(ty VND/nam)' elseif(Max_Energie.eq.1) then print *, 'Loai HMT ==> Max DOANH THU TU DIEN' print *, 'Max HMT (ThuNhap) =',ThuNhap,'(ty VND/nam)' endif c jj = 1,Niv c print *, 'jj=',jj,'Func_Opt(0, jj)/Nnam=',Func_Opt(0, jj)/Nnam c end c pause return end c - TÓM TẮT LÝ LỊCH KHOA HỌC HỌ VÀ TÊN : LÊ ĐỨC THƯỜNG SINH NGÀY : 29-04-1980 NƠI SINH : PHÚ YÊN ĐỊA CHỈ LIÊN LẠC : 87 LÊ TRUNG KIÊN, PHƯỜNG 2, TP TUY HỒ, PHÚ N NƠI CƠNG TÁC : TRƯỜNG ĐẠI HỌC XÂY DỰNG MIỀN TRUNG – 24 NGUYỄN DU, PHƯỜNG 7, TP TUY HOÀ, PHÚ YÊN ĐIỆN THOẠI LIÊN LẠC: 01226550079 – 057 3501880 QUÁ TRÌNH ĐÀO TẠO 09/1998 ÷ 03/2003 : HỌC ĐẠI HỌC TẠI TRƯỜNG ĐẠI HỌC BÁCH KHOA TPHCM – KHOA KỸ THUẬT XÂY DỰNG 09/2010 ÷ 09/2011 : HỌC VIÊN CAO HỌC TRƯỜNG ĐẠI HỌC BÁCH KHOA – CHUYÊN NGÀNH XÂY DỰNG CÔNG TRÌNH THUỶ Q TRÌNH CƠNG TÁC 04/2003 ÷ 01/2005 : KHOA XÂY DỰNG, TRƯỜNG CAO ĐẲNG XÂY DỰNG SỐ – BỘ XÂY DỰNG ( NAY LÀ TRƯỜNG ĐẠI HỌC XÂY DỰNG MIỀN TRUNG) 02/2005 ÷ 09/2006 : TIỂU ĐỒN 3, LỮ ĐỒN PPK 573, QN KHU 10/2006 ÷ 07/2011 : KHOA KTHTĐT, TRƯỜNG CAO ĐẲNG XÂY DỰNG SỐ – BỘ XÂY DỰNG ( NAY LÀ TRƯỜNG ĐẠI HỌC XÂY DỰNG MIỀN TRUNG) 08/2011 ĐẾN NAY : KHOA KTHTĐT, TRƯỜNG ĐẠI HỌC XÂY DỰNG MIỀN TRUNG – BỘ XÂY DỰNG -XW - ... MƠ HÌNH TỐN HỌC GIẢI BÀI TỐN TỐI ƯU TRONG VẬN HÀNH HỒ CHỨA ĐA MỤC TIÊU 4.1 NGUYÊN TẮC CHUNG XÁC ĐỊNH CHẾ ĐỘ VẬN HÀNH TỐI ƯU HỒ CHỨA ĐA MỤC TIÊU Vận hành tối ưu hồ chứa vấn đề phức tạp, nguyên... tự động hóa tính tốn thủy hồ chứa đa mục tiêu (tưới, phát điện) giải toán tối ưu vận hành Phân tích hiệu ích tài dự án nhà máy thủy điện Sơn La 1.3.2 Phương pháp phạm vi nghiên cứu: Quy hoạch động. .. TIẾT HỒ CHỨA THUỶ ĐIỆN SƠN LA 6.1 TỔNG QUAN DỰ ÁN THUỶ ĐIỆN SƠN LA * Tên dự án: Dự án thuỷ điện Sơn La * Các dự án thành phần: a Dự án xây dựng cơng trình thủy điện Sơn La Tổng cơng ty Điện lực