1. Trang chủ
  2. » Luận Văn - Báo Cáo

Tích hợp tối ưu vào mô phỏng để giải bài toán cân bằng chuyền

127 29 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

Thông tin cơ bản

Định dạng
Số trang 127
Dung lượng 823,06 KB

Nội dung

Đại Học Quốc Gia Tp Hồ Chí Minh TRƯỜNG ĐẠI HỌC BÁCH KHOA NGUYỄN VÂN PHƯỚC SƠN TÍCH HỢP TỐI ƯU VÀO MƠ PHỎNG ĐỂ GIẢI BÀI TỐN CÂN BẰNG CHUYỀN Chuyên ngành : KĨ THUẬT HỆ THỐNG CÔNG NGHIỆP LUẬN VĂN THẠC SĨ TP HỒ CHÍ MINH Tháng năm 2008 i 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 HỒ THANH PHONG (Ghi rõ họ tên, học hàm, học vị chữ kí) Cán chấm nhận xét :ThS NGUYỄN VĂN CHUNG (Ghi rõ họ tên, học hàm, học vị chữ kí) Cán chấm nhận xét :TS NGUYỄN TUẤN ANH (Ghi rõ họ tên, học hàm, học vị chữ kí) 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 13 tháng 09 năm 2008 ii ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH CỘNG HỊA Xà HỘI CHŨ NGHĨA VIỆT NAM TRƯỜNG ĐẠI HỌC BÁCH KHOA Độc lập – Tự – Hạnh phúc oOo Tp Hồ Chí Minh, ngày .tháng .năm NHIỆM VỤ LUẬN VĂN THẠC SĨ Họ tên học viên: NGUYỄN VÂN PHƯỚC SƠN Ngày tháng năm sinh: 17-11-1983 Giới tính: Nam / Nữ Nơi sinh: Tp Hồ Chí Minh Chuyên ngành : KỸ THUẬT HỆ THỐNG CÔNG NGHIỆP Khóa (Năm trung tuyển): 2006-2008 TÊN ĐỀ TÀI: TÍCH HỢP TỐI ƯU VÀO MƠ PHỎNG ĐỂ GIẢI BÀI TỐN CÂN BẰNG CHUYỂN NHIỆM VỤ LUẬN VĂN ƒ Kỹ thuật mô giải thuật di truyền tối ưu hóa tốn cân dây chuyền sản xuất ƒ Xây dựng mơ hình tích hợp kỹ thuật tối ưu hóa dùng giải thuật di truyền vào cân dây chuyền sản xuất ƒ Áp dụng vào toán cụ thể nhà máy ƒ Đưa kết luận kiến nghị NGÀY GIAO NHIỆM VỤ: NGÀY HOÀN THÀNH NHIỆM VỤ: HỌ VÀ TÊN CÁN BỘ HƯỚNG DẪN: (Ghi đầy đủ học hàm, học vị): PGS TS HỒ THANH PHONG 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 (Họ tên chữ kí) CHỦ NHIỆM BỘ MÔN QUẢN LÝ CHUYÊN NGÀNH (Họ tên chữ kí) PGS TS HỒ THANH PHONG ThS NGUYỄN NHƯ PHONG iii LỜI CÁM ƠN Đầu tiên xin gửi lời cám ơn chân thành sâu sắc đến ba mẹ gia đình, người khơng ngừng giúp đỡ động viên nhiều suốt thời gian học tập cao học Tôi xin chân thành cám ơn thầy Hồ Thanh Phong, thầy hết lịng truyền đạt kiến thức tận tình hướng dẫn cho tơi suốt q trình làm luận văn suốt thời gian học tập cao học Lời cuối xin gửi lời cám ơn đến tất bạn bè đồng nghiệp giúp đỡ nhiều suốt thời gian học tập Tp Hồ Chí Minh, tháng năm 2008 Nguyễn Vân Phước Sơn - iv TÓM TẮT LUẬN VĂN Đã có nhiều nghiên cứu tốn cân chuyền thực có khỏang cách lý thuyết nghiên cứu ứng dụng thực tế Vì kết có giải tốn cân chuyền dựa liệu tất định thời gian gia công công đoạn Điều làm kết tính tốn áp dụng thực tế khác xa với mong đợi Ngày với phát triển mạnh mẽ máy tính cho phép mơ hình hóa hệ thống cơng cụ mô phỏng, hỗ trợ cho việc đánh giá xem xét phương án cải tiến cách hiệu trước áp dụng vào thực tế Do hướng nghiên cứu giải tốn cân chuyền môi trường mô hướng giúp xây dựng lời giải cân chuyền hiệu Nhưng thân mô cơng cụ đánh giá phương án sẵn có, khơng tự tìm lời giải tối ưu cho hệ thống Giải thuật di truyền giải thuật mạnh việc tìm kiếm lời giải tối ưu cho tóan bùng nổ tổ hợp lời giải tốn cân chuyền.Vì luận văn tập trung vào việc tích hợp giải thuật di truyền vào môi trường mô để giải tóan cân chuyền Giải thuật di truyền di truyền đóng vai trị dẫn hướng cho mơ trình tìm kiếm lời giải cân chuyền, cịn mơ đóng vai trị cơng cụ đánh giá lời giải tìm trình tìm kiếm Quá trình tìm kiếm kết thúc giải thuật đạt tới số bước lặp tối đa cho trứơc hay đám đông lời giải hội v MỤC LỤC NHIỆM VỤ LUẬN VĂN THẠC SĨ iii LỜI CÁM ƠN iv TÓM TẮT LUẬN VĂN v DANH SÁCH HÌNH VẼ x DANH SÁCH BẢNG BIỂU xii CHƯƠNG GIỚI THIỆU 1.1 Đặt vấn đề 1.2 Mục tiêu luận văn 1.3 Nội dung giới hạn luận văn 1.4 Bố cục CHƯƠNG 2: CÁC NGHIÊN CỨU LIÊN QUAN 2.1 Cân chuyền với giải thuật tìm kiếm vùng cấm (Tabu search) tác giả Sophie D Lapierre, Angel Ruiz, Patrick Soriano 2.2 Sử dụng giải thuật ủ kim loại (Simulated annealing) để giải toán cân chuyền đa mục tiêu với trạm làm việc song song tác giả P R Mc Mullen G V Frazier 2.3 Giải thuật di truyền cho toán cân chuyền thiết bị tự động Gregory Levitin, Jacob Rubinovitz, Boris Shnits 2.4 Cách tiếp cận mơ cho tốn cân chuyền cho sản xuất loạt lớn ứng dụng tác giả Mesut Ozgurler, Ali Fuat Guneri, Bahadir Gulsun 2.5 Một số nhận xét đề xuất CHƯƠNG CƠ SỞ LÝ THUYẾT vi 3.1 Tổng quan toán cân chuyền 3.1.1 Giới thiệu toán cân chuyền 3.1.2 Phân loại toán cân chuyền 10 3.2.1 Giới thiệu 11 3.4 Lý thuyết mô 13 3.4.1 Khái niệm 13 3.4.2 Mục đích mơ 13 3.4.3 Ứng dụng mô 13 3.4.4 Các định nghĩa 14 3.4.5 Những thành phần mơ hình mơ 15 3.4.6 Các bước nghiên cứu mô 16 3.4.7 Các kĩ thuật thống kê thực mô 20 3.4.7.1 Kiểm định phânbố lý thuyết cho liệu đầu vào 20 3.4.7.2 Phương pháp xác định thời gian warm up 21 3.4.7.2 Xác định trị trung bình Replication/deletion 22 3.4.7.3 Xác định số lần lặp cách tiếp cận giai đoạn 22 3.4.7.4 Kiểm tra giá trị mơ hình phương pháp khoảng tin cậy 23 3.5 Cơ chế tối ưu mô 23 CHƯƠNG TÍCH HỢP TỐI ƯU VÀ MƠ PHỎNG CHO BÀI TOÁN CÂN BẰNG CHUYỀN 26 4.1 Xây dựng giải thuật di truyền cho toán cân chuyền 26 4.1.1 Phương pháp mã hóa 26 4.1.2 Phương pháp chọn lọc 28 vii 4.1.3 Phương pháp lai ghép 29 4.1.4 Phương pháp đột biến 31 4.1.5 Hàm độ thích nghi điều kiện dừng 31 4.2 Xây dựng mơ hình mơ cho toán cân chuyền 32 4.2.1 Phần mềm ARENA 32 4.2.2 Sơ đồ luận lý 33 4.2.2 Xây dựng mơ hình ARENA 35 4.2.3 Mơ tả chương trình 37 CHƯƠNG ÁP DỤNG VÀO BÀI TOÁN THỰC TẾ 39 5.1 Giới thiệu công ty 39 5.2 Vấn đề cân chuyền 39 5.3.2 Phân bố thời gian gia công 41 5.3 Mô phương án cân chuyền 46 5.3.1 Mơ hình hóa phương án cân chuyền 47 5.3.2 Mơ hình chi tiết phương án ARENA 48 5.3.3 Xác định thời gian warm up số lần lặp 51 5.3.2.1 Xác định thời gian warm up 51 5.3.2.2 Xác định số lần lặp 54 5.3.3 Kiểm nghiệm giá trị mô hình 56 5.3.4 Đánh giá kết phương án 56 5.4 Xây dựng phương án cân chuyền chương trình tối ưu mô 57 5.4.1 Xây dựng phương án cân chuyền 57 viii 5.4.2 Phân tích tham số kích cỡ đám đơng 61 CHƯƠNG KẾT LUẬN VÀ KIẾN NGHỊ 63 6.1 Kết luận 63 6.2 Kiến nghị 63 ix DANH SÁCH HÌNH VẼ Hình 2.1: Minh họa cách mã hóa giải thuật di truyền Hình 2.2: Minh họa cách lai ghép giải thuật di truyền Hình 3.1:Minh họa trình lai ghép 12 Hình 3.2: Minh họa trình đột biến 13 Hình 3.3: Các phương pháp nghiên cứu hệ thống 15 Hình 3.4: Các bước thực mơ 19 Hình 3.5: Minh họa phương pháp Welch với w=20 21 Hình 3.6: Mơ hình mơ tổng quát 24 Hình 3.7: Vai trị tối ưu q trình mơ 24 Hình 4.1: Cách mã hóa tốn cân chuyền 26 Hình 4.2: Bài tốn cân chuyền với thời gian chu kì 12 26 Hình 4.3: Cách mã hóa tốn cân chuyền có thời gian chu kì 12 27 Hình 4.4: Phân bố cơng đoạn vào trạm 28 Hình 4.5: Quá trình chọn lọc 28 Hình 4.6: Phương pháp lai ghép 30 Hình 4.7: Phương pháp đột biến 31 Hình 4.8: Sơ đồ tổng qt chương trình tối ưu mơ phịng 33 Hình 4.9: Sơ đồ luận lý chương trình tối ưu mơ 34 Hình 4.10: Nhóm mơđun khởi tạo 35 Hình 4.11: Nhóm mơđun gia cơng 36 Hình 4.12: Nhóm mơđun ghi nhận liệu 36 x Public RES_TIME() As Double ' -RESOURCE FREE TIME (RESOURCE I, REP) WHEN SIMULATION Public OUTPUT() As Double ' -OUTPUT (REP) WHEN SIMULATION END Public FREETIME() As Double ' -FREETIME (REP) WHEN SIMULATION END Public QUANTITY_INIT As String ' -NUMBER QUANTITY IN SYSTEM AT CREATE MODUE_MAXIMUM ENTITY DEFAULT "INFINITE" Public PRO_TIMEUNIT As String ' -PROCESSING TIME UNIT Public REP_NUM As Byte ' -NUMBER OF REPLICATION Public HOUR_P_DAY As Byte ' -HOUR PER DAY Public REP_LEN As Integer ' -REPLICATION LEN Public REP_LEN_TIMEUNIT As Byte ' -REP_LEN TIME UNIT Public WARM_UP As Integer ' -WARM UP PERIOD-FIRST CREATION Public RECORD_INTERVAL As String ' -INTERVAL TO RECORD DATA_VALUE Public UNIT_PRICE As Double Public WORKER_COST As Double Public IDLE_COST As Double Public SIZE_BATCH As Integer Public REP_INDEX As Byte ' -REPLICATION INDEX Public REP_INDEX1 As Byte ' -REPLICATION INDEX Public ENTITY_NUM As Byte ' -NUMBER OF ENITY NUMBE RFOR ENDING TIME COMPUTE AT THE END OF REPLICATION Public ENTITY_LIST() As Byte ' -NUMBER OF ENITY NUMBE RFOR ENDING TIME COMPUTE AT THE END OF REPLICATION Public COUNT_NAME As String ' -COUNTERNAME VARIABLE FOR RECORD Public INTERVAL_OUTPUT As String ' - STRING NAME OF RECORD OTPUT Public PREVIOUS_OUTPUT As String ' - STRING NAME OF RECORD OTPUT '******REFER "FILE.TXT" FORM INSTALL FOLDER TO FIND OPERAND NAME****** Public Sub CREATE_MODULE(NAME As String, ENTITY_TYPE As String, X As Single, Y As Single, DISTRIBUTION As String, PER_ARRIVAL As Integer, MAX_ARRIVAL As String, TIME_UNIT As String, FIRST As Integer) Set SIM = ThisDocument.Model Dim MODULE As Arena.MODULE Set MODULE = SIM.Modules.Create("BasicProcess", "Create", X, Y) MODULE.Data("Name") = NAME 'NAME MODULE.Data("Entity Type") = ENTITY_TYPE ' ENTITY TYPE MODULE.Data("Interarrival Type") = "EXPRESSION" MODULE.Data("Expression") = DISTRIBUTION 'DISTRIBUTION MODULE.Data("Batch Size") = PER_ARRIVAL 'ENTITY PER ARRIVAL MODULE.Data("Max Batches") = MAX_ARRIVAL 'MAX ENTITY ARRIVAL MODULE.Data("Units") = TIME_UNIT 'TIME UNIT MODULE.Data("First Creation") = FIRST MODULE.UpdateShapes Xaxis = Xaxis + 1000 Set MODULE = Nothing Set SIM = Nothing End Sub Public Sub PROCESS_MODULE(NAME As String, X As Single, Y As Single, RESOURCE_NAME As String, DISTRIBUTION As String, TIME_UNIT As String) Set SIM = ThisDocument.Model Dim MODULE As Arena.MODULE Set MODULE = SIM.Modules.Create("BasicProcess", "Process", X, Y) MODULE.Data("Name") = NAME B-19 MODULE.Data("Action") = "Seize Delay Release" MODULE.Data("Resource name") = RESOURCE_NAME MODULE.Data("DelayType") = "Expression" MODULE.Data("Expression") = DISTRIBUTION MODULE.Data("Units") = TIME_UNIT MODULE.UpdateShapes Set MODULE = Nothing Set SIM = Nothing Xaxis = Xaxis + 1000 End Sub Public Sub ROUTE_MODULE(NAME As String, X As Single, Y As Single, TIME As Single, TIME_UNIT As String, DES_NAME As String) Set SIM = ThisDocument.Model Dim MODULE As Arena.MODULE Set MODULE = SIM.Modules.Create("AdvancedTransfer", "Route", X, Y) MODULE.Data("Name") = NAME MODULE.Data("Routetime") = TIME 'ROUTE TIME MODULE.Data("Units") = TIME_UNIT 'TIME UNIT MODULE.Data("SG") = "Station" 'DESTINATION TYPE MODULE.Data("Station") = DES_NAME 'DESTINATION NAME MODULE.UpdateShapes Set MODULE = Nothing Set SIM = Nothing Xaxis = Xaxis + 1000 End Sub Public Sub STATION_MODULE(NAME As String, X As Single, Y As Single, ST_NAME As String) Set SIM = ThisDocument.Model Dim MODULE As Arena.MODULE Set MODULE = SIM.Modules.Create("AdvancedTransfer", "Station", X, Y) MODULE.Data("Name") = NAME 'NAME MODULE.Data("Station type") = "Station" 'TYPE MODULE.Data("Statn") = ST_NAME 'NAME OF STATION MODULE.UpdateShapes Set MODULE = Nothing Set SIM = Nothing Xaxis = Xaxis + 1000 End Sub Public Sub SEIZE_MODULE(NAME As String, QUEUE_NAME As String, RESOURCE_NAME As String, X As Single, Y As Single) Set SIM = ThisDocument.Model Dim MODULE As Arena.MODULE Set MODULE = SIM.Modules.Create("AdvancedProcess", "Seize", X, Y) MODULE.Data("Name") = NAME 'NAME MODULE.Data("Allocation") = "Wait" 'TYPE WAIT FOR RESOURCE IS "WAIT" MODULE.Data("QSG") = "Queue" 'QUEUE TYPE IS "QUEUE" MODULE.Data("QName") = QUEUE_NAME 'QUEUE NAME MODULE.Data("Resource Type") = "Resource" 'RESOURCE TYPE IS "RESOURCE" MODULE.Data("Resource Name") = RESOURCE_NAME 'RESOURCE NAME MODULE.Data("Quantity") = 'RESOURCE QUANTITY IS MODULE.UpdateShapes Set MODULE = Nothing Set SIM = Nothing Xaxis = Xaxis + 1000 End Sub Public Sub HOLD_MODULE(NAME As String, RESOURCE As String, X As Single, Y As Single) Set SIM = ThisDocument.Model Dim MODULE As Arena.MODULE B-20 Set MODULE = SIM.Modules.Create("AdvancedProcess", "Hold", X, Y) MODULE.Data("Name") = NAME 'NAME MODULE.Data("Type") = "Scan for Condition" 'TYPE MODULE.Data("Condition") = "STATE(" & RESOURCE & ") == IDLE_RES" 'NAME OF RESOURCE TO WAIT FOR IDLE MODULE.UpdateShapes Set MODULE = Nothing Set SIM = Nothing Xaxis = Xaxis + 1000 End Sub Public Sub MATCH_MODULE(NAME As String, NUM_MATCH As Byte, X As Single, Y As Single) Set SIM = ThisDocument.Model Dim MODULE As Arena.MODULE Set MODULE = SIM.Modules.Create("AdvancedProcess", "Match", X, Y) MODULE.Data("Name") = NAME 'NAME MODULE.Data("Num") = NUM_MATCH 'NUMBER OF MATCH ' IF TASK HAS > SUCCESSOR K1 = 'RESET K1 (FOR CONNECTION EASY TO SEE, LAST SEPERATAT CONNECT WITH SECOND ROUTE) ' -GENERATE SEPARATE MODULE For K = To SUC_NUM ' DUE TO SEPARATE FOR ENTITY SEPARATE_MODULE "SEPARATE" & TASK & "_" & (K - 1), Xaxis, Yaxis K1 = K1 + Next ' -GENERATE ROUTE MODULE ReDim CHECK(1 To SUC_NUM) As Boolean For K = To SUC_NUM CHECK(K) = False ' -CHECK TO SEE WHETHER SUCCESSOR IN THE SAME STATION OR NOT If OPSET.OP(TASK).STATION_ID OPSET.OP(OPSET.OP(TASK).ISUC(K)).STATION_ID Then BATCH_MODULE1 "STATION_B" & TASK & "_" & OPSET.OP(TASK).ISUC(K), SIZE_BATCH, Xaxis, Yaxis CHECK(K) = True End If ROUTE_MODULE "ROUTE" & TASK & "_" & OPSET.OP(TASK).ISUC(K), Xaxis, Yaxis, 0, PRO_TIMEUNIT, "STATION" & TASK & "_" & OPSET.OP(TASK).ISUC(K) Xaxis = Xaxis - 1000 'RESET X Yaxis = Yaxis + 500 ' DECREASE Y B-28 Next Yaxis = Yaxis - 500 ' INCREASE Y ' GENERATE CONNECTION For K = To SUC_NUM 'DUE TO SMART CONNECTION AUTO CONNECT FIRST ROUTE K=1 N_MODULE1 = "SEPARATE" & TASK & "_" & (K1) If CHECK(K) = True Then N_MODULE2 = "STATION_B" & TASK & "_" & OPSET.OP(TASK).ISUC(K) Else N_MODULE2 = "ROUTE" & TASK & "_" & OPSET.OP(TASK).ISUC(K) End If CONNECTION_TYPE3 N_MODULE1, N_MODULE2 K1 = K1 - Next End Select Case Is > ' -IF TASK HAS > PREDECESSOR, PRE_NUM>=2 Set SIM = ThisDocument.Model SIM.ActiveView.AutoConnect = False 'DELETE AUTO SMAT CONNECTION Set SIM = Nothing ReDim N_STATION(1 To 2) As String Dim N_TEMP As String 'TEMPORARY NAME Dim INDEX As Boolean 'INDEX FOR IDENTIFY TIMES OF GENERATE ' -CHECK NUMBER OF PREDECESSOR -INDEX = True For K = To PRE_NUM - If INDEX = True Then 'GENERATE STATION STATION_MODULE "STATION" & OPSET.OP(TASK).IPRE(K) & "_" & TASK, Xaxis, Yaxis, "STATION" & OPSET.OP(TASK).IPRE(K) & "_" & TASK & TASK CONNECTION N_STATION(1) = "STATION" & OPSET.OP(TASK).IPRE(K) & "_" Set SIM = ThisDocument.Model SIM.ActiveView.AutoConnect = True 'AUTO SMAT Set SIM = Nothing Dim DistanceX As Boolean 'FOR ARRANGE MODULE TIDY DistanceX = False ' -CHECK TO SEE WHETHER PREDECESSOR IN THE SAME STATION OR NOT If OPSET.OP(TASK).STATION_ID OPSET.OP(OPSET.OP(TASK).IPRE(K)).STATION_ID Then SEPARATE_MODULE1 "STATION_S" & OPSET.OP(TASK).IPRE(K) & "_" & TASK, Xaxis, Yaxis N_STATION(1) = "STATION_S" & OPSET.OP(TASK).IPRE(K) & "_" & TASK Xaxis = Xaxis - 1000 'RESET X COORDINATE DistanceX = True End If Set SIM = ThisDocument.Model SIM.ActiveView.AutoConnect = False 'DELETE AUTO SMAT CONNECTION Set SIM = Nothing Xaxis = Xaxis - 1000 'RESET X COORDINATE Yaxis = Yaxis + 500 'DECREASE Y COORDINATE STATION_MODULE "STATION" & OPSET.OP(TASK).IPRE(K + 1) & "_" & TASK, Xaxis, Yaxis, "STATION" & OPSET.OP(TASK).IPRE(K + 1) & "_" & TASK N_STATION(2) = "STATION" & OPSET.OP(TASK).IPRE(K + 1) & "_" & TASK Set SIM = ThisDocument.Model SIM.ActiveView.AutoConnect = True 'AUTO SMAT CONNECTION B-29 Set SIM = Nothing ' -CHECK TO SEE WHETHER PREDECESSOR IN THE SAME STATION OR NOT If OPSET.OP(TASK).STATION_ID OPSET.OP(OPSET.OP(TASK).IPRE(K + 1)).STATION_ID Then SEPARATE_MODULE1 "STATION_S" & OPSET.OP(TASK).IPRE(K + 1) & "_" & TASK, Xaxis, Yaxis N_STATION(2) = "STATION_S" & OPSET.OP(TASK).IPRE(K + 1) & "_" & TASK DistanceX = False End If If DistanceX = True Then Xaxis = Xaxis + 1000 'INCREASE X End If Set SIM = ThisDocument.Model SIM.ActiveView.AutoConnect = False 'DELETE AUTO SMAT CONNECTION Set SIM = Nothing Yaxis = Yaxis - 500 'INCREASE Y COORDINATE INDEX = False Else 'GENERATE STATION (1 STATION FORM PREDECSECOR ,1 STATION IS TEMP FOR MATCH) STATION_MODULE N_TEMP, Xaxis, Yaxis, N_TEMP N_STATION(1) = N_TEMP Xaxis = Xaxis - 1000 'RESET X COORDINATE Yaxis = Yaxis + 500 'DECREASE Y COORDINATE STATION_MODULE "STATION" & OPSET.OP(TASK).IPRE(K + 1) & "_" & TASK, Xaxis, Yaxis, "STATION" & OPSET.OP(TASK).IPRE(K + 1) & "_" & TASK N_STATION(2) = "STATION" & OPSET.OP(TASK).IPRE(K + 1) & "_" & TASK CONNECTION SIM.ActiveView.AutoConnect = True 'AUTO SMAT Set SIM = Nothing ' -CHECK TO SEE WHETHER PREDECESSOR IN THE SAME STATION OR NOT If OPSET.OP(TASK).STATION_ID OPSET.OP(OPSET.OP(TASK).IPRE(K + 1)).STATION_ID Then SEPARATE_MODULE1 "STATION_S" & OPSET.OP(TASK).IPRE(K + 1) & "_" & TASK, Xaxis, Yaxis N_STATION(2) = "STATION_S" & OPSET.OP(TASK).IPRE(K + 1) & "_" & TASK End If Set SIM = ThisDocument.Model SIM.ActiveView.AutoConnect = False 'DELETE AUTO SMAT CONNECTION Set SIM = Nothing Yaxis = Yaxis - 500 'INCREASE Y COORDINATE INDEX = False End If ' GENERATE MATCH,BATCH,ROUTE MATCH_MODULE "MATCH" & TASK & "M" & K, 2, Xaxis, Yaxis BATCH_MODULE "BATCH" & TASK & "B" & K, 2, Xaxis, Yaxis ROUTE_MODULE "ROUTE" & TASK & "R" & K, Xaxis, Yaxis, 0, PRO_TIMEUNIT, "STATION" & TASK & "S" & K N_TEMP = "STATION" & TASK & "S" & K ' GENERATE CONNECTION CONNECTION_TYPE2 N_STATION(1), "MATCH" & TASK & "M" & K, CONNECTION_TYPE2 N_STATION(2), "MATCH" & TASK & "M" & K, CONNECTION_TYPE4 "MATCH" & TASK & "M" & K, "BATCH" & TASK & "B" & K, Set SIM = ThisDocument.Model B-30 CONNECTION_TYPE4 "MATCH" & TASK & "M" & K, "BATCH" & TASK & "B" & K, CONNECTION_TYPE5 "BATCH" & TASK & "B" & K, "ROUTE" & TASK & "R" & K Next Set SIM = ThisDocument.Model 'AUTO SMART CONNECTION SIM.ActiveView.AutoConnect = True Set SIM = Nothing STATION_MODULE N_TEMP, Xaxis, Yaxis, N_TEMP HOLD_MODULE "HOLD_OF_TASK" & TASK, RES_NAME, Xaxis, Yaxis 'SEIZE_MODULE "SEIZE_OF_TASK" & TASK, STATION_QUEUE, RES_NAME, Xaxis, Yaxis 'QUEUE_MODULE STATION_QUEUE 'FIND QUEUE_MODULE NOT CREATE PROCESS_MODULE "PROCESS_OF TASK" & TASK, Xaxis, Yaxis, RES_NAME, PRO_TIME, PRO_TIMEUNIT ' -CHECK NUMBER OF SUCCESSOR -Select Case SUC_NUM Case ' IF TASK IS FINAL TASK ROUTE_MODULE "ROUTE" & TASK & "_" & "END", Xaxis, Yaxis, 0, PRO_TIMEUNIT, "STATION" & TASK & "_" & "END" Yaxis = Yaxis + 500 ' DECREASE Y Case ' IF TASK HAS ONLY SUCCESSOR ' -CHECK TO SEE WHETHER SUCCESSOR IN THE SAME STATION OR NOT If OPSET.OP(TASK).STATION_ID OPSET.OP(OPSET.OP(TASK).ISUC(1)).STATION_ID Then BATCH_MODULE1 "STATION_B" & TASK & "_" & OPSET.OP(TASK).ISUC(1), SIZE_BATCH, Xaxis, Yaxis End If ROUTE_MODULE "ROUTE" & TASK & "_" & OPSET.OP(TASK).ISUC(1), Xaxis, Yaxis, 0, PRO_TIMEUNIT, "STATION" & TASK & "_" & OPSET.OP(TASK).ISUC(1) Yaxis = Yaxis + 500 ' DECREASE Y Case Is > ' IF TASK HAS > SUCCESSOR K1 = 'RESET K1 (FOR CONNECTION EASY TO SEE, LAST SEPERATAT CONNEC TWITH SECOND ROUTE) ' -GENERATE SEPARATE MODULE For K = To SUC_NUM ' DUE TO SEPARATE FOR ENTITY SEPARATE_MODULE "SEPARATE" & TASK & "_" & (K - 1), Xaxis, Yaxis K1 = K1 + Next ' -GENERATE ROUTE MODULE ReDim CHECK(1 To SUC_NUM) As Boolean For K = To SUC_NUM CHECK(K) = False ' -CHECK TO SEE WHETHER SUCCESSOR IN THE SAME STATION OR NOT If OPSET.OP(TASK).STATION_ID OPSET.OP(OPSET.OP(TASK).ISUC(K)).STATION_ID Then BATCH_MODULE1 "STATION_B" & TASK & "_" & OPSET.OP(TASK).ISUC(K), SIZE_BATCH, Xaxis, Yaxis CHECK(K) = True End If ROUTE_MODULE "ROUTE" & TASK & "_" & OPSET.OP(TASK).ISUC(K), Xaxis, Yaxis, 0, PRO_TIMEUNIT, "STATION" & TASK & "_" & OPSET.OP(TASK).ISUC(K) Xaxis = Xaxis - 1000 'RESET X Yaxis = Yaxis + 500 ' DECREASE Y Next Yaxis = Yaxis - 500 ' INCREASE Y ' GENERATE CONNECTION B-31 For K = To SUC_NUM 'DUE TO SMART CONNECTION AUTO CONNECT FIRST ROUTE K=1 N_MODULE1 = "SEPARATE" & TASK & "_" & (K1) If CHECK(K) = True Then N_MODULE2 = "STATION_B" & TASK & "_" & OPSET.OP(TASK).ISUC(K) Else N_MODULE2 = "ROUTE" & TASK & "_" & OPSET.OP(TASK).ISUC(K) End If CONNECTION_TYPE3 N_MODULE1, N_MODULE2 K1 = K1 - Next End Select End Select Next Next ' -C) GENERATE DISPOSE MODULE & RECORD OUTPUT AFTER A INTERVAL -Yaxis = Yaxis + 500 ' DECREASE Y COODINATE For I = To SOL.NS ' CHECK VERY STATION IN SOLUTION For J = To SOL.ST(I).NUM ' CHECK EVERY TASK IN A STATION TASK = SOL.ST(I).OP(J).ID If OPSET.OP(TASK).NIS = Then Xaxis = X0 STATION_MODULE "STATION" & TASK & "_" & "END", Xaxis, Yaxis, "STATION" & TASK & "_" & "END" RECORD_MODULE "OUTPUT_" & TASK, Xaxis, Yaxis, "OUTPUT_" & TASK DISPOSE_MODULE TASK & "_" & "END", Xaxis, Yaxis ' -C1) GENERATE RECORD INTERVAL MODULE COUNT_NAME = "OUTPUT_" & TASK 'NOTE: LINE BALACING HAVE OUPUT INTERVAL_OUTPUT = "INTERVAL_OUTPUT" & TASK 'TALLY NAME- STRING FOR EASY REMEMBER WHEN ACCES AFTER END REPLICATION PREVIOUS_OUTPUT = "PREVIOUS_OUTPUT" & TASK 'TALLY NAME- STRING FOR EASY REMEMBER WHEN ACCES AFTER END REPLICATION CREATE_MODULE "INTEVAL_OUPUT" & TASK & "_" & "END", "RECORD1", Xaxis, Yaxis, RECORD_INTERVAL, 1, "Infinite", "Hours", WARM_UP OUTPUT_INTERVAL "OUTPUT_INTERVAL" & TASK, COUNT_NAME, PREVIOUS_OUTPUT, Xaxis, Yaxis, INTERVAL_OUTPUT OUTPUT_PREVIOUS "OUTPUT_PREVIOUS" & TASK, COUNT_NAME, Xaxis, Yaxis, PREVIOUS_OUTPUT DISPOSE_MODULE "OUPUT_RECORD" & TASK & "_" & "END", Xaxis, Yaxis Yaxis = Yaxis + 500 ' DECREASE Y COODINATE End If Next Next ' -D) GENERATE MODULE & RECORD UTILIZATION AFTER A INTERVAL For I = To SOL.NS Xaxis = X0 RES_NAME = "RESOURCE" & I CREATE_MODULE "INTEVAL_" & RES_NAME, "RECORD1", Xaxis, Yaxis, RECORD_INTERVAL, 1, "Infinite", "Hours", WARM_UP UTIL_INTERVAL "UTIL_INTERVAL" & I, RES_NAME, "UTIL_PREVIOUS" & I, Xaxis, Yaxis, Val(RECORD_INTERVAL), "UTIL_INTERVAL" & I UTIL_PREVIOUS "UTIL_PREVIOUS" & I, RES_NAME, Xaxis, Yaxis, "UTIL_PREVIOUS" & I DISPOSE_MODULE "UTIL" & I, Xaxis, Yaxis Yaxis = Yaxis + 500 B-32 Next ' -E) GENERATE STASTISTIC FOR CHECKING -'STATISTIC_MODULE "Statistic1", INTERVAL_OUTPUT 'For I = To SOL.NS 'STATISTIC_MODULE "Res" & I, "UTIL_INTERVAL" & I 'Next '================III) SIMULATION RUN FOR SOLUTION WITH SPECIFY REPLICATION============ REP_INDEX = 'RESET REP INDEX Set SIM = ThisDocument.Model ' SIM PARAMETER SIM.NumberOfReplications = REP_NUM SIM.HoursPerDay = HOUR_P_DAY SIM.WarmUpPeriod = SIM.WarmUpPeriodTimeUnits = smDays SIM.ReplicationLength = REP_LEN SIM.ReplicationLengthTimeUnits = REP_LEN_TIMEUNIT SIM.BaseTimeUnits = smHours ReDim OUTPUT(1 To REP_NUM) As Double ReDim RES_TIME(1 To SOL.NS, To REP_NUM) As Double 'REDIM RES_FREETIME FOR CACULATE THE STATION TIME ReDim FREETIME(1 To REP_NUM) As Double Set SIMA = SIM.SIMAN SIM.QuietMode = True 'DON'T DISPLAY REPORT SIM.BatchMode = True SIM.FastForward ' -EVERY REPLICATION END , RESOURCE _TIME WAS RECORD(REFER THIS DOCUMENT) ' -REP_INDEX INCREASE BY SIM.End Set SIMA = Nothing Set SIM = Nothing ' COMPUTE OUTPUT / TOTALFREETIME AVERAGE ACROSS REPLICATIONS SOL.OUTPUT = SOL.FREETIME = For I = To REP_NUM SOL.OUTPUT = SOL.OUTPUT + OUTPUT(I) / REP_NUM SOL.FREETIME = SOL.FREETIME + FREETIME(I) / REP_NUM Next '================IV) COMPUTE & ASSIGN TIME (SIMULATION) FOR STATION============ 'For I = To SOL.NS 'SOL.ST(I).STATION_TIME = 'SET STATION TIME =0 BEFORE COMPUTE SIMULATION TIME 'For J = To REP_NUM 'SOL.ST(I).STATION_TIME = SOL.ST(I).STATION_TIME + RES_TIME(I, J) / REP_NUM 'Next 'Next End Sub B-33 ... TÍCH HỢP TỐI ƯU VÀO MƠ PHỎNG ĐỂ GIẢI BÀI TỐN CÂN BẰNG CHUYỂN NHIỆM VỤ LUẬN VĂN ƒ Kỹ thuật mô giải thuật di truyền tối ưu hóa tốn cân dây chuyền sản xuất ƒ Xây dựng mô hình tích hợp kỹ thuật tối. .. hỉnh tích hợp mơ giải thuật di truyền áp dụng cho toán cân chuyền ƒ Đề xuất lời giải cân chuyền cho toán cụ thể 1.3 Nội dung giới hạn luận văn Tích hợp kĩ thuật tối ưu vào mơi trường mơ để áp... tra giá trị mô hình phương pháp khoảng tin cậy 23 3.5 Cơ chế tối ưu mô 23 CHƯƠNG TÍCH HỢP TỐI ƯU VÀ MƠ PHỎNG CHO BÀI TỐN CÂN BẰNG CHUYỀN 26 4.1 Xây dựng giải thuật di

Ngày đăng: 15/02/2021, 17:50

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w