Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 153 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
153
Dung lượng
859,19 KB
Nội dung
Đại Học Quốc Gia Tp.Hồ Chí Minh TRƯỜNG ĐẠI HỌC BÁCH KHOA - NGUYỄN NGỌC VĂN QUÂN TỐI ƯU HÓA ĐA MỤC TIÊU CHUỖI CUNG ỨNG SẢN PHẨM ÁP DỤNG VÀO CÔNG TY CỔ PHẦN MAY VIỆT TIẾ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 07 năm 2009 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 : (Ghi rõ họ, tên, học hàm, học vị chữ ký) Cán chấm nhận xét : (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 25 tháng năm 2009 ĐẠI HỌC QUỐC GIA TP HCM CỘNG HOÀ XÃ HỘI CHỦ NGHIÃ VIỆT NAM TRƯỜNG ĐẠI HỌC BÁCH KHOA Độc Lập - Tự Do - Hạnh Phúc -oOo Tp HCM, 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 Ngọc Văn Quân Giới tính : Nam Ngày, tháng, năm sinh : 15/01/1982 Nơi sinh : T.p Hồ Chí Minh Chuyên ngành : Kỹ Thuật Hệ Thống Cơng Nghiệp MSSV: 02907244 Khóa: 2007 1- TÊN ĐỀ TÀI: TỐI ƯU HÓA ĐA MỤC TIÊU CHUỖI CUNG ỨNG SẢN PHẨM ÁP DỤNG VÀO CÔNG TY CỔ PHẦN MAY VIỆT TIẾN 2- NHIỆM VỤ LUẬN VĂN: • Tìm hiểu nghiên cứu lý thuyết tối ưu, tối ưu đa mục tiêu, chuỗi cung ứng, lý thuyết mô rời rạc phần mềm mô ARENA • Tìm hiểu trạng, phân tích trạng hoạt động phân phối liệu liên quan công ty Việt Tiến • Phân tích chuỗi cung ứng, chi phí mức phục vụ có ảnh hưởng đến chuỗi cung ứng • Thiết lập mơ hình tối ưu, giải mơ hình áp dụng mơ đánh giá mơ hình tối ưu giải ứng dụng vào công ty cổ phần may Việt Tiến 3- NGÀY GIAO NHIỆM VỤ : 02/02/2009 4- NGÀY HOÀN THÀNH NHIỆM VỤ : 03/07/2009 5- HỌ VÀ TÊN CÁN BỘ HƯỚNG DẪN: 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 GVC.Ths Nguyễn Như Phong i LỜI CẢM ƠN Sau năm học giảng đường Đại học Bách Khoa Thành phố Hồ Chí Minh, chúng em nhận hướng dẫn dạy bảo tận tình Thầy Cô, Thầy Cô truyền đạt kiến thức bổ ích tri thức cách làm người, Thầy Cô cho chúng em sức mạnh vượt qua khó khăn học tập để hôm chúng em hoàn thành tốt luận văn tốt nghiệp Em chân thành cảm ơn toàn thể Quý Thầy Cô trường Đại học Bách khoa Tp Hồ Chí Minh, toàn thể Quý Thầy Cô Bộ môn Kỹ thuật Hệ thống Công nghiệp Thầy PGS.TS Hồ Thanh Phong tận tình hướng dẫn đôn đốc em hoàn thành tốt luận văn Em chân thành gửi lời cám ơn đến Ban Giám đốc Công ty Cổ Phần may Việt Tiến toàn thể Anh Chị cán bộ, công nhân viên công ty tạo điều kiện cho em thâm nhập, tìm hiểu thực tế sản xuất thu thập số liệu Quý Công ty Con xin gửi lời cảm ơn sâu sắc đến Ba Mẹ, Gia đình dạy bảo dành cho điều kiện tốt học tập Và cảm ơn bạn quan tâm, hỗ trợ học tập trình thực luận văn Thành phố Hồ Chí Minh, tháng năm 2009, ii TĨM TẮT LUẬN VĂN Chuỗi cung ứng(supply chain) hay gọi mạng hậu cần (logistics network) hệ thống bao gồm nhà cung ứng( Suppliers), nhà sản xuất(Manufacturing centers), nhà kho (warehouses), nhà phân phối(distribution centers) nhà bán lẻ(retail outlets) nối kết với dòng thông tin: thông tin nhu cầu từ khách hàng thông tin hàng hóa, nguyên vật liệu… từ nhà cung ứng đến khách hàng Mục tiêu thiết lập (hoặc tái cấu trúc chuỗi cung ứng) quản lý chuỗi cung ứng để tổng chi phí chuỗi cung ứng nhỏ đảm bảo độ thỏa mãn khách hàng Tối ưu hóa chuỗi cung ứng dựa mô hình toán học từ lâu nghiên cứu phát triển bới nhiều tác giả áp dụng vào thực tế – dù toán tối ưu chuỗi cung ứng xem toán NP-HARD Tuy nhiên, thực tế chứng minh, áp dụng mô hình toán học để tối ưu hóa chuỗi cung ứng chưa đủ, chất chuỗi cung ứng chất động ngẫu nhiên Hiện nay, nhà nghiên cứu có xu hướng áp dụng giải thuật tìm kiếm kết hợp với mô nhằm tìm lời giải tối ưu đáp ứng thay đổi liên tục thực tế Luận văn nhằm mục đích tìm hiểu kết hợp ưu điểm mơ hình tối ưu tốn học mô hình mô nhằm giải toán đa mục tiêu cho mạng lưới phân phối sản phẩm công ty Cổ Phần May Việt Tiến iii Mục Lục LỜI CẢM ƠN i TÓM TẮT LUẬN VĂN ii Mục Lục iii Danh Sách Hình Vẽ v Danh Sách Bảng Biểu vi Danh Sách Kí Hiệu, Viết Tắt: vii CHƯƠNG 1: GIỚI THIỆU 1.1 1.2 1.3 1.4 1.5 1.6 Giới thiệu đề tài: Mục tiêu luận văn: Nội dung luận văn: .2 Phạm vi nghiên cứu: Khung công việc cho việc thực để tài luận văn: Tổng quát cấu trúc đề tài CHƯƠNG 2: CÁC NGHIÊN CỨU LIÊN QUAN 2.1 2.2 Ứng dụng mô đánh giá hoạt động cải tiến chuỗi cung ứng Ứng dụng tối ưu hóa mơ thiết kế chuỗi cung ứng CHƯƠNG 3: PHƯƠNG PHÁP LUẬN VÀ LÝ THUYẾT LIÊN QUAN 3.1 Chuỗi cung ứng quản lí chuỗi cung ứng: 3.1.1 Đặc điểm chuỗi cung ứng: 3.1.2 Hiệu ứng Risk Pooling: 3.1.3 Hiệu ứng Bullwhip: .8 3.1.4 Các mục tiêu mâu thuẫn chuỗi cung ứng: 3.1.5 Các tiêu chí đo lường hoạt động chuỗi cung ứng 10 3.1.6 Các phương pháp mơ hình hóa chuỗi cung ứng: 10 3.2 Tối ưu hóa mơ chuỗi cung ứng: 12 3.3 Mô công nghiệp dịch vụ .13 CHƯƠNG 4: PHƯƠNG PHÁP KẾT HỢP TỐI ƯU VÀ MÔ PHỎNG GIẢI BÀI TOÁN LOGISTIC ĐA CẤP BẬC .17 4.1 Giới thiệu tóan logistic cấp bậc 17 4.5.1 Bài toán WLP ( warehouse location Problem) 17 4.5.2 Bài toán MSTP ( Modal Shift Transportation Problem): 18 4.2 Bài toán chuỗi cung ứng: .19 4.2.1 Mơ hình kết hợp WLP MSTP 19 4.2.2 Xây dựng mơ hình chuỗi cung ứng sản phẩm công ty May Việt Tiến: .20 4.3 Áp dụng vào thực tế công ty 23 4.2.3 Ước lượng tham số lực kho trung tâm phân phối .27 4.4 Giới thiệu mô phỏng: 29 4.5 Xây dựng mơ hình mơ cho tóan logistic đa cấp bậc 30 4.5.1 Phần mềm mô Arena: .30 4.5.2 Xây dựng mơ hình mơ Arena cho bi tóan Logistic 30 CHƯƠNG 5: ÁP DỤNG GIẢI THUẬT TỐI ƯU VÀ MÔ PHỎNG VÀO TÁI CƠ CẤU CHUỖI CUNG ỨNG CÔNG TY CP MAY VIỆT TIẾN 39 5.1 Giới thiệu Công Ty Cổ Phần May Việt Tiến .39 5.1.1 Quá trình hình thành phát triển 39 iv 5.1.2 Chiến lược phát triển thị trường quốc tế nội địa .40 5.1.3 Sơ lược tình hình sản xuất phân phối sản phẩm khu vực nội địa .42 5.2 Áp Dụng Giải Thuật Tối ưu Mơ Phỏng cho q trình phân phối sản phẩm Việt Tiến: 44 5.2.1 Tham số đầu vào: .44 5.2.2 Dữ liệu thu thập: 45 5.2.3 Áp Dụng Phần Mềm Tối Ưu Mơ Phỏng Cho Tốn Thật: 46 5.2.4 Phần mềm tích hợp tối ưu mô phỏng: .47 5.2.5 Kết toán: 48 5.3 Cơ chế tối ưu mơ diễn giải sau: 48 5.4 Lời giải toán: 49 Chương 6: Kết Luận Và Kiến Nghị .54 6.1 6.2 Kết Luận 54 Kiến Nghị 54 TÀI LIỆU THAM KHẢO .A v Danh Sách Hình Vẽ Hình 1.1: Mơ hình chuỗi cung ứng đơn giản Hình 1.2: Khung cơng việc cho việc thực đề tài luân văn .3 Hình 3.1: Mơ hình chuỗi cung ứng chi phí .8 Hình 3.2: Sự nhiễu loạn hiệu ứng Bullwhip .9 Hình 3.3: Các loại mơ hình hóa chuỗi cung ứng 12 Hình 3.4: Các bước thực thử nghiệm mô 16 Hình 4.1: Mơ hình mạng lưới phân phối có sử dụng kho trung chuyển 17 Hình 4.2: Cấp bậc tồn kho 26 Hình 4.3: Sơ đồ Logic Mơ tả Q trình đặt hàng nhà bán lẻ 31 Hình 4.4: Minh họa trình phát sinh đơn hàng 32 Hình 4.5: Cơ chế phân phối đơn hàng đến nhà sản xuất 32 Hình 4.6: Sơ đồ logic trình hoạt động nhà sản xuất 33 Hình 4.7: Trình Tự hoạt động nhà sản xuất .34 Hình 4.8: Sơ đồ Logic hoạt động nhà phân phối 35 Hình 4.9: Trình tự phân phối sản phẩm trung tâm phân phối 36 Hình 4.10: Sơ đồ logic hoạt động điểm nhận khách hàng 36 Hình 4.11 Quá trình tiếp nhận khách hàng 37 Hình 4.12: Lưu đồ giải thuật kết hợp tối ưu mơ 38 Hình 5.1: Tồn cảnh công ty may việt tiến 39 Hình 5.2: Trung bình di chuyển sản lượng mơ hình mơ với w=2 46 Hình 5.3: trung bình di chuyển sản lượng mơ hình mơ với w=3 47 vi Danh Sách Bảng Biểu Bảng 3.1: Các tiêu chí lượng hóa đánh giá hoạt động chuỗi cung ứng 11 Bảng 4.1: Năng lực lưu chuyển kho chi phí thuê kho trạm cung ứng 23 Bảng 4.2: Năng lực chi phí thời gian sản xuất nhà máy 24 Bảng 4.3: Lượng sản phẩm cung ứng cho trạm phân phối 24 Bảng 4.4: Lượng thành phẩm lưu chuyển trạm phân phối 24 Bảng 4.5: Ma trận phân phối cho lời giải ban đầu .25 Bảng 4.6: Nhu cầu bình quân tháng trung tâm phân phối 28 Bảng 4.7: Mức tồn kho tối đa tối thiểu trung tâm phân phối dự định 29 Bảng 5.1: Số lượng nhà máy suất sản xuất chủng loại 40 Bảng 5.2: Kết hoạt động kinh doanh theo cấu mặt hàng thị trường nội địa .41 Bảng 5.3: Doanh thu từ hệ thống kênh phân phối 43 Bảng 5.4: Bảng kê số lượng đại lý theo khu vực 44 Bảng 5.5: Các tham số đầu vào trung tâm phân phối 45 Bảng 5.6: Các tham số đầu vào xác định lực sản xuất chi phí sản xuất nhà máy .45 Bảng 5.7: Phân bố thời gian gia công nhà máy 45 Bảng 5.8: Giá trị tiêu chuẩn thỏa mãn điều kiện dừng bước lập thứ 10 .49 Bảng 5.9: Số nguồn lực luân chuyển nhà máy nhà phân phối đề nghị 50 Bảng 5.10: So sánh số nguồn lực mơ hình thực tế 50 Bảng 5.11: Chi phí vận chuyển sản xuất khu vực hàng nội địa 51 Bảng 5.12: Ma trận phân phối từ nhà phân phối đến nhà bán lẻ 51 Bảng 5.13: Ma trận phân phối từ nhà sản xuất đên trung tâm phân phối 53 vii Danh Sách Kí Hiệu, Viết Tắt: SCOR: Supply Chains Operations Reference Model SSC: Simulation of Supply Chains SC: Supply Chains TL: Truck Load LTL: Less Than Truck Load NSX: nhà sản xuất NPP: nhà phân phối SP: sản phẩm WIP: bán thành phẩm F 46 Data("othername(1)") = "SLSPB(custid,2)" Data("VALUE(1)") = "SLSPB(custid,2)+ SL" UpdateShapes End With Set MYCONN = connect(myDecide, myass) Set MYCONN = connect(myass, myDispose) ' khoi tao logic cua DC With myexcel.Workbooks(myinputfile).Worksheets("data for PlanttoDC") For i = To soDc k=1 Set myStation = station("DistCenter " & i, "DC" & i, x(k), y(i)) Set myDecide = Decide("DC " & i & "Decide", "sl>0", x(k + 1), y(i)) Set MySeperate = m.Modules.create("BasicProcess", "Separate", x(k + 2), y(i)) With MySeperate Data("name") = "Dc" & i & "Separate" Data("type") = "Split Existing Batch" Data("member attributes") = "Retain original entity value" UpdateShapes End With Set MyProcess = process(x(k + 3), y(i), "DC " & i & " Van chuyen", "Dc" & i & "ToCustTime(custid)", "Dc" & i & "_Trans") Set MyRoute = route("Dc" & i & "Route" & i, x(k + 4), y(i), 0) MyRoute.Data("station") = "custzone" Set Myconnect = connect(myDecide, MyRoute) Next End With Set MyProcess = Nothing Set MyRoute = Nothing Set Myconnect = Nothing Set MySeperate = Nothing Set myStation = Nothing Set myDispose = Nothing Set myass = Nothing Set MYCONN = Nothing End Sub Private Sub KhoiTaoBienTrongArena() On Error Resume Next Dim myvar As Arena.Module, i As Integer Dim j As Integer, index As Long 'tao bien dem so luong san pham ' Set myvar = CreateArrayVariable("SLSPA", CStr(SoKhach), "2") F 47 Set myvar = CreateArrayVariable("SLSPB", CStr(SoKhach), "2") For i = To SoNhaSx Set myvar = CreateArrayVariable("ktdc" & i, CStr(soDc), "") Set myvar = CreateArrayVariable("tongsodon" & i, CStr(soDc), "") Set myvar = CreateArrayVariable("Plant" & i & "ToDcTime", CStr(soDc), "") ' 'doc thoi gian van chuyen tu Plant i den Dc j ' With myexcel.Workbooks(myinputfile).Worksheets("data for PlanttoDC") index = m.Modules.FindByData("Name", "Plant" & i & "ToDcTime", 1) Set myvar = m.Modules.Item(index) For j = To soDc myvar.Data("Initial Value(" & j & ")") = Range("PlantToDcTime")(i, j) Next myvar.UpdateShapes End With Next For i = To soDc Set myvar = CreateArrayVariable("Dc" & i & "ToCustTime", CStr(SoKhach), "") ' 'doc thoi gian van chuyen tu Dc i den Customer j ' With myexcel.Workbooks(myinputfile).Worksheets("data for DCtoReTailer") index = m.Modules.FindByData("Name", "Dc" & i & "ToCustTime", 1) Set myvar = m.Modules.Item(index) For j = To SoKhach If CInt(.Range("dcopened")(1, i).value) > Then myvar.Data("Initial Value(" & j & ")") = Range("DcToCustTime")(j, i) End If Next myvar.UpdateShapes End With Next ' -'tao bien xac dinh kich thuoc ' -Set myvar = CreateArrayVariable("psize", CStr(SoLoaiSp), "") With myvar Data("Initial Value(1)") = "0.046" Data("Initial Value(2)") = "0.082" UpdateShapes F 48 End With ' -'doc nhung du lieu ban dau vao Arena ' -With myexcel.Workbooks(myinputfile).Worksheets("data for PlanttoDC") For i = To SoNhaSx For j = To index = m.Modules.FindByData("name", "P" & i & "process" & j, 1) Set myvar = m.Modules.Item(index) If j < Then myvar.Data("expression") = "(" & Range("PlantdataforSimu")(j + 7, i + 1) & ")*sl" myvar.UpdateShapes Else myvar.Data("expression") = "(" & Range("PlantdataforSimu")(11, i + 1) & ")*sl" myvar.UpdateShapes End If Next Next End With ' -'khoi tao expression xac suat chan Plant For i = To SoLoaiSp Set myvar = CreateExpression("CPlantForProduct" & i, CStr(soDc), "") Next ' -'khoi tao AdvancedSet chon nha may ' -Set myvar = createAdvancedSet("ChoosePlant") With myvar For i = To SoNhaSx Data("Other(" & i & ")") = "P" & i & "Station1" Next End With ' -'khoi tao advancedSet chon DC ' -Set myvar = createAdvancedSet("ChooseDistCenter") Set myvar = Nothing End Sub Private Function createBatch(name As String, batchsize As String, x As Double, y As Double) As Arena.Module F 49 Set createBatch = m.Modules.create("basicprocess", "Batch", x, y) With createBatch Data("name") = name Data("type") = "temporary" Data("batch size") = batchsize Data("Save criterion") = "last" Data("rule") = "any entity" UpdateShapes End With End Function Private Function CreateResource(ResName As String, SL As Integer) As Arena.Module 'tam thoi de lai cho sap xep lai mo hinh cho chinh xac Set CreateResource = m.Modules.create("basicprocess", "Resource", 100, 100) With CreateResource Data("name") = ResName Data("type") = "fixed capacity" Data("capacity") = CStr(SL) UpdateShapes End With End Function Private Function createSingleVariable(varname As String) As Arena.Module Set createSingleVariable = m.Modules.create("basicprocess", "variable", 100, 100) With createSingleVariable Data("name") = varname UpdateShapes End With End Function Private Function CreateExpression(ten As String, ByVal sodong As String, ByVal socot As String) As Arena.Module Dim i As Integer, j As Integer, k As Integer Set CreateExpression = m.Modules.create("AdvancedProcess", "expression", 100, 100) CreateExpression.Data("Name") = ten If sodong "" Then CreateExpression.Data("dim1") = sodong If socot "" Then CreateExpression.Data("dim2") = socot CreateExpression.UpdateShapes End Function Private Sub createStatistic() F 50 Dim mystat As Arena.Module Dim i As Integer, j As Integer For i = To SoNhaSx For j = To Set mystat = m.Modules.create("advancedProcess", "Statistic", 100, 100) With mystat Data("Name") = "P" & i & "Statistic" & j Data("Type") = "Frequency" Data("ValueState") = "State" Data("Fres") = "P" & i & "Res" & j Data("Flabel") = "P" & i & "Res" & j & "Status" UpdateShapes End With Next Next End Sub Private Function createAdvancedSet(asetname As String) As Arena.Module Dim myAset As Arena.Module Set myAset = m.Modules.create("AdvancedProcess", "Advanced Set", 100, 100) With myAset Data("Name") = asetname Data("Type") = "Other" UpdateShapes End With Set createAdvancedSet = myAset Set myAset = Nothing End Function Private Sub updateResource() On Error Resume Next 'khoi tao cac bien no file dulieu Dim i As Integer, j As Integer, index As Long, Myres As Arena.Module With myexcel.Workbooks(myinputfile).Worksheets("data for PlanttoDC") For i = To SoNhaSx For j = To index = m.Modules.FindByData("name", "P" & i & "Res" & j, 1) Set Myres = m.Modules.Item(index) Myres.Data("capacity") = Range("plantdataforsimu")(j, i + 1) Next Next For i = To soDc If CInt(.Range("dcopened")(i).value) > Then index = m.Modules.FindByData("name", "Dc" & i & "_Trans", 1) Set Myres = m.Modules.Item(index) F 51 Myres.Data("capacity") = Range("DcTransRes")(1, i) End If Next End With Set Myres = Nothing End Sub Private Sub updateMatrix() Dim i As Integer, j As Integer, k As Integer, l As Integer, flag As Long Dim tileDc As Double, strDc As String, strplant As String Dim totalDc As Double Dim myass As Arena.Module, index As Long 'tim bien gan DC With myexcel.Workbooks(myinputfile).Worksheets("data for DCtoRetailer") For i = To SoKhach strDc = "" For k = To SoLoaiSp - strDc = "" totalDc = For j = To soDc strplant = "" tileDc = CDbl(.Range("DcMatrix")(i, j + (k * soDc)).value / Range("demand")(i, k + 1).value) tileDc = Round(tileDc, 2) ' Debug.Print i & ": >" & tileDc If (tileDc > 0) Then If (tileDc < 1) Then totalDc = totalDc + tileDc If totalDc = Then strDc = strDc & totalDc & "," & j totalDc = Else strDc = strDc & tileDc & "," & j & "," End If ElseIf tileDc = Then strDc = j End If If tileDc = Then Exit For End If Next 'for DC flag = InStr(1, Trim(strDc), ",") F 52 If flag > Then strDc = "Disc(" & strDc & ")" End If If Trim(strDc) "" Then Debug.Print strDc index = m.Modules.FindByData("name", "R" & i & " Ass" & k + 2) Set myass = m.Modules(index) myass.Data("Type(3)") = "attribute" myass.Data("aname(3)") = "Dc" myass.Data("value(3)") = strDc myass.Data("Type(4)") = "attribute" myass.Data("aname(4)") = "Plantstation" myass.Data("value(4)") = "CPlantForProduct" & k + & "(dc)" myass.UpdateShapes End If Next Next End With End Sub Private Sub updatePlantExpress() Dim i As Integer, j As Integer, k As Integer Dim str As String, tile As Double, Total As Double, index As Long, myindex As Long Dim myexpress As Arena.Module With myexcel.Workbooks(myinputfile).Worksheets("data for PlanttodC") For k = To soDc index = index + For i = To SoLoaiSp Total = str = "" For j = To SoNhaSx tile = Range("PlantRatioMatrix")(j + SoLoaiSp * (i - 1), k).value If tile > Then If tile < Then Total = Total + tile If Total = Then str = str & Total & "," & j Total = Else str = str & tile & "," & j & "," End If Else str = j F 53 End If End If Next j = CLng(InStr(1, Trim(str), ",")) If j > Then str = "Disc(" & Trim(str) & ")" End If If Trim(str) "" Then myindex = m.Modules.FindByData("name", "CPlantForProduct" & i, 1) ' ")") Set myexpress = m.Modules.Item(myindex) myexpress.Data("value(" & index & ")") = str Debug.Print index & " > " & myexpress.Data("value(" & index & myexpress.UpdateShapes End If Next Next End With Set myexpress = Nothing End Sub Private Sub updateAsetForDc() Dim i As Integer, dem As Integer Dim myvar As Arena.Module, index As Long index = m.Modules.FindByData("name", "ChooseDistCenter", 1) Set myvar = m.Modules.Item(index) For i = To soDc myvar.Data("Other(" & i & ")") = "DC" & i Next Set myvar = Nothing End Sub Public Sub UpdateTotal() updateResource updateMatrix updatePlantExpress updateAsetForDc End Sub Module Modlingo Public Enum LSerrorCodeLng LSERR_NO_ERROR_LNG = F 54 LSERR_OUT_OF_MEMORY_LNG = LSERR_UNABLE_TO_OPEN_LOG_FILE_LNG = LSERR_INVALID_NULL_POINTER_LNG = LSERR_INVALID_INPUT_LNG = End Enum Public Enum LScallbackInfoCodeLng LS_IINFO_VARIABLES_LNG = LS_IINFO_VARIABLES_INTEGER_LNG = LS_IINFO_VARIABLES_NONLINEAR_LNG = LS_IINFO_CONSTRAINTS_LNG = LS_IINFO_CONSTRAINTS_NONLINEAR_LNG = LS_IINFO_NONZEROS_LNG = LS_IINFO_NONZEROS_NONLINEAR_LNG = LS_IINFO_ITERATIONS_LNG = LS_IINFO_BRANCHES_LNG = LS_DINFO_SUMINF_LNG = LS_DINFO_OBJECTIVE_LNG = 10 LS_DINFO_MIP_BOUND_LNG = 11 LS_DINFO_MIP_BEST_OBJECTIVE_LNG = 12 End Enum Public Enum LSstatusCodeLng LS_STATUS_GLOBAL_LNG = LS_STATUS_INFEASIBLE_LNG = LS_STATUS_UNBOUNDED_LNG = LS_STATUS_UNDETERMINED_LNG = LS_STATUS_FEASIBLE_LNG = LS_STATUS_INFORUNB_LNG = LS_STATUS_LOCAL_LNG = LS_STATUS_LOCAL_INFEASIBLE_LNG = LS_STATUS_CUTOFF_LNG = LS_STATUS_NUMERIC_ERROR_LNG = End Enum Public Declare Function LSclearPointersLng _ Lib "LINGD10.DLL" (ByVal pLINGO As Long) Public Declare Function LScloseLogFileLng _ Lib "LINGD10.DLL" (ByVal pLINGO As Long) As Long Public Declare Function LScreateEnvLng _ Lib "LINGD10.DLL" () As Long F 55 Public Declare Function LSdeleteEnvLng _ Lib "LINGD10.DLL" (ByVal pLINGO As Long) As Long Public Declare Function LSexecuteScriptLng _ Lib "LINGD10.DLL" (ByVal pLINGO As Long, ByVal cScript As String) As Long Public Declare Function LSgetCallbackInfoDoubleLng _ Lib "LINGD10.DLL" Alias "LSgetCallbackInfoLng" (ByVal pLINGO As Long, _ ByVal nObject As Long, ByRef dResult As Double) As Long Public Declare Function LSgetCallbackInfoLongLng _ Lib "LINGD10.DLL" Alias "LSgetCallbackInfoLng" (ByVal pLINGO As Long, _ ByVal nObject As Long, ByRef nResult As Long) As Long Public Declare Function LSopenLogFileLng _ Lib "LINGD10.DLL" (ByVal pLINGO As Long, ByVal cFname As String) As Long Public Declare Function LSsetCallbackErrorLng _ Lib "LINGD10.DLL" (ByVal pLINGO As Long, ByVal pcbf As Long, _ ByRef pUserData As Double) As Long Public Declare Function LSsetCallbackSolverLng _ Lib "LINGD10.DLL" (ByVal pLINGO As Long, ByVal pcbf As Long, _ ByRef pUserData As Double) As Long Public Declare Function LSsetPointerLng _ Lib "LINGD10.DLL" (ByVal pLINGO As Long, ByRef dObject As Double, _ ByRef nPointersNow As Long) As Long Module ExcelUtility Option Explicit ' =========================================================== Public smutils_XL As Excel.Application Public smutils_XLInitialized As Boolean Public smutils_XLErrorHandling As Integer ' errorHandling constants Const smutils_ErrorsIgnore = Const smutils_ErrorsDisplayMessage = F 56 Const smutils_ErrorsLogToFile = ' =========================================================== Public Sub s_InitializeExcel(ByVal visible As Boolean, ByVal errorHandling As Integer) If smutils_XLInitialized Then Exit Sub On Error Resume Next Set smutils_XL = GetObject(, "Excel.Application") If Err.Number Then On Error GoTo InitExcelError Set smutils_XL = CreateObject("Excel.Application") End If Err.Clear smutils_XLInitialized = True smutils_XLErrorHandling = errorHandling If visible Then smutils_XL.visible = True Exit Sub ' ===== Errors ===== InitExcelError: smutils_HandleXLError ("Error " & Err & " initializing Excel.") Exit Sub End Sub Public Function s_OpenExcelWorkbook(filename As String) As Integer s_OpenExcelWorkbook = -1 On Error GoTo InitializeError If Not smutils_XLInitialized Then s_InitializeExcel False, smutils_ErrorsDisplayMessage End If On Error GoTo OpenError With smutils_XL Workbooks.Open (filename) s_OpenExcelWorkbook = Workbooks.Count End With Exit Function ' ===== Errors ===== InitializeError: smutils_HandleXLError ("Error " & Err & " initializing Excel.") Exit Function OpenError: If Err = 1004 Then F 57 smutils_HandleXLError ("Cannot find file " & filename & ".") Else smutils_HandleXLError ("Error " & Err & " opening file " & filename & ".") End If Exit Function End Function Public Function s_NewExcelWorkbook() As Integer s_NewExcelWorkbook = -1 On Error GoTo InitializeError If Not smutils_XLInitialized Then s_InitializeExcel False, smutils_ErrorsDisplayMessage End If On Error GoTo AddError With smutils_XL Workbooks.Add Do While Not (.Worksheets.Count > 5) Worksheets.Add Loop ' visible = True s_NewExcelWorkbook = Workbooks.Count End With Exit Function ' ===== Errors ===== InitializeError: smutils_HandleXLError ("Error " & Err & " initializing Excel.") Exit Function AddError: smutils_HandleXLError ("Error " & Err & " adding a workbook.") Exit Function End Function Public Sub s_SaveExcelWorkbook(ByVal fileHandle As Integer, ByVal filename As String) If Not smutils_XLInitialized Then GoTo ExcelNotInitializedError On Error Resume Next With smutils_XL If fileHandle < Or fileHandle > Workbooks.Count Then smutils_HandleXLError ("Error: Trying to save workbook with invalid file handle.") Exit Sub End If Workbooks(fileHandle).SaveAs filename F 58 Workbooks(fileHandle).Close saveChanges:=False End With Exit Sub ' ===== Errors ===== ExcelNotInitializedError: MsgBox "Error writing to Excel file Excel first must be initialized" & Chr(13) & _ "and a workbook must be opened Use NewExcelWorkbook or OpenExcelWorkbook." Exit Sub End Sub Public Function s_ReadExcelValue(ByVal fileHandle As Integer, ByVal sheetName As String, ByVal dataRange As String) As Variant On Error GoTo ReadError If Not smutils_XLInitialized Then GoTo ExcelNotInitializedError With smutils_XL If fileHandle < Or fileHandle > Workbooks.Count Then smutils_HandleXLError ("Error: Trying to read from unopened spreadsheet.") Exit Function End If s_ReadExcelValue = Workbooks(fileHandle).Worksheets(sheetName).Range(dataRange).value End With Exit Function ' ===== Errors ===== ExcelNotInitializedError: MsgBox "Error reading from Excel file Excel first must be initialized" & Chr(13) & _ "and a workbook must be opened Use NewExcelWorkbook or OpenExcelWorkbook." Exit Function ReadError: smutils_HandleXLError ("Error " & Err & " reading from file " & smutils_XL.Workbooks(fileHandle).name & ".") Exit Function End Function Public Function s_ReadExcelRange(ByVal fileHandle As Integer, ByVal sheetName As String, ByVal dataRange As String) As Excel.Range On Error GoTo ReadError If Not smutils_XLInitialized Then GoTo ExcelNotInitializedError F 59 With smutils_XL If fileHandle < Or fileHandle > Workbooks.Count Then smutils_HandleXLError ("Error: Trying to read from unopened spreadsheet.") Exit Function End If Set s_ReadExcelRange = Workbooks(fileHandle).Worksheets(sheetName).Range(dataRange) End With Exit Function ' ===== Errors ===== ExcelNotInitializedError: MsgBox "Error reading from Excel file Excel first must be initialized" & Chr(13) & _ "and a workbook must be opened Use NewExcelWorkbook or OpenExcelWorkbook." Exit Function ReadError: smutils_HandleXLError ("Error " & Err & " reading from file " & smutils_XL.Workbooks(fileHandle).name & ".") Exit Function End Function Public Sub s_WriteExcelValue(ByVal fileHandle As Integer, ByVal sheet As String, _ ByVal dataRange As String, ByVal value As Variant) If Not smutils_XLInitialized Then GoTo ExcelNotInitializedError On Error GoTo WriteError With smutils_XL If fileHandle < Or fileHandle > Workbooks.Count Then smutils_HandleXLError ("Error: Trying to write data to non-initialized workbook." & Chr(13) & _ "Use OpenExcelWorkbook or NewExcelWorkbook.") Exit Sub End If Workbooks(fileHandle).Worksheets(sheet).Range(dataRange).value = value End With Exit Sub ' ===== Errors ===== ExcelNotInitializedError: MsgBox "Error writing to Excel file Excel first must be initialized" & Chr(13) & _ "and a workbook must be opened Use NewExcelWorkbook or OpenExcelWorkbook." Exit Sub F 60 WriteError: smutils_HandleXLError ("Error " & Err & " writing to file " & smutils_XL.Workbooks(fileHandle).name & ".") Exit Sub End Sub Public Sub s_ExitExcel() If Not smutils_XLInitialized Then Exit Sub smutils_XL.DisplayAlerts = False smutils_XL.Quit Set smutils_XL = Nothing smutils_XLInitialized = False End Sub Private Sub smutils_HandleXLError(ByVal errorString As String) If smutils_XLErrorHandling = smutils_ErrorsIgnore Then Exit Sub Static errorFile As String, errorFileOpened As Boolean Select Case smutils_XLErrorHandling Case smutils_ErrorsDisplayMessage MsgBox errorString Exit Sub End Select End Sub Public Sub s_newExcelworksheet() On Error GoTo InitializeError If Not smutils_XLInitialized Then s_InitializeExcel False, smutils_ErrorsDisplayMessage End If On Error GoTo AddError With smutils_XL Worksheets.Add End With Exit Sub ' ===== Errors ===== InitializeError: smutils_HandleXLError ("Error " & Err & " initializing Excel.") Exit Sub AddError: smutils_HandleXLError ("Error " & Err & " adding a worksheet.") Exit Sub End Sub ... Khóa: 2007 1- TÊN ĐỀ TÀI: TỐI ƯU HÓA ĐA MỤC TIÊU CHUỖI CUNG ỨNG SẢN PHẨM ÁP DỤNG VÀO CÔNG TY CỔ PHẦN MAY VIỆT TIẾN 2- NHIỆM VỤ LUẬN VĂN: • Tìm hiểu nghiên cứu lý thuyết tối ưu, tối ưu đa mục tiêu, ... trung áp dụng lí thuyết tối ưu mơ chuỗi cung ứng sản phẩm áp dụng cho cơng ty may Việt Tiến • Luận văn nêu số nghiên cứu liên quan tiêu biểu cho toán tối ưu đa mục tiêu mơ cho chuỗi cung ứng • Số... nghiệm mơ hình đó? 1.2 Mục tiêu luận văn: Xây dựng chuỗi cung ứng sản phẩm phương pháp kết hợp giải thuật tối ưu đa mục tiêu công cụ mô áp dụng cho công ty Cổ Phần May Việt Tiến 2 1.3 Nội dung