Áp dụng thuật toán di truyền giải bài toán tối ưu tuyến xe buýt

68 119 1
Áp dụng thuật toán di truyền giải bài toán tối ưu tuyến xe buýt

Đ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

1 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƢỜNG ĐẠI HỌC CƠNG NGHỆ NGUYỄN THANH HÀO ÁP DỤNG THUẬT TỐN DI TRUYỀN GIẢI BÀI TOÁN TỐI ƢU TUYẾN XE BUÝT LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN Hà Nội – 2014 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƢỜNG ĐẠI HỌC CƠNG NGHỆ NGUYỄN THANH HÀO ÁP DỤNG THUẬT TỐN DI TRUYỀN GIẢI BÀI TOÁN TỐI ƢU TUYẾN XE BUÝT Ngành: Công nghệ Thông tin Chuyên ngành: Hệ thống Thông tin Mã số: 60480104 LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN NGƢỜI HƢỚNG DẪN KHOA HỌC: TS Tạ Tuấn Anh Hà Nội – 2014 LỜI CAM ĐOAN Tôi xin cam đoan luâ ̣n văn này hoàn toàn thực Các đoạn trích dẫn và số liệu sử dụng luận văn đều được dẫn nguồn và có đô ̣ chính xác cao nhấ t pha ̣m vi hiể u biế t của Kế t quả của luâ ̣n văn chưa từng đươ ̣c công bố bấ t cứ công triǹ h nào khác Hà nội, ngày 22 tháng 09 năm 2014 Học viên Nguyễn Thanh Hào LỜI CẢM ƠN Sau năm học tập và rèn luy ện tại trường Đại học Công nghê ̣ – Đa ̣i học Quốc Gia Hà Nội, đến em hoàn thành chương triǹ h h ọc tập luận văn tốt nghiệp Thạc sĩ chuyên ngành Hê ̣ thố ng Thông tin Để có được kết khiêm tốn ngày hôm nay, em xin trân trọng cảm ơn:  Ban giám hi ệu nhà trường đó quan tâm, tạo điều kiện thuận lợi cho chúng em học tập rèn luyện tốt  Các Thầy, Cô Khoa Công nghê ̣ Thông tin tận tâm giảng dạy, truyền đạt kiến thức nền tảng là hành trang quý báu để chúng em bước vào đời Em xin đặc biệt bày tỏ lòng kính trọng biết ơn chân thành đến Thầy giáo, Tiến sĩ Tạ Tuấn Anh, người trực tiếp hướng dẫn tận tình tạo điều kiện giúp em hoàn thành đư ợc luận văn tốt nghiệp Em xin cảm ơn Thầy Em xin được cảm ơn đến các anh, chị học viên lớp K18-HTTT tạo điều kiện, giúp đỡ em thời gian vừa qua Cuối cùng, em xin được gửi lời cảm ơn đến gia đình bạn bè, người bên, động viên khích lệ em suốt chặng đường học tập qua Hà Nội, ngày 22 tháng năm 2014 Nguyễn Thanh Hào MỤC LỤC DANH MỤC CÁC THUẬT NGỮ VÀ KÝ HIỆU VIẾT TẮT MỤC LỤC HÌNH MỞ ĐẦU Mục đích, lý chọn đề tài Đối tượng, phạm vi nghiên cứu của luận văn Bố cu ̣c trin ̀ h bày và đóng góp mới của tác giả 10 CHƢƠNG – MƠ HÌNH BÀI TỐN THIẾT KẾ TUYẾN BUÝT 11 1.1 Biểu diễn dạng đồ thị mạng xe buýt 11 1.1.1 Nút mạng 11 1.1.2 Cung mạng 12 1.2 Hyperpath 13 1.2.1 Chiến lược hyperpath 14 1.2.2 Chi phí hyperpath 15 1.2.3 Hyperpath có chi phí nhỏ 16 1.2.4 Tḥt tốn tìm hyperpath có chi phí nhỏ 16 1.3 Mơ hình tốn quy hoạch tuyến xe bt 23 1.4 Kết luận 24 CHƢƠNG – THUẬT TOÁN DI TRUYỀN GIẢI BÀI TOÁN THIẾT KẾ TUYẾN VÀ TẦN SUẤT XE BUÝT 25 2.1 Tối ưu đa mục tiêu 25 2.2 Thuật toán di truyền 27 2.2.1 Các thành phần của thuật toán di truyền 27 2.2.2 Cấu trúc thuật toán di truyền 28 2.3 Giải toán TRDNP 28 2.3.1 Phân công xe 29 2.3.2 Thiết kế tuyến 29 2.3.3 Thiết lập tần suất 30 2.3.4 Các bước xử lý tốn TRNDP 31 2.3.5 Thuật toán lai ghép và đột biến 32 2.3.6 Thuật toán phân lớp nghiệm 33 2.4 Kết luận 35 CHƢƠNG – CHƢƠNG TRÌNH MÔ PHỎNG THUẬT TOÁN DI TRUYỀN GIẢI BÀI TOÁN THIẾT KẾ TUYẾN VÀ TẦN SUẤT XE BUÝT 36 3.1 Công cụ phát triển chương trình 36 3.1.1 Giới thiệu tổng quan về C++ 36 3.1.2 Giới thiệu tổng quan về Code::Blocks 37 3.2 Giới thiệu về chương trình 38 3.3 Các hàm chức 40 3.4 Một số ví dụ thử nghiệm chương trình 42 3.4.1 Ví dụ 42 3.4.2 Ví dụ 44 3.5 Kết luận 46 CHƢƠNG – THỬ NGHIỆM CHƢƠNG TRÌNH VỚI BÀI TOÁN CỦA THÀNH PHỐ ĐÀ NẴNG 47 4.1 Mơ hình mạng lưới giao thông xe buýt Google Earth 47 4.1.1 Giới thiệu phần mềm Google Earth 47 4.1.2 Xây dựng liệu đầu vào 49 4.2 Các kết đạt được 51 4.3 Kết luận 52 KẾT LUẬN 53 TÀI LIỆU THAM KHẢO 54 PHỤ LỤC 56 DANH MỤC CÁC THUẬT NGỮ VÀ KÝ HIỆU VIẾT TẮT STT Từ TRDNP NSGA STL IDE SHT DSHT Nghĩa Transit Route Network Design Problem Non-dominated Sorting Genetic Algorithm Standard Template Library Integrated Development Environment Shortest HyperTree Dantzig Shortest HyperTree MỤC LỤC HÌNH Hình 1.1: Ví dụ mạng xe buýt 11 Hình 1.2: Biểu diễn dạng đồ thị 12 Hình 2.1: Ánh xạ từ tập chấp nhận vào tập giá trị 26 Hình 2.2: Mặt Pareto 27 Hình 2.3: Nhiễm sắc thể mơ tả thủ tục phân công xe 29 Hình 2.4: (a) Đồ thị ví dụ (b) Nhiễm sắc thể mô tả công việc thiết kế tuyến 30 Hình 2.5: Mơ hình chọn lọc cá thể qua hệ 31 Hình 2.6: (a) Thuật toán lai ghép (b) Thuật toán đột biến 32 Hình 2.7: Khoảng cách cá thể đường cong pareto 34 Hình 3.1: Giao diện đồ họa Code::Blocks 37 Hình 3.2: Đồ thị mạng lưới giao thơng minh họa ví dụ 42 Hình 3.2: Đồ thị nghiệm ví dụ qua hệ 43 Hình 3.3: Đồ thị nghiệm ví dụ qua hệ 45 Hình 3.4: Sơ đồ thiết kế tuyến buýt ví dụ 45 Hình 4.1: Các tính cửa sổ Google Earth 47 Hình 4.2: Các điểm giao cắt đường xe buýt (6m) 49 Hình 4.3: Đồ thị phân bố nghiệm cho thành phố Đà Nẵng qua hệ 51 Hình 4.4: Các tuyến buýt (trong nghiệm) sau tính tốn qua 100 hệ 52 MỞ ĐẦU Mục đích, lý chọn đề tài Ngày nay, giải ùn tắc giao thông tốn vơ nan giải thành phố giới Để giải vấn đề này, Nhà nước khuyến khích người dân sử dụng phương tiện giao thông công cộng nhằm hạn chế xe cá nhân, giảm ách tắc thành phố Chính vậy, việc quy hoạch mạng lưới giao thông công cộng tác động lớn tới việc lưu thông phương tiện khu vực đô thị, ảnh hướng tới kinh tế, xã hội Tại thành phố lớn Việt Nam, mạng lưới xe buýt trở nên phổ biến và lưu thông hàng ngày tuyến đường đô thị vùng ngoại ô Một đặc điểm của giao thông xe buýt tại thành phố Hà Nội có lưu lượng người lớn Trong cao điểm, tuyến xe buýt không đáp ứng được hết nhu cầu của người dẫn đến ùn tắc giao thông tuyến đường Một lí chủ yếu là các đường thủ đô không được quy hoạch rộng từ đầu, số lượng người tập trung quá đơng đúc Để tránh tình trạng xảy với Hà Nội, tại thành phố thời kì xây dựng sở hạ tầng giao thông Đà Nẵng, cần có quy hoạch tổng thể về các đường tuyến xe đảm bảo tránh ùn tắc dân số vùng tăng lên hay tham gia giao thông công cộng cao điểm Bên cạnh đó, việc nhu cầu lại tăng cao dẫn đến các khó khăn về mặt chi phí vận hành thiết kế tuyến xe buýt làm đảm bảo lợi ích về mặt thời gian tiền bạc cho người dân Vì vậy, mục đích của nghiên cứu áp dụng thuật toán di truyền giải toán tối ưu tuyến xe buýt mạng giao thơng thị Nghiệm của tốn cho ta biết cấu hình của tuyến xe tần suất tương ứng tuyến xe đó, với mục đích tiết kiệm chi phí vận hành hệ thống xe buýt chi phí lại cho người sử dụng Đối tƣợng, phạm vi nghiên cứu của luận văn Đối tượng nghiên cứu của luận văn là thuật toán di truyền thuật toán liên quan tới việc giải toán thiết kế tuyến tần suất xe buýt nhằm tối ưu thời gian lại cho người dân thời gian xe chạy đường của nhà điều hành Phạm vi nghiên cứu của luận văn là giải thuật di truyền NSGA-II (nondominated sorting genetic algorithm) tối ưu đa mục tiêu áp dụng cho toán xe buýt nêu 10 Bố cu ̣c trin ̀ h bày và đóng góp mới của tác giả Toàn nội dung luận văn được trình bày chương: Chƣơng – Mơ hình tốn thiết kế tuyến bt: Giới thiệu cách biểu diễn mạng xe buýt dạng đờ thị, sau đó, phát biểu mơ hình tốn quy hoạch mạng xe buýt dạng toán tối ưu đa mục tiêu hai mức Chƣơng – Thuật toán di truyền giải toán thiết kế mạng xe buýt: Chương này trình bày các kiến thức tổng quan về tối ưu đa mục tiêu thuật toán di truyền Sau đó, trình bày số nét để giải toán thuật toán di truyền Chƣơng – Chƣơng trình mơ tḥt tốn di truyền giải toán thiết kế tuyến tần suất xe buýt: Giới thiệu về cấu trúc chương trình, hàm chức năng, cách biểu diễn liệu đầu vào, đầu công nghệ, thư viện được sử dụng để viết chương trình Chƣơng – Thử nghiệm chƣơng trình với tốn của thành phố Đà Nẵng: Giới thiệu về mơ hình hóa mạng lưới giao thơng xe buýt thành phố Đà Nẵng, tham số đầu vào của mơ hình kết minh họa chạy chương trình mơ tḥt tốn NSGA-II Cuối cùng, phần kết luận: tác giả trình bày đóng góp của cá nhân, khó khăn làm luận văn, và hướng phát triển của đề tài Phƣơng pháp nghiên cƣ́u Trong trình làm luận văn, tác giả nghiên cứu theo phương pháp:  Lựa chọn tham khảo các nghiên cứu thuộc lĩnh vực làm theo sự định hướng của thầy hướng dẫn  Trao đổi với bạn bè, đờng nghiệp để có được ý tưởng tốt  Tham khảo ý kiến của chuyên gia qua báo, tham dự seminar về giao thông tại đơn vị công tác Báo cáo kết của phương pháp nghiên cứu trên, nỗ lực của tác giả 54 TÀI LIỆU THAM KHẢO Tiếng Anh K Deb, et al., “Fast Elitist Non-Dominated Sorting Genetic Algorithm for Multi-Objective Optimization: NSGA-II,” Parallel Problem Solving from Nature VI (PPSN-VI), 2000, pp 849-858 K Deb, A Pratap, S Agarwal, T Meyarivan, "A fast and elitist multiobjective genetic algorithm: NSGA-II," IEEE Transactions on Evolutionary Computation (2002), pp 182–197 G Gallo and S Pallottino, “Shortest path methods: a unifying approach,” Mathematical Programming Study 26 (1963), pp 38-64 Z Y Gao, et al., “A Continuous Equilibrium Network Design Model and Algorithm for Transit System,” Transpotation Research Part B, Vol 38, No 3, 2004, pp 235-250 J F Guan, et al., “Simultaneous Optimization of Transit Line Configuration and Passenger Line Assignment,” Transportation Research Part B, Vol 40, No 10, 2006, pp 885-902 K Kepaptsoglou and M Karlaftis, “Transit Route Network Design Problem: Review,” Journal of Transportation Engineering-ASCE, Vol 135, No 8, 2009, pp 491-505 F Kurauchi, et al, "Capacity Constrained Transit Assignment with Common Lines," Journal of Mathematical Modelling and Algorithms, (2003), pp 309327 K Nachtigall and K Jerosch, “Simultaneous Network Line Planning and Traffic Assignment,” 2008 S Nguyen and Pallotino, "Equilibrium assignment for large scale transit network," European J.Oper.Res, 37 (1988), pp 176-186 10 M Petrelli, “A Transit Network Design Model for Urban Areas,” In: C A Brebbia and L C Wadhwa, Eds., Ur-ban Transport X, WIT Press, Southampton, 2004, pp.163-172 11 H Shimamoto, et at., “Evaluation of Public Transit Congestion Mitigation Measures Using Passenger Assignment Model,” Journal of Eastern Asia Transportation Studies, Vol 6, 2005, pp 2076-2091 12 H Shimamoto, et al., “Evaluation of an Existing Bus Network Using a Transit Network Optimisation Model: A Case Study of the Hiroshima City Bus Network,” Transportation, Vol 37, No 5, 2010, pp 801-823 55 13 H Shimamoto, J-D Schmöcker, F Kurauchi, "Optimisation of a Bus Network Configuration and Frequency Considering the Common Lines Problem", Journal of Transportation Technologies, (2012), pp 220-229 14 A Zhou, B Qu, H Li, S Zhao, P N Zhang, survey paper: "Multiobjective evolutionary algorithms: A survey of the state of the art", Swarm and Evolutionary Computation, (2011), pp 32-49 15 J Zhou, and W H K Lam., “A Bi-Level Programming Approach – Optimal Transit Fare under Line Capacity Constraints,” Journal of Advanced Transportation, Vol 35, No 2, 2000, pp 105-124 56 PHỤ LỤC Mã nguồn tập tin DSHT.cpp mô tḥt tốn tìm hypertree nhỏ nhất: #include "DSHT.h" #include #include #include #include using namespace std; const double maxC = 1000000000; // maximum value of cost // implement the n-elements binary heap tree class HeapTree { private: int n; int *data; public: // initialisation HeapTree(int maxSizeOfHeap) { n = 0; data = new int[maxSizeOfHeap + 2]; } ~HeapTree() { delete []data; } // compare two node j and jj in heap tree bool lessCompare(int j, int jj, vector bs, double **a, double **cost, int s) { int i = bs[j].back(); 57 int ii = bs[jj].back(); return (a[i][j] + cost[j][s] < a[ii][jj] + cost[jj][s]); } // get a node from heap tree, if bs[node] equals remove from tree, update value int popHeap(vectorbs, double **a, double** cost, int s) { // get first element, remove last element if (n == 0) return 0; int value = data[1]; if (bs[value].size() == 1) { data[1] = data[n]; n ; } // update heap tree int p = 1; while (p * a = a; this->last = last; 59 } bool operator()(int i, int j) { return (a[i][last] > a[j][last]); // compare to a[i][node] and a[j][node] value } }; DSHT::DSHT(int vn, double **va, double ** vb) { //ctor n = vn; a = va; b = vb; initData(); } DSHT::~DSHT() { for (int i = 0; i < n; i++) delete[] c[i]; delete []c; delete []br; bs.clear(); fs.clear(); r.clear(); } double** DSHT::getC() { return c; } void DSHT::initData() { c = new double* [n]; for (int i = 0; i < n; i++) c[i] = new double[n]; 60 br = new double[n]; bs.resize(n); fs.resize(n); r.resize(n); for (int i = 0; i < n; i++) { bs[i].clear(); fs[i].clear(); r[i].clear(); br[i] = 0; } for (int i = 0; i < n; i++) for (int j = 0; j < n; j++) if (a[i][j] > && b[i][j] > 0) { bs[j].push_back(i); fs[i].push_back(j); } // sort all node in bs[i] sets for (int i = 0; i < n; i++) { CustomLess customLess(a, i); sort(bs[i].begin(), bs[i].end(), customLess); } for (int i = 0; i < n; i++) for (int j = 0; j < n; j++) c[i][j] = -1; } void DSHT::process(int s) { vector tmpBs(bs), tmpFs(fs), tmpR(r); for (int i = 0; i < n; i++) br[i] = 0; double ** cost; cost = new double* [n]; 61 for (int i = 0; i < n; i++) { cost[i] = new double[n]; cost[i][s] = maxC; } //init data cost[s][s] = 0; HeapTree q(n); // push node S into heap tree q.pushHeap(s, bs, a, cost, s); // loop while q is not empty start dantzig shortest hyper tree algorithm while (!q.isEmpty()) { int j = q.popHeap(bs, a, cost, s); int i = bs[j].back(); bs[j].pop_back(); if (cost[i][s] > cost[j][s] + a[i][j]) { if (r[i].empty()) { r[i].push_back(j); br[i] = b[i][j]; cost[i][s] = cost[j][s] + a[i][j] + 1/b[i][j]; q.pushHeap(i, bs, a, cost, s); } else { r[i].push_back(j); br[i] += b[i][j]; cost[i][s] = cost[i][s] - (cost[i][s] - cost[j][s] - a[i][j]) * b[i][j] / br[i]; } } } for (int i = 0; i < n; i++) 62 if (cost[i][s] < maxC) c[i][s] = cost[i][s]; for (int i = 0; i < n; i++) delete[] cost[i]; delete [] cost; bs = tmpBs; fs = tmpFs; r = tmpR; tmpBs.clear(); tmpFs.clear(); tmpR.clear(); } Mã nguồn thuật toán lai ghép và đột biến void BusNetwork::randomLines() { cout -1) node = 0; } if (whileCount > n) break; lines[i][index] = node; start = index; index = node; } if (mark[n-1]) continue; for (int j = 0; j < n; j++) if (mark[j]) { int pos = rand() % next[j].size(); int node = next[j][pos]; lines[i][j] = node; } break; } } int total = NV; for (int i = 0; i < L; i++) { int maxBus = maxNumBus; if (total < maxNumBus) maxBus = total; int num = rand() % (maxBus + 1); busNum[i] = num; total = total - num; } 64 } bool BusNetwork::doMutation() { cout = maxNumNode)) { tmpLine[index] = n-1; index = n-1; continue; } 65 int node = tmpLine[index]; int whileCount = 0; random = rand() % 100; if (random < rate || mark[node] == false || (node == n-1) && (counter < minNumNode)) { node = 0; while (((node == n-1) && (counter < minNumNode)) || (mark[node] == false)) { whileCount++; if (whileCount > n) break; int pos = rand() % next[index].size(); node = next[index][pos]; if (C[start][node] > -1) node = 0; } } if (whileCount > n) break; tmpLine[index] = node; start = index; index = node; } if (mark[n-1]) continue; for (int j = 0; j < n; j++) if (mark[j]) { int pos = rand() % next[j].size(); int node = next[j][pos]; lines[i][j] = node; } else lines[i][j] = tmpLine[j]; break; } } int total = NV; for (int i = 0; i < L; i++) 66 { int num = busNum[i]; int random = rand() % 100; if (random < rate || total < num) { int maxBus = maxNumBus; if (total < maxNumBus) maxBus = total; num = rand() % (maxBus + 1); } busNum[i] = num; total = total - num; } return true; } bool BusNetwork::doCrossover(BusNetwork bus, BusNetwork &tmp) { cout = maxNumNode) { tmpLines[i][index] = n-1; index = n-1; continue; } int node = 0; int whileCount = 0; while ((mark[node] == false) || ((node == n-1) && (counter n) break; int pos = rand() % 2; if (pos == 0) node = lines[i][index]; else node = secondLines[i][index]; } if (whileCount > n) break; tmpLines[i][index] = node; start = index; index = node; } if (mark[n-1]) continue; for (int j = 0; j < n; j++) if (mark[j]) { int node; 68 int pos = rand() % 2; if (pos == 0) node = lines[i][j]; else node = secondLines[i][j]; tmpLines[i][j] = node; } break; } } int total = NV; for (int i = 0; i < L; i++) { int num; int random = rand() % 2; if (random == 0) num = busNum[i]; else num = secondBusNum[i]; if (num > total) { int maxBus = maxNumBus; if (total < maxNumBus) maxBus = total; num = rand() % (maxBus + 1); } tmpBusNum[i] = num; total = total - num; } tmp.setBusNum(tmpBusNum); tmp.setLines(tmpLines); return true; } ... hoạch tuyến xe bt 23 1.4 Kết luận 24 CHƢƠNG – THUẬT TOÁN DI TRUYỀN GIẢI BÀI TOÁN THIẾT KẾ TUYẾN VÀ TẦN SUẤT XE BUÝT 25 2.1 Tối ưu đa mục tiêu 25 2.2 Thuật toán. .. hai mức 25 CHƢƠNG – THUẬT TOÁN DI TRUYỀN GIẢI BÀI TOÁN THIẾT KẾ TUYẾN VÀ TẦN SUẤT XE BUÝT Chương này trình bày các kiến thức tổng quan về tối ưu đa mục tiêu thuật toán di truyền Sau đó,... phân xe buýt vào tuyến Có hai kiểu gien nhiễm sắc thể: gien A biểu di n xe buýt gien B biên, rõ tuyến xe có xe Số lượng gien A với số lượng xe có số lượng gien B ít số lượng tuyến xe buýt

Ngày đăng: 08/04/2020, 04:16

Từ khóa liên quan

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

Tài liệu liên quan