Ứng dụng giải thuật di truyền vào tối ưu chi phí, thời gian và nhân vật lực

131 9 0
Ứng dụng giải thuật di truyền vào tối ưu chi phí, thời gian và nhân vật lực

Đ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 TP.HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐỖ NGỌC KHÁNH ỨNG DỤNG GIẢI THUẬT DI TRUYỀN VÀO TỐI ƯU CHI PHÍ, THỜI GIAN VÀ NHÂN VẬT LỰC CHUYÊN NGÀNH : CÔNG NGHỆ VÀ QUẢN LÝ XÂY DỰNG MÃ NGÀNH : 60.58.90 LUẬN VĂN THẠC SĨ TP.HỒ CHÍ MINH Tháng 6/2008 CƠNG TRÌNH ĐƯỢC HOÀ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: TS Đinh Công Tịnh Cán chấm nhận xét 1:……………………………………… Cán chấm nhận xét 2:……………………………………… Luận văn thạc sĩ bảo vệ HỘI ĐỒNG CHẤM BẢO VỆ LUẬN VĂN THẠC SĨ TRƯỜNG ĐẠI HỌC BÁCH KHOA, ngày …… tháng……năm 2008 TRƯỜNG ĐẠI HỌC BÁCH KHOA PHÒNG ĐÀO TẠO SĐH CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập – Tự – Hạnh phúc TP.HCM, ngày tháng năm 2008 NHIỆM VỤ LUẬN VĂN THẠC SĨ Họ tên: ĐỖ NGỌC KHÁNH Phái: Nam Ngày tháng năm sinh: 10/5/1982 Nơi sinh: Hà Nội Chuyên ngành: Công nghệ quản lý xây dựng MSHV: 00806176 TÊN ĐỀ TÀI: ỨNG DỤNG GIẢI THUẬT DI TRUYỀN VÀO TỐI ƯU CHI PHÍ, THỜI GIAN VÀ NHÂN VẬT LỰC NHIỆM VỤ VÀ NỘI DUNG: Chương 1: Giới thiệu Chương 2: Tổng quan Chương 3: Phương pháp nghiên cứu Chương 4: Mơ hình hóa tốn Chương 5: Giới thiệu chương trình ví dụ minh họa Chương 6: Kết luận kiến nghị NGÀY GIAO NHIỆM VỤ: 16/7/2007 NGÀY HOÀN THÀNH NHIỆM VỤ: 30/6/2008 HỌ VÀ TÊN CÁN BỘ HƯỚNG DẪN: TS ĐINH CÔNG TỊNH Nội dung đề cương luận văn thạc sĩ hội đồng chuyên ngành thông qua CÁN BỘ HƯỚNG DẪN CHỦ NHIỆM BỘ MÔN QUẢN LÝ CHUYÊN NGÀNH TS ĐINH CÔNG TỊNH TS NGÔ QUANG TƯỜNG LỜI CẢM ƠN ! Luận văn tốt nghiệp thành cuối thể nỗ lực cố gắng học viên cao học suốt trình học tập vừa qua Để có ngày hơm nay, cho phép em bày tỏ lịng cảm ơn chân thành đến tồn thể thầy cô giáo Trường ĐH Bách Khoa Tp HCM, đặc biệt thầy cô khoa xây dựng môn thi công Trong suốt thời gian qua thầy tận tình giúp đỡ, truyền đạt cho em kiến thức quý báu, giúp em mở rộng thêm tầm hiểu biết nhằm bắt kịp với xu phát triển chung đất nước giới Cho em gửi lời cảm ơn đến TS Đinh Công Tịnh, người thầy tận tâm bảo, hướng dẫn em q trình làm luận văn để em hồn thành luận văn Những ý kiến đóng góp, hướng dẫn thầy quan trọng góp phần thành công cho luận văn Xin gửi lời biết ơn đến bố mẹ, người thân gia đình bạn bè động viên, cổ vũ tinh thần giúp tơi vượt qua khó khăn suốt q trình học tập, làm việc hồn thành luận văn Xin cảm ơn tất người! Tp Hồ Chí Minh, tháng năm 2008 Đỗ Ngọc Khánh TÓM TẮT Các doanh nghiệp hoạt động lĩnh vực xây dựng hướng đến mục tiêu lợi nhuận Để đạt lợi nhuận cao họ phải đề phương án thi công cho tiết kiệm chi phí phải đáp ứng yêu cầu tiến độ chủ đầu tư đồng thời phải phù hợp với lực thi công họ Luận văn đề xuất phương pháp để giải tốn tối ưu chi phí, thời gian nhân vật lực ứng dụng giải thuật di truyền vào việc tìm kiếm phương án lập tiến độ cho chi phí cực tiểu, thời gian thi công dự án nhỏ đạt biểu đồ phân phối nhân vật lực hợp lý Đồng thời đưa nhiều phương án kế hoạch giúp ta có nhiều lựa chọn phương án phù hợp với người sử dụng ABSTRACT All of the company, operate in contruction field, have a target profit In order to high profit, they must propose the project scheduling, which save cost and satisfy the investor’s progress of project but at the same time it is suitable to their ability This thesis presents a new method to solve the time-cost tradeoff optimal problem with recource-constrained Genetic algorithm model for resource scheduling It search the scheduling so that minimize cost-time of project and distribute resource suitably At the same time the algorithm presents many project scheduling so that we have many choice of the scheduling which is the best siutablity MỤC LỤC Trang Trang bìa Nhiệm vụ Lời cảm ơn Tóm tắt nội dung luận văn Mục lục Chương 1: Giới thiệu 1.1 Giới thiệu 1.2 Đặt vấn đề 1.3 Mục tiêu nghiên cứu 1.4 Phạm nghiên cứu 1.5 Phương pháp nghiên cứu Chương 2: Tổng quan 2.1 Quản lý dự án 2.1.1 Khái niệm dự án xây dựng 2.1.2 Mục tiêu quản lý dự án 2.1.3 Nội dung công tác quản lý dự án 2.1.3.1 Quản lý quy mô dự án 2.1.3.2 Quản lý tiến độ dự án 2.1.3.3 Quản lý chi phí dự án 2.1.3.4 Quản lý chất lượng dự án 2.1.3.5 Quản lý nguồn nhân lực dự án 2.1.3.6 Quản lý thông tin dự án 2.1.3.7 Quản lý rủi ro dự án 2.1.3.8 Quản lý cung ứng dự án 2.2 Quản lý tiến độ dự án 2.2.1 Khái niệm tiến độ xây dựng 2.2.2 Các bước lập tiến độ 2.2.3 Các dạng tiến độ 2.3 Tổng quan phương pháp nghiên cứu quản lý xây dựng 12 2.3.1 Phương pháp quy hoạch toán học 12 2.3.2 Phương pháp mô 13 2.3.3 Thuật giải Heuristics 15 2.3.4 Giải thuật di truyền 17 Chương 3: Phương pháp nghiên cứu 20 3.1 Lý thuyết giải thuật di truyền 20 3.1.1 Giới thiệu 20 3.2 Cơ chế thực giải thuật di truyền 25 3.2.1 Mã hóa (Encoding) 25 3.2.2 Hàm thích nghi (fitness funtion) 26 3.3.3 Chọn lọc cá thể (selection) 27 3.3.3.1 Chọn lọc theo quy tắc bánh xe Roulete (Roulete wheel selection) 27 3.3.3.2 Chọn lọc xếp hạng (Rank selection) 28 3.3.3.3 Chọn lọc cắt (Truncation selection) 29 3.3.4 Lai ghép (crossover) 29 3.3.4.1 Lai ghép điểm (one point crossover) 30 3.3.4.2 Lai ghép nhiều điểm (multipoint crossover) 30 3.3.4.3 Lai ghép (uniform crossover) 31 3.3.5 Đột biến (Mutation) 32 3.3.5.1 Đột biến điểm 32 3.3.5.2 Đột biến nhiều điểm 33 3.2 Lý thuyết sơ đồ mạng 33 3.2.1 Sơ đồ mạng nút (PDM) 33 3.2.1.1 Thể sơ đồ mạng nút 34 3.2.1.2 Đường găng, ý nghĩa đường găng 35 3.2.1.3 Toán học ứng dụng máy tính việc tính tốn sơ đồ mạng 35 3.2.2 Sơ đồ mạng kinh phí 36 3.2.2.1 Các loại phí thi cơng 36 3.2.2.2 Trực tiếp phí thời gian 37 3.2.2 Sơ đồ mạng nhân vật lực 39 3.2.2.1 Sắp xếp công việc theo thời gian nhân vật lực 39 3.2.2.2 Quy tắc ưu tiên 40 Chương 4: Mơ hình hóa toán 42 4.1 Đặt vấn đề 42 4.1.1 Giới thiệu 42 4.1.2 Phát biểu toán 43 4.1.3 Yêu cầu toán 43 4.2 Mơ hình hóa tốn để giải vấn đề 43 4.2.1 Cấu trúc mơ hình tốn 43 4.2.2 Ứng dụng giải thuật di truyền để giải toán 44 4.2.2.1 Thành lập cấu trúc gen 44 4.2.2.2 Hàm mục tiêu 45 4.2.2.3 Các điều kiện ràng buộc 46 4.2.2.4 Cơ chế thực Gas 48 4.2.2.5 Phân phối nhân vật lực hợp lý 56 Chương Giới thiệu chương trình ví dụ minh họa 59 5.1 Giới thiệu chương trình hướng dẫn sử dụng 59 5.2 Ví dụ minh họa 64 5.2.1 Ví dụ 64 5.2.2 Ví dụ 2: áp dụng cho cơng trình thực tế 69 5.3 Nhận xét tính khả thi chương trình 77 Chương 6: Kết luận kiến nghị 78 6.1 Kết luận 78 6.2 Kiến nghị 79 Tài liệu tham khảo 80 Chương 1: Giới thiệu CHƯƠNG GIỚI THIỆU 1.1 GIỚI THIỆU Những năm gần đây, ngành xây dựng có bước phát triển mạnh mẽ Cùng với phát triển kinh tế quốc dân, vị trí ngành xây dựng nghiệp phát triển kinh tế xã hội ngày quan trọng Ngành xây dựng có bước phát triển vượt bậc công nghệ đại có thay đổi quản lý chi phí tiến độ cơng trình Quản lý dự án xây dựng bao gồm nhiều vấn đề cần phải quản lý quản lý tiến độ, chất lượng, chi phí, nhân vật lực Trong bối cảnh kinh tế thị trường, cạnh tranh công ty xây dựng khốc liệt Các công ty xây dựng không cịn thực dạng cơng trình xây dựng Các công ty xây dựng dân dụng tham gia vào cơng trình cầu đường, thủy lợi, điện … có đủ điều kiện lực hoạt động Chính cạnh tranh đó, nhà thầu không ngừng phải cải tiến biện pháp thi cơng, cách thức quản lý để giảm chi phí, giảm thời gian thi cơng dựa lực có mà đảm bảo chất lượng Điều đòi hỏi phải có cơng cụ trợ giúp nhà thầu tính tốn chi phí thời gian thi công đáng tin cậy Các dự án xây dựng thường tiến hành điều kiện rủi ro khác Điều tác động cho việc ước lượng thời gian thực công tác chi phí cho cơng việc q trình lập tiến độ Nếu có liệu lưu trữ cho thời gian chi phí nhân vật lực cho việc thực công tác giúp ích nhiều cho người lập tiến độ dự án 1.2 ĐẶT VẤN ĐỀ Quản lý tiến độ chi phí dự án xây dựng phải tiến hành giai đoạn: chuẩn bị đầu tư, thực đầu tư kết thúc đầu tư Trong việc quản lý tiến độ chi phí giai đoạn thi cơng xây dựng cơng trình Chương 1: Giới thiệu quan trọng cả, giai đoạn thi cơng xây dựng cơng trình giai đoạn tập trung lớn vốn đầu tư dự án Để quản lý tốt cần phải giám sát hai giai đoạn: thiết kế tiến độ thực thi tiến độ + Thiết kế tiến độ: nhà thầu thực hiện, thuê tổ chức tư vấn thực hiện, dựa lực thực tế nhà thầu đặc điểm cơng trình bên cạnh họ cịn lên dự tốn ước lượng chi phí thực cơng trình đưa vào giá dự thầu Về phía chủ đầu tư, họ thường thuê tư vấn để phân tích đánh giá hồ sơ dự thầu, có quan tâm đến giá dự thầu tính khả thi tiến độ để thương thảo với nhà thầu chấp nhận thầu Một tiến độ giá gói thầu nhà thầu chủ đầu tư ký hợp đồng tiến độ mang tính pháp luật, bị ràng buộc điều kiện thưởng phạt cho việc hoàn thành tiến độ + Thực thi tiến độ: việc thi công công trường tiến hành theo tiến độ Tuy nhiên thời gian hoàn thành cơng việc xoay quanh thời gian dự kiến (< , =, > ) Điều bắt buộc người quản lý phải điều khiển tiến độ cho thời gian hồn thành khơng bị chậm trễ kéo dài Mơ hình quản lý tiến độ là: có tham gia tư vấn giám sát, chủ đầu tư (bên mua), nhà thầu (bên bán) Một mặt nhà thầu phải thành lập “Nhóm tiến độ” để tự chịu trách nhiệm Mặt khác nhóm “Tư vấn giám sát tiến độ” chủ đầu tư ủy nhiệm tham gia tích cực vào q trình quản lý tiến độ suốt q trình thi cơng Trong cơng tác quản lý tiến độ thi cơng tối ưu nói chung, đặc biệt vấn đề tối ưu hóa tiến độ mạng toán phân phối dạng nhân tài vật lực mơ hình mạng xác định, điều khiển tiến độ mạng trình thực tốn thường gặp nhất, có ý nghĩa thực tế điều kiện kinh tế thị trường nay, phức tạp mặt lý thuyết cách áp dụng vào thực tiễn Phụ lục if (i2GenCon[0, 0, N] > Dc) { iTongCf = (i2GenCon[0, 0, N] - Dc) * k2Tru; } else if (i2GenCon[0, 0, N] < Dc) { iTongCf = -(Dc - i2GenCon[0, 0, N]) * k2Cong; } iTongCt = iTongCn + k1 * i2GenCon[0, 0, N] + iTongCf; // iTongCt i2GenCon[0, 1, N] = iTongCt; if (iTongCt < igengoc[xlaighep, 1, N])//nếu gen nhỏ Ct gen cũ thay { for (int iA = 0; iA < 6; iA++) { for (int iN = 0; iN < N + 1; iN++) { //igengoc[XMaxCt(ref igengoc), iA, iN] = i2GenCon[0, iA, iN]; igengoc[xlaighep, iA, iN] = i2GenCon[0, iA, iN]; } } } } } private bool RangBuocGen(ref int[, ,] igencon,ref string[,] strctt, int xlaighep) { bool b = true; //int[, ,] i2GenCon = new int[1, 6, N + 1]; for (int ime = 0; ime < N; ime++) { for (int icha = ime +1; icha < N; icha++) { if (NhapChuoi(dtCongTac.Rows[ime]["CongTacTiep"].ToString()).IndexOf(";" + dtCongTac.Rows[icha]["SoCongTac"].ToString() + ";") > -1)//nếu gen mẹ có danh sách công tác tiếp gen cha 26 Phụ lục { GetData_TempCtt(ref strctt, dtCongTac.Rows[ime]["CongTacTiep"].ToString(), dtCongTac.Rows[ime]["MoiQuanHe"].ToString(), dtCongTac.Rows[ime]["DQuanHe"].ToString()); int iDQuanHe = int.Parse(GetDataCttMqh_Dqh_FormD(ref strctt, int.Parse(dtCongTac.Rows[icha]["SoCongTac"].ToString()), 2, GetCount_Dau(dtCongTac.Rows[ime]["CongTacTiep"].ToString(), 1))); string strQuanHe = GetDataCttMqh_Dqh_FormD(ref strctt, int.Parse(dtCongTac.Rows[icha]["SoCongTac"].ToString()) , 1, GetCount_Dau(dtCongTac.Rows[ime]["CongTacTiep"].ToString(), 1)); if (strQuanHe == "F-S") { if (igencon[xlaighep, 1, ime] + igencon[xlaighep, 0, ime] + iDQuanHe > igencon[xlaighep, 1, icha]) { b = false; break; } } else if (strQuanHe == "S-S") { if (igencon[xlaighep, 1, ime] + iDQuanHe > igencon[xlaighep, 1, icha]) { b = false; break; } } else if (strQuanHe == "S-F") { if (igencon[xlaighep, 1, ime] + iDQuanHe > igencon[xlaighep, 1, icha] + igencon[xlaighep, 0, icha]) { b = false; break; } } else if (strQuanHe == "F-F") { if (igencon[xlaighep, 1, ime] + igencon[xlaighep, 0, ime] + iDQuanHe > igencon[xlaighep, 1, icha] + igencon[xlaighep, 0, icha]) { b = false; 27 Phụ lục break; } } } } } return b; } private int ReturnMaxCt(ref int[, ,] igengoc) { int i = 0; for (int x = 0; x < Nq; x++) { if (i < igengoc[x, 1, N]) { i = igengoc[x, 1, N]; } } return i; } private int ReturnSumCt(ref int[, ,] igengoc) { int i = 0; for (int x = 0; x < Nq; x++) { i += igengoc[x, 1, N]; } return i; } private int ReturnMinCt(ref int[, ,] igengoc) { int i = igengoc[0, 1, N]; for (int x = 0; x < Nq; x++) { if (i > igengoc[x, 1, N]) { i = igengoc[x, 1, N]; } } 28 Phụ lục return i; } private int XMaxCt(ref int[, ,] itempgengoc) { int y = 0; int i = 0; for (int x = 0; x < Nq; x++) { if (i < itempgengoc[x, 1, N]) { i = itempgengoc[x, 1, N]; y = x; } } return y; } private int XMinCt(ref int[, ,] itempgengoc) { int y = 0; int i = itempgengoc[0, 1, N]; for (int x = 0; x < Nq; x++) { if (i > itempgengoc[x, 1, N] && itempgengoc[x, 1, N] > ) { i = itempgengoc[x, 1, N]; y = x; } } return y; } private int XMinCt(ref int[, ,] itempgengoc, int rt) { int y = 0; int i = itempgengoc[0, 1, N]; for (int x = 0; x < Nq; x++) { if (i > itempgengoc[x, 1, N] && itempgengoc[x, 4, N] !=1 && itempgengoc[x, 2, N] itempgengoc[x, 2, N] && itempgengoc[x, 2, N] > 0) { i = itempgengoc[x, 2, N]; y = x; } } return y; } private int ReturnSumiEval(ref int[] ieval) { int i = 0; for (int x = 0; x < Nq; x++) { i += ieval[x]; } return i; } private void ReturnSumRnTrongNgay(ref int[, ,] igengoc, ref int[,] irninday, int icongtac, int x, int id) { for (int z = 0; z < icongtac; z++) { for (int t = igengoc[x, 1, z]; t < igengoc[x, 1, z] + igengoc[x, 0, z]; t++) { irninday[x, t] += igengoc[x, 2, z]; } } } private int ReturnMaxRn(ref int[,] irninday, int id, int x) { int iTemp = 0; for (int y = 0; y < id; y++) { 30 Phụ lục if (irninday[x, y] >= iTemp) { iTemp = irninday[x, y]; } } return iTemp; } private int ReturnMaxD(ref int[, ,] i, int icongtac, int x) { int iTemp = 0; for (int y = 0; y < icongtac; y++) { int[] iTempOut = new int[i[x, 1, y] + i[x, 0, y]]; iTemp = i[x, 2, y]; for (int z = y + 1; z < icongtac; z++) { //bool b = false; int[] iTempIn = new int[i[x, 1, z] + i[x, 0, z]]; for (int m = 0; m < iTempOut.Length; m++) { for (int p = 0; p < iTempIn.Length; p++) { if (iTempOut[m] == iTempIn[p]) { // b = true; if ((iTempOut[m] + iTempIn[p]) > iTemp) { iTemp = iTempOut[m] + iTempIn[p]; } break; } } } } } return iTemp; } private int ReturnMaxD(ref string[, ,] i, int icongtac, int x) { int iTemp = 0; try { 31 Phụ lục for (int y = 0; y < icongtac; y++) { int[] iTempOut = new int[int.Parse(i[x, 1, y]) + int.Parse(i[x, 0, y])]; iTemp = int.Parse(i[x, 2, y]); for (int z = y + 1; z < icongtac; z++) { //bool b = false; int[] iTempIn = new int[int.Parse(i[x, 1, z]) + int.Parse(i[x, 0, z])]; for (int m = 0; m < iTempOut.Length; m++) { for (int p = 0; p < iTempIn.Length; p++) { if (iTempOut[m] == iTempIn[p]) { // b = true; if ((iTempOut[m] + iTempIn[p]) > iTemp) { iTemp = iTempOut[m] + iTempIn[p]; } //break; } } } } } } catch { }; return iTemp; } private int ReturnMaxRn(ref string[, ,] i, int icongtac, int x, int n) { int[] iTempD = new int[int.Parse(i[x, 1, n ]) + (int.Parse(i[x, 0, n ]))]; for (int iy = 0; iy < iTempD.Length; iy++) { iTempD[iy] = 0; } for (int ix = 0; ix < n; ix++) { for (int y = int.Parse(i[x, 1, ix]); y < (int.Parse(i[x, 1, ix]) + int.Parse(i[x, 0, ix])); y++) 32 Phụ lục { iTempD[y] += int.Parse(i[x, 2, ix]); } } int iTemp = 0; for (int iy = 0; iy < iTempD.Length; iy++) { if (iTemp < iTempD[iy]) iTemp = iTempD[iy]; } return iTemp; } private int[,] GetData_TempD(string d, string rn, string cn)//gán d, rn, cn vào bảng để lấy giá trị rn, cn tương ứng vị trí d { string strD = d; string strRn = rn; string strCn = cn; int icountdau = GetCount_Dau(d, 1); int[,] i = new int[3, icountdau]; for (int x = 0; x < icountdau; x++) { string[] str = new string[2]; str = CutString2(strD); i[0, x] = int.Parse(str[0]); //0 D strD = str[1]; } for (int x = 0; x < icountdau; x++) { string[] str = new string[2]; str = CutString2(strRn); i[1, x] = int.Parse(str[0]); //1 Rn strRn = str[1]; } for (int x = 0; x < icountdau; x++) { string[] str = new string[2]; str = CutString2(strCn); i[2, x] = int.Parse(str[0]); //2 Cn strCn = str[1]; } return i; } 33 Phụ lục private void GetData_TempD(ref int[,] i, string d, string rn, string cn)//gán d, rn, cn vào bảng để lấy giá trị rn, cn tương ứng vị trí d { string strD = d; string strRn = rn; string strCn = cn; int icountdau = GetCount_Dau(d, 1); i = new int[3, icountdau]; for (int x = 0; x < icountdau; x++) { string[] str = new string[2]; str = CutString2(strD); i[0, x] = int.Parse(str[0]); //0 D strD = str[1]; } for (int x = 0; x < icountdau; x++) { string[] str = new string[2]; str = CutString2(strRn); i[1, x] = int.Parse(str[0]); //1 Rn strRn = str[1]; } for (int x = 0; x < icountdau; x++) { string[] str = new string[2]; str = CutString2(strCn); i[2, x] = int.Parse(str[0]); //2 Cn strCn = str[1]; } } private void GetData_TempCtt(ref string[,] strctt, string congtactiep, string moiquanhe, string dquanhe)//gán congtactiep, moiquanhe, dquanhe vào bảng để lấy giá trị moiquanhe, dquanhe tương ứng vị trí congtactiep { string strCongtactiep = congtactiep; string strMoiquanhe = moiquanhe; string strDquanhe = dquanhe; int icountdau = GetCount_Dau(congtactiep, 1); strctt = new string[3, icountdau]; for (int x = 0; x < icountdau; x++) { string[] str = new string[2]; str = CutString2(strCongtactiep); strctt[0, x] = str[0]; //0 công tác tiếp 34 Phụ lục strCongtactiep = str[1]; } for (int x = 0; x < icountdau; x++) { string[] str = new string[2]; str = CutString2(strMoiquanhe); strctt[1, x] = str[0]; //1 mối quan hệ strMoiquanhe = str[1]; } for (int x = 0; x < icountdau; x++) { string[] str = new string[2]; str = CutString2(strDquanhe); strctt[2, x] = str[0]; //2 d quan hệ strDquanhe = str[1]; } } private string GetDataCttMqh_Dqh_FormD(ref string[,] iTempD, int iD, int iloai, int imaxrray)//so sánh loại D cột số lấy tương ứn Rn, Cn { string i = "0"; for (int x = 0; x < imaxrray; x++) { if (iD.ToString() == iTempD[0, x]) { i = iTempD[iloai, x]; break; } } return i; } private int GetDataRnCn_FormD(ref int[,] iTempD, int id, int iloai, int imaxrray)//so sánh loại D cột số lấy tương ứn Rn, Cn { //return i; int i = 0; for (int x = 0; x < imaxrray; x++) { if (id == iTempD[0, x]) { i = iTempD[iloai, x]; 35 Phụ lục break; } } return i; } private int GetCount_Dau(string strchuoi, int istart) { int i = istart; if (strchuoi.Length > 0) { if (strchuoi.IndexOf(";") > 0) { string str; str = strchuoi.Substring(strchuoi.IndexOf(";") + 1); i = GetCount_Dau(str, istart + 1); } else { i = istart; } } return i; } private string[] CutString2(string strsearch)// { string[] str = new string[2];// | or + if (strsearch.Length > 0) { if (strsearch.IndexOf(";") > 0) { str[0] = strsearch.Substring(0, strsearch.IndexOf(";")); str[1] = strsearch.Substring(strsearch.IndexOf(";") + 1); } else { str[0] = strsearch; str[1] = ""; } } return str; 36 Phụ lục } private string NhapChuoi(string strsearch)// { string str = ";"; string strtemp; if (strsearch.Length > 0) { if (strsearch.IndexOf(";") > 0) { str += ";" + strsearch.Substring(0, strsearch.IndexOf(";")) + ";"; strtemp = strsearch.Substring(strsearch.IndexOf(";") + 1); str += NhapChuoi(strtemp); } else { str += strsearch + ";"; } } return str; } private string ChuoiCongTacN()// Lấy chuổi công tác từ tới N { string str = ""; for (int i = 0; i < N; i++) { str += NhapChuoi(dtCongTac.Rows[i]["CongTacTiep"].ToString()); } return str; } private int GetRanDom_D(string strchuoi) { int icountdau = GetCount_Dau(strchuoi, 1);// int i; int[] d = new int[icountdau]; string strChuoi = strchuoi; for (int x = 0; x < icountdau; x++) { if (strChuoi.IndexOf(";") > -1) { d[x] = int.Parse(strChuoi.Substring(0, strChuoi.IndexOf(";"))); strChuoi = strChuoi.Substring(strChuoi.IndexOf(";") + 1); } 37 Phụ lục else { d[x] = int.Parse(strChuoi); } } i = rnd.Next(0, icountdau); return d[i]; } private int GetRanDom_DKhongTrung(string strchuoi, int dkotrung) { int icountdau = GetCount_Dau(strchuoi, 1); int i; int[] d = new int[icountdau]; string strChuoi = strchuoi; for (int x = 0; x < icountdau; x++) { if (strChuoi.IndexOf(";") > -1) { d[x] = int.Parse(strChuoi.Substring(0, strChuoi.IndexOf(";"))); strChuoi = strChuoi.Substring(strChuoi.IndexOf(";") + 1); } else { d[x] = int.Parse(strChuoi); } } i = rnd.Next(0, icountdau); if (d[i] == dkotrung) { i = GetRanDom_DKhongTrung(strchuoi, dkotrung); } else { i = d[i]; } return i; } private int GetRanDom_TKhongTrung(int imin, int imax, int t) { int i; i = rnd.Next(imin, imax + 1); 38 Phụ lục if (i == t) { i = GetRanDom_TKhongTrung(imin, imax, t); } return i; } private int GetRanDomMinMax(int min, int max, ref int[] id)//hàm tạo số random khoảng định phải trùng với liệu cho, khơng trùng cho chạy { bool b = false; int i = rnd.Next(min, max); for (int x = 0; x < id.Length; x++) { if (i == id[x]) { b = true; break; } } if (b == false) { i = GetRanDomMinMax(min, max, ref id); } return i; } private void txtSo_KeyPress(object sender, KeyPressEventArgs e) { clsStand.textDenyString(sender, e); } private void btnUpdate_Click(object sender, EventArgs e) { clsStand.UpdateCongTac(ref dgvMain, ref dtCongTac); } private void btnView_Click(object sender, EventArgs e)//xuất kết gen vào phần vẻ biểu đồ { ThanhLapCauTrucGen(); // Gantt frm = new Gantt(iGenKetQua, iKetQua, 10, N + 1); //frm.ShowDialog(); 39 Phụ lục // iketqua x, 10 y, N+1 z// igenketqua[x,y,z] , x chứa số quần thể, y chứa số cột, z chứa số công tác, y0:D, y1:T, y2:Rn; y3:Cn, y4:khs, y5:khm, y6:tencongtac, y7:congtactiep, y8:moiquanhe, y9:ngayquanhe } 40 ... Công nghệ quản lý xây dựng MSHV: 00806176 TÊN ĐỀ TÀI: ỨNG DỤNG GIẢI THUẬT DI TRUYỀN VÀO TỐI ƯU CHI PHÍ, THỜI GIAN VÀ NHÂN VẬT LỰC NHIỆM VỤ VÀ NỘI DUNG: Chương 1: Giới thiệu Chương 2: Tổng quan... kiệm chi phí phải đáp ứng yêu cầu tiến độ chủ đầu tư đồng thời phải phù hợp với lực thi công họ Luận văn đề xuất phương pháp để giải tốn tối ưu chi phí, thời gian nhân vật lực ứng dụng giải thuật. .. gian nhân vật lực giới Việt Nam Ứng dụng giải thuật di truyền để tìm kiếm giải pháp tối ưu gần tối ưu với hàm mục tiêu cực tiểu chi phí dự án Xây dựng chương trình tin học dựa mơ hình giải thuật

Ngày đăng: 09/03/2021, 04:54

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

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

Tài liệu liên quan