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

Phương pháp tiến độ đa mục tiêu (thời gian, chi phí), xem xét sự liên tục của nhiều tổ đội cho dự án có nhiều đơn vị lặp lại

85 6 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 85
Dung lượng 1,36 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

NHIỆM VỤ LUẬN VĂN: Đưa ra một phương pháp lập tiến độ với mục tiêu cực tiểu thời gian hoàn thành và thời gian gián đoạn đồng thời chi phí của một dự án xây dựng có một hay nhiều đơn vị

Trang 1

LẶP LẠI

Chuyên Ngành : CÔNG NGHỆ VÀ QUẢN LÝ XÂY DỰNG

LUẬN VĂN THẠC SĨ

Trang 2

TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐẠI HỌC QUỐC GIA TP.HỒ CHÍ MINH

Cán bộ hướng dẫn khoa học: T.S LƯƠNG ĐỨC LONG ………

Trang 3

Tp HCM, ngày tháng……… năm 2010

NHIỆM VỤ LUẬN VĂN THẠC SĨ

Chuyên ngành : Công nghệ và Quản lý Xây dựng

1 TÊN ĐỀ TÀI : PHƯƠNG PHÁP TIẾN ĐỘ ĐA MỤC TIÊU (THỜI GIAN, CHI PHÍ),

XEM XÉT SỰ LIÊN TỤC CỦA NHIỀU TỔ ĐỘI CHO DỰ ÁN CÓ NHIỀU ĐƠN VỊ LẶP LẠI

2 NHIỆM VỤ LUẬN VĂN:

Đưa ra một phương pháp lập tiến độ với mục tiêu cực tiểu thời gian hoàn thành và thời gian gián đoạn đồng thời chi phí của một dự án xây dựng có một hay nhiều đơn vị có các công tác giống nhau hoặc gần giống nhau và các công tác được thi công bởi một hoặc nhiều tổ đội Đồng thời có xét đến tính chất của công tác (công tác có thể gián đoạn hay không) tại đó thời gian gián đoạn của công tác cho phép gián đoạn sẽ được cực tiểu

So sánh phương pháp đề xuất với các phương pháp trước đây

Viết một chương trình thực hiện trên máy tính từ phương pháp trên

3 NGÀY GIAO NHIỆM VỤ: 25-01-2010

4 NGÀY HOÀN THÀNH NHIỆM VỤ : 02-08-2010

5 HỌ VÀ TÊN CÁN BỘ HƯỚNG DẪN : TS LƯƠNG ĐỨC LONG

Nội dung và đề cương Luận văn thạc sĩ đã được Hội Đồng Chuyên Ngành thông qua

CÁN BỘ HƯỚNG DẪN

(Họ tên và chữ ký)

CHỦ NHIỆM BỘ MÔN QUẢN LÝ CHUYÊN NGÀNH (Họ tên và chữ ký)

KHOA QL CHUYÊN NGÀNH

(Họ tên và chữ ký)

Trang 4

Trước hết tôi muốn được bày tỏ lòng biết ơn sâu sắc đến thầy hướng dẫn Tiến sĩ Lương Đức Long Thầy đã có những hướng dẫn giá trị, những lời động viên khuyến khích hữu ích cho tôi trong suốt thời gian học tập và đặc biệt là để hoàn thành luận văn này

Đồng thời tôi cũng mong muốn gửi cảm ơn chân thành đến các thầy cô của Trường đại học Bách Khoa – Thành phố Hồ Chí Minh cũng như các bạn trong lớp Cao học Công nghệ và Quản lý xây dựng khóa 2008 đã giúp đỡ tôi trong suốt thời gian học tập tại đây

Và lời cảm ơn cuối cùng tôi mong muốn được gửi đến là Mẹ và các Em của tôi – những người

đã sát cánh động viên hỗ trợ về mặt vật chấ, tinh thần và tạo điều kiện thuận lợi để tôi hoàn thành khóa học này

Trang 5

giống nhau hoặc gần giống nhau và mỗi công tác được thi công bởi một hoặc nhiều tổ đội như: nhà cao tầng, một dự án nhà ở, dự án đường cao tốc, mạng lưới đường ống, nhiều cây cầu giống nhau hay đường hầm…Đồng thời có xét đến tính chất của công tác (công tác cho phép gián đoạn hay không) và đưa ra phương pháp tối ưu thời gian gián đoạn của công tác cho phép gián đoạn Thuật toán trên được phát triển thành một chương trình được viết bằng ngôn ngữ Visual Basic, và qua đó một số ví dụ minh hoạ được chạy bằng chương trình này để hiện ưu điểm của phương pháp đề xuất

so với các phương pháp khác

Trang 6

1.2 Các vấn đề trong lập tiến độ dự án xây dựng nhiều công trình 2

1.3 Mục tiêu nghiên cứu 3

Chương 2 LƯỢC KHẢO CÁC VẤN ĐỀ NGHIÊN CỨU 4

2.1 Giới thiệu 4

2.2 Kỹ thuật lập tiến độ truyền thống 4

2.3 Kỹ thuật lập tiến độ cho những dự án xây dựng lặp lại 5

Chương 3 MÔ HÌNH LẬP TIẾN ĐỘ CHO DỰ ÁN CÓ NHIỀU ĐƠN VỊ LẶP LẠI 7

3.1 Mô tả mô hình 7

3.2 Mô tả các thông số dự án 8

3.3 Sơ đồ khối tổng quát 9

3.4 Sơ đồ khối xác định tổ đội thực hiện công tác – hàm namecrew(j, Ci) 10

3.5 Sơ đồ khối tính toán ma trận DUij, CUij, Dij và Cij 11

3.6 Sơ đồ khối tính toán ESij và EFij theo bước 1 12

3.7 Sơ đồ khối tính toán ESij và EFij theo bước 2 15

3.8 Mô hình tính toán ESij và EFij theo bước 3 17

3.8.1 Giai đoạn 1 17

3.8.2 Giai đoạn 2 19

3.9 Tính toán chi phí thực hiện dự án 21

Chương 4 CHƯƠNG TRÌNH LẬP TIẾN ĐỘ 24

4.1 Giới thiệu ngôn ngữ lập trình Visual Basic 6.0 24

4.2 Chương trình lập tiến độ 25

4.2.1 Nhập dữ liệu 25

4.2.2 Phân tích dữ liệu 29

4.2.3 Xuất kết quả 38

Chương 5 VÍ DỤ MINH HỌA 40

5.1 Ví dụ 1 40

5.2 Ví dụ 2 42

5.3 Nhận xét 43

Chương 6 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 44

6.1 Kết luận 44

6.2 Các hạn chế và hướng phát triển tiếp theo 44

TÀI LIỆU THAM KHẢO 45

PHỤ LỤC 47

LÝ LỊCH TRÍCH NGANG 78

Trang 7

Hình 1.3 : Công tác lặp lại có thời gian thi công khác nhau 2

Hình 1.4: Công tác alpha và công tác beta 3

Hình 3.1: Các thông số về dự án 7

Hình 3.2: Các thông số về tổ đội 8

Hình 3.3: Sơ đồ khối tổng quát 9

Hình 3.4: Sơ đồ khối xác đinh tên tổ đội thực hiện công tác i ở đơn vị j 10

Hình 3.5: Sơ đồ khối tính toán ma trận DUij và CUij 11

Hình 3.6 : Sơ đồ khối tính toán theo bước 1 13

Hình 3.7 : Ví dụ sau khi xử lý xong bước 1 14

Hình 3.8: Sơ đồ khối tính toán theo bước 2 15

Hình 3.9:Ví dụ sau khi xử lý xong bước 2 16

Hình 3.10: Sơ đồ khối tính toán theo bước 3 giai đoạn 1 17

Hình 3.11: Sơ đồ khối tính toán theo bước 3 giai đoạn 2 19

Hình 3.12 : Sau khi thực hiện bước 3 (bước cuối cùng) 21

Hình 3.13 : Sơ đồ khối tính chi phí thực hiện dự án 23

Hình 4.1 : Giao diện chương trình 25

Hình 4.2 : Cửa sổ nhập số tổ đội lớn nhất và số đơn vị của dự án 25

Hình 4.3 : Giao diện nhập đơn vị, công tác và tổ đội 26

Hình 4.4 : Một ví dụ về nhập dữ liệu hoàn chỉnh 27

Hình 4.5 : Nhập chi phí gián tiếp của dựa án 28

Hình 4.6: Cửa sổ lưu thông tin dự án 28

Hình 4.7: Cửa sổ để mở một dự án có sẵn 29

Hình 4.8: Kết quả sau khi phân tích dữ liệu dự án 38

Hình 5.1: Số liệu ví dụ của Harris (1998) 40

Hình 5.2: Bổ sung chi phí gián tiếp cho ví dụ Harris 40

Hình 5.3: Tiến độ của dự án theo ví dụ của Harris sau khi chạy chương trình 41

Hình 5.4: Tiến độ dự án theo phương pháp RSM của Harris 41

Hình 5.5: Số liệu của dự án ở ví dụ 2 42

Hình 5.6: Tiến độ dự án của ví dụ 2 42

Trang 8

Chương 1 GIỚI THIỆU

1.1 Dự án xây dựng nhiều công trình

Dự án xây dựng nhiều công trình là dự án có các đơn vị tương tự nhau Một đơn vị có thể đơn giản là một sàn của nhà cao tầng, một mẫu nhà trong dự án nhà ở hoặc một phần của mạng lưới đường ống Một ví dụ khác của dự án xây dựng nhiều công trình là những

dự án xây dựng về: đường cao tốc, đường băng, đường sắt, các cây cầu, đường hầm, hệ thống cống và hệ thống giao thông công cộng Trong nghiên cứu trước đây, thuật ngữ dự

án tuyến tính (linear projects) cũng được sử dụng để chỉ loại dự án này (Arditi và Albulak, 1979; Dressler, 1974; Mawdesley et al, 1980; và Selinger, 1980)[1,2,3,4] Trong dự án lặp lại, các công tác có thể lặp lại hoặc không lặp lại Ví dụ trong dự án xây dựng nhà cao tầng, công tác bê tông được lặp lại từ tầng này đến tầng khác nên có thể xem là công tác lặp lại, trong khi đó công tác đào đất chỉ được thực hiện một lần nên được xem là công tác không lặp lại

Hình 1.1: Mạng công tác trên nút dùng để biểu diễn một dự án với 2 đơn vị và 6 công tác

Theo Vorster và Bafna (1992)[5] thì dự án lặp lại chia làm 2 dạng Dạng đầu tiên là những công tác lặp lại có thời gian thi công giống nhau trong tất cả các đơn vị và được thể hiện thành các đường thằng như hình 1.1 Ví dụ: Một dự án nhà ở trong đó các công tác xây dựng nhà ở được lặp lại trong tất cả các đơn vị của dự án Trong dạng thứ 2, công tác lặp lại có thời gian thi công không giống nhau trong các đơn vị như hình 1.2 Ví dụ: Dự án xây dựng đường cao tốc, thời gian thi công đào đất ở các công đoạn là khác nhau

Đơn vi 2

Trang 9

Hình 1.2: Công tác lặp lại có thời gian thi công giống nhau

Hình 1.3 : Công tác lặp lại có thời gian thi công khác nhau

Trong thực tế, thời gian thi công các công tác ở các đơn vị thường khác nhau bởi vì khối lượng ở các đơn vị khác nhau và năng suất lao động của các tổ đội cũng khác nhau

Ví dụ trong công tác đào đất, khối lượng đào đất trong mỗi đơn vị có thể khác nhau bởi vì địa hình, năng suất, loại đất ở từng đơn vị khác nhau

1.2 Các vấn đề trong lập tiến độ dự án xây dựng nhiều công trình

Việc lập tiến độ cho một dự án có nhiều đơn vị lặp lại trong đó các công tác được thực hiện bởi một hay nhiều tổ đội là rất phức tạp Để xác định được thời gian thực hiện của mỗi công tác cần phải kết hợp việc sử dụng nhiều tổ đội để thi công 1 công tác trong giải quyết các vấn đề sau:

Trang 10

1981, El-Rayaes và Moselhi 1997, Kavanagh 1985 và Reda 1990)[6,7,8,9] Như vậy, vấn

đề thứ nhất ở đây là việc lập tiến độ phải tối đa hiệu quả việc sử dụng tài nguyên

Trong dự án xây dựng lặp thường bao gồm cả công tác lặp lại và không lặp lại Mỗi loại công tác này đòi hỏi những kỹ thuật tính toán khác nhau Đối với những công tác không lặp lại thì có thể sử dụng các kỹ thuật lập tiến độ mạng truyền thống Tuy nhiên, các công tác lặp lại thi yêu cầu những kỹ thuật có xét đến sự làm việc của tổ đội Vấn đề thứ hai ở đây là phải kết hợp được hai kỹ thuật lập tiến độ trên

Vấn đề thứ 3 ở đây là phải tối ưu được thời gian gián đoạn của các tổ đội Theo Lương Đức Long 2009[10], thì công tác được chia làm 2 loại: loại 1 (gọi là alpha) là loại không cho phép gián đoạn, loại 2 (gọi là beta) là loại cho phép gián đoạn, theo Hình 1.3 thì công tác alpha là công tác 3 và công tác beta là công tác 3 Do đó, việc tối ưu hóa gián đoạn là tối ưu thời gian chết của tổ đội thi công công tác loại beta

Hình 1.4: Công tác alpha và công tác beta

1.3 Mục tiêu nghiên cứu

Mục tiêu của việc nghiên cứu là đưa ra được một mô hình để lập tiến độ cho dự án xây dựng có nhiều đơn vị lặp lại và có nhiều tổ đội cùng thi công một công tác Cụ thể là hoàn thành các mục tiêu sau:

1) Đưa ra thuật toán để lập tiến độ cho các công tác lặp lại và các công tác này được thực hiện bởi một hoặc nhiều tổ đội

2) Đưa ra thuật toán tối ưu thời gian gián đoạn của công tác beta dựa trên thuật toán của Lương Đức Long 2009[10] nhưng có xét tới nhiều tổ đội

3) Tính toán chi phí để thực hiện dự án

4) Từ các thuật toán đã đưa ra viết thành một chương trình để có thể tự động hóa việc lập tiến độ bằng máy tính

Trang 11

Chương 2 LƯỢC KHẢO CÁC VẤN ĐỀ NGHIÊN CỨU

2.1 Giới thiệu

Lập tiến độ của dự án xây dựng là rất quan trọng trong cả 3 giai đoạn: trước, đang và

đã xây dựng Trước khi xây dựng, lập tiến độ để đưa ra thời gian hoàn thành và thời gian kết thúc cho mỗi công tác cũng như của cả dự án Những thông tin này thường phải cung cấp trong giai đoạn đấu thầu theo quy định của nhiều hợp đồng xây dựng Hơn nữa, lập tiến độ để xác định những tài nguyên cần thiết để có kế hoạch cung cấp hợp lý như: vật tư, nhân công, thiết bị và tiền Trong khi xây dựng, tiến độ đóng vai trò như là một đường lối chỉ đạo để thực hiện dự án Điều này cũng giúp phát hiện sớm những sai lệch và có các giải pháp hợp lý Sau khi xây dựng, tiến độ khi lập kế hoạch được so sánh với tiến độ hoàn công để giải quyết những yêu cầu và tranh luận có thể nay sinh Thêm vào đó, phân tích tiến độ khi hoàn công sẽ cung cấp những dữ liệu giá trị để sử dụng trong các dự án tương lai

2.2 Kỹ thuật lập tiến độ truyền thống

Trong chiến tranh thứ nhất, Henry L.Gantt đã đưa ra tiến độ ngang thể hiện sự liên hệ tiến độ công việc và thời gian (Antill và Woodhead 1990)[11] Những công tác được thể hiện bởi những thanh Chiều dài của thanh phụ thuộc vào thời gian thực hiện công tác Tiến độ ngang rất dễ đọc, dễ hiểu nhưng lại khó cập nhật, không thể hiện được mối liên hệ giữa các công việc, khó dự báo được sự tác động của các công việc thay đổi đối với thời hạn hoàn thành dự án Mặc dù sau này có sự xuất hiện của tiến độ mạng, tiến độ ngang vẫn tiếp tục được sử dụng rộng rãi trong công việc xây dựng bởi vì nó đơn giản dễ dùng và không cần có mối quan hệ qua lại giữa các công việc Tuy nhiên, vì tiến độ ngang không xác lập được mối quan hệ qua lại giữa các công việc nên mất nhiều thời gian để cập nhật tiến độ Nếu như có một công việc trong tiến độ ngang thay đổi thì sẽ không tự động điều chỉnh các công việc tiếp theo

Để tránh những giới hạn của tiến độ ngang, tiến độ mạng được đưa vào sử dụng để lập tiến độ cho các dự án xây dựng trong giai đoạn từ 1956-1958 (Antill và Woordhead 1990)[11] Phương pháp tiến độ mạng thể hiện được mối quan hệ giữa các công việc và lập được biểu đồ chi phí và tài nguyên theo thời gian Đây là một phương pháp có hiệu quả dùng để lập tiến độ quản lý tổng thể và tiến độ chi tiết trong thi công xây dựng Tiến độ mạng cũng chỉ ra công tác găng là những công tác mà sự thay đổi của nó ảnh hưởng đến thời gian thực hiện dự án Có hai phương pháp cơ bản để vẽ sơ đồ mạng: Sơ đồ mạng mũi tên (đôi khi được gọi là sơ đồ mạng công việc trên mũi tên – Activity On Arrow – AOA)

và sơ đồ mạng theo quan hệ ( đôi khi được gọi là sơ đồ mạng công việc trên nút – Activity

On Node – AON)

Khi áp dụng những kỹ thuật lập tiến độ truyền thống để lập tiến độ cho dự án xây dựng

có nhiều đơn vị lặp lại thì gặp nhiều khó khăn vì: 1) Phức tạp và dư tiến độ đối với những đơn vị lặp lại (Johnston et al 1986, Reda 1990, Suhail và Neale 1994, và Stradal và Cacha

Trang 12

thực hiện 24 công tác Vậy để thể hiện dự án trên theo tiến độ mạng thì cần nhập vào 4.800 công tác

Phương pháp lập tiến độ truyền thống không thể duy trì sự liên tục của tổ đội Việc duy trì sự liên tục của tổ đội sẽ nâng cao hiệu quả sử dụng tài nguyên, đặc biệt là đối với các công tác lặp lại Các tổ đội thường di chuyển từ nơi này đến nơi khác khi thực hiện công tác, việc lập tiến độ nên đảm bảo tổ đội kết thúc công tác ở đơn vị này sẽ di chuyển lập tức đến đơn vị khác Đảm bảo các tổ đội làm việc liên tục sẽ làm nâng cao năng suất lao động

và tối thiểu hóa thời gian chết

2.3 Kỹ thuật lập tiến độ cho những dự án xây dựng lặp lại

Do những hạn chế của kỹ thuật lập tiến độ truyền thống trên, đã xuất hiện một số các phương pháp lập tiến độ khác áp dụng trong việc xây dựng các dự án lặp lại Những kỹ thuật này cố gắng đảm bảo sự làm việc liên tục của tổ đội

LOB (Line of Balance) được được hải quân Hoa Kỳ phát triển vào năm 1942 để điều hành và lập kế hoạch thực hiện các dự án giống nhau (Lumsden 1968)[15] Ban đầu, LOB được áp dụng vào ngành công nghiệp sản xuất với mục đích là xác định vật liệu và tốc độ cho mỗi giai đoạn sản xuất để đạt được sản lượng đầu ra yêu cầu Lập tiến độ cho các dự

án lặp lại giống như đối với một nhà máy sản xuất là duy trì sự hoạt động liên tục của tổ đội Vào năm 1966, kỹ thuật LOB được hiệu chỉnh để áp dụng vào xây dựng các dự án nhà cửa trong ngành công nghiệp xây dựng (trong báo cáo của National Building Agency – programming 1966) Sự phát triển của LOB được thể hiện ở hình dáng của biểu đồ, ở đó số các căn nhà được thể hiện trên trục tung và trục còn lại là thời gian Các công tác lặp lại thể hiện bằng các thanh xiên Arditi và Albulak (1979 và 1986) cho rằng một số lượng lớn những người lập tiến độ chỉ sử dụng CPM cho các dự án không lặp lại (non-repetitive project) bởi vì nó không hiệu quả khi sử dụng trong xây dựng các cổng trình lặp lại Họ kiểm định giả thuyết bằng việc sử dụng cả 2 phương pháp và so sánh kết quả của 2 kỹ thuật này Họ kết luận rằng phương pháp lập tiến độ LOB tốt hơn cho những dự án loại này

về thời gian thi công và đảm bảo sự làm việc thuận lợi cho các tổ đội Tuy nhiên, LOB dẽ

bị lỗi khi đánh giá thời gian hoàn thanh và mức độ chi tiết của LOB phải được đánh giá cẩn thận - đối với những sơ đồ thể hiện quá nhiều các công tác thì khó có thể hiểu được Thêm vào đó, họ chỉ ra rằng khó khăn chủ yếu khi chuẩn bị vẽ biểu đồ LOB là thể hiện các công tác gối đầu có tiến độ tương tự nhau và đề nghị sử dụng những màu khác nhau để thể hiện các công tác này Một giải pháp khác được Mansur (1989) và Hegazy et al (1993) sử dụng là chia LOB ra làm 2 phần (ví dụ: phần trên và phần dưới) Thể hiện các công tác lặp lại ở phần trên và những công tác không lặp lại ở phần dưới Làm như vậy sẽ tránh được sự chồng lên nhau của các công tác xảy ra trong cùng một thời gian Al sarraj (1990) đưa ra một công thức toán học cho LOB để tính toán thời gian bắt đầu và thời gian kết thúc của một công tác Hegazy et al (1993) đưa ra một chương trình máy tính cho LOB gọi là BAL

để lập tiến độ và điều khiển các dự án lặp lại Và còn nhiều phương pháp nữa như của Birrell (1980), Suhail và Neale (1994), Thabet và Beliveau (1994) Để lập tiến độ cho các

dự án lặp lại, kỹ thuật LOB đã có những ưu điểm hơn hẳn các kỹ thuật lập tiến độ truyền thống như đảm bảo duy trì sự làm việc liên tục, tiến độ phân phối tài nguyên và trình bày những thông tin về tiến độ

LSM – phương pháp lập tiến độ theo đường thẳng (Linear Scheduling Method) – tương

tự như LOB là đảm bảo sự làm việc liên tục của tổ đội nhưng nó áp dụng được cho các

Trang 13

cơng tác giống nhau nhưng khối lượng cơng việc khác nhau (Selinger 1980; Johnston 1981; Chrzanowski và Jĩhnton 1986; Russell và Cáelton 1988) Sự khác nhau của LOB và LSM là sự thể hiện trên đồ thị Thay thế sự thể hiện 2 đường thẳng song song của LOB bằng một đường thẳng liên tục cĩ sự thay đổi về độ dốc Johnston (1981) đưa ra định dạng thể hiện của LSM cĩ 2 trục, Một trục thể hiện thời gian và trục vuơng gĩc với nĩ thể hiện các đơn vị lặp lại, các cơng tác lặp lại thì thể hiện theo đường chéo

Đơn vị lặp lại

Thời gian (ngày) 0

Đaøo đất Làm moùng Đơn vị lặp lại

Thời gian (ngày)

Hình 2.1: Phương pháp lập tiến độ LOB và LSM

RSM – phương pháp lập tiến độ vịng lặp (Repetitive Scheduling Method) đảm bảo khơng gián đoạn việc sử dụng tài nguyên và cĩ thể áp dụng được khi xây dựng theo phương đứng và phương ngang (Harris và Ioannou 1998)[16]

Nĩi chung, những phương pháp này đảm bảo sự làm việc liên tục của tổ đội, tối thiểu hĩa thời gian gián đoạn của nhân cơng và thiết bị Tuy nhiên những phương pháp này chỉ nhằm mục đích làm thời gian thực hiện dự án càng ngắn càng tốt dựa trên năng suất của tổ đội hoặc thiết bị đã biết trước cho nên thời gian thực hiện dự án cĩ thể là khơng ngắn nhất Bởi vì năng suất của tổ đội thi cơng hoặc các thiết bị khơng được xem là các biến cĩ thể biến đổi [26]

Trang 14

Chương 3 MÔ HÌNH LẬP TIẾN ĐỘ CHO DỰ ÁN CÓ

NHIỀU ĐƠN VỊ LẶP LẠI

3.1 Mô tả mô hình

Lập tiến độ một dự án có Q đơn vị và mỗi đơn vị có M công tác Khối lượng của các công tác trong các đơn vị có thể giống hoặc khác nhau hoặc không có (mỗi đơn vị có thể lặp lại toàn bộ hay một phần trong M công tác) Và mỗi công tác có thể được thực hiện bởi một hay nhiều tổ đội Bởi vì có sự di chuyển từ đơn vị này đến đơn vị khác nên đòi hỏi phải có một tiến độ hiệu quả đảm bảo sự làm việc liên tục của tổ đội Tuy nhiên việc duy trì sự làm việc liên tục của tổ đội có thể kéo dài thời gian hoàn tất dự án Vì vậy, ở đây

chúng ta chia công tác ra làm 2 loại: loại alpha (không cho phép sự gián đoạn), loại beta

(cho phép dự gián đoạn)[10].Vậy ta có:

M: số công tác trong dự án và có thể lặp lại toàn bộ hay một phần trong Q đơn vị của

dự án Giữa các công tác có sự ràng buộc lẫn nhau

Q: số đơn vị của dự án (Ví dụ: số căn nhà trong một dự án nhà ở)

Ci: số tổ đội cùng thực hiện công tác thứ i

Wij: khối lượng công việc của công tác i đơn vị j

DUij: thời gian thực hiện một đơn vị công việc của công tác i ở đơn vị j

CUij: chi phí thực hiện một đơn vị công việc của công tác i ở đơn vị j

Từ các thông số trên, mô hình tính toán phải tìm ra được thời gian bắt đầu và thời gian kết thúc của từng công tác và chi phí của dự án

Ví dụ cụ thể về dữ liệu đầu vào của một dự án:

Hình 3.1: Các thông số về dự án

Cột Act: thứ tự công tác

Cột Predecessors: ràng buộc công tác đứng trước

Trang 15

Cột Unit 1 đến Unit 4 thể hiện khối lượng công việc của đơn vị 1 đến đơn vị 4 của công tác 1 đến công tác 5 - wij

Cột Attribute Type: loại công tác là alpha hay beta

Cột crews: thể hiện số lượng tổ đội cùng thực hiện công tác i

+ Dij là ma trận về thời gian thực hiện các công tác của dự án

ïï

ïþ

ïï

ïýü

ïï

ïî

ïï

ïí

ì

=

M j

iM ij

i

QM Qi

Q

ij

D D

D

D D

D

D D

D

D

1 1

11 1 1

Trang 16

+ Ma trận ESij là thời gian bắt đầu thực hiện công tác

+ Ma trận EFij là thời gian kết thúc của công tác

3.3 Sơ đồ khối tổng quát

Trang 17

Bước 1: Giả thiết tất cả các công tác đều là beta

Bước 2: Tính lại có xét đến công tác alpha

Bước 3: Tối ưu thời gian gián đoạn của công tác beta Trong bước này ta chia làm 2

giai đoạn:

Giai đoạn 1:

Cố định ESij cuối cùng mà tổ đội thực hiện Sau đó dịch chuyển các công tác ở các đơn

vị đứng trước có cùng tổ đội với nó về phía trước Tuy nhiên vẫn thỏa mãn các ràng buộc giữa các công tác

Giai đoạn 2:

Cố định ESij đầu tiên mà tổ đội thực hiện Sau đó nếu dịch chuyển các công tác ở các đơn vị đứng sau có cùng tổ đội với nó về phía sau mà làm cho liên tục được thì dịch chuyển

Sau đây là các mô hình cụ thể:

3.4 Sơ đồ khối xác định tổ đội thực hiện công tác – hàm namecrew(j, Ci)

Trong luận văn này ta quy định tổ đội 1 thực hiện công tác i ở đơn vị 1, tổ đội 2 thực hiện công tác i ở đơn vị 2 Tổ đội Ci thực hiện công tác i ở đơn vị k (Ci là số tổ đội cùng thực hiện công tác i) và ở đơn vị Ci+1 thì tổ đội 1 sẽ thực hiện công tác i

Ta có sơ đồ khối để xác định tổ đội thực hiện công tác như sau:

Trang 18

Trong đó, mod là hàm lấy số dư của phép chia Ví dụ công tác i có 3 tổ đội thực hiện,

và ở đơn vị 4 thì đơn vị nào thực hiện?

Ta có: 4 mod 3 =1 (không phải bằng 0) nên đi theo mũi tên sai ta có:

namecrew = 4 mod 3 =1 Vậy tổ đội 1 thực hiện công tác i ở đơn vị 4

Nếu ở đơn vị 6 thì:

6 mod 3 = 0 nên đi theo mũi tên đúng:

namecrew = 6 mod 3 + 3 = 0+3 = 3 Vậy tổ đội 3 thực hiện công tác i ở đơn vị 6

3.5 Sơ đồ khối tính toán ma trận DU ij , CU ij , D ij và C ij

j = j + 1 Sai

Trang 19

Ma trận DUij và CUij là ma trận về thời gian và chi phí để thực hiện một đơn vị khối lượng Trong sơ đồ khối này ta sử dụng biến j để thể hiện đơn vị và biết i để thể hiện công tác Vậy j sẽ chạy từ 1 đến Q (tổng số các đơn vị) và i sẽ chạy từ 1 đến M (tổng số các công tác) Ứng với mỗi tổ hợp của i, j ta sẽ có một công tác Sau đó ta sẽ xác định tổ đội

thực hiện công tác thông qua hàm namcrew(j, Ci) theo sơ đồ khối ở hình 3.4 với j là đơn vị

đang xét và Ci là tổng số tổ đội thực hiện công tác i Tiếp theo ta sẽ gán từng biến thời gian thực hiện một đơn vị khối lượng công việc lần lượt cho DUij và CUij Cứ như vậy cho đến khi i = M và j = Q thì kết thúc

3.6 Sơ đồ khối tính toán ES ij và EF ij theo bước 1

Khi tính toán ESij và EFij theo bước này ta giả thiết tất cả các công tác đều thuộc loại beta Lúc này thời gian ESij và EFij được xác định theo điều kiện ràng buộc với mối liên hệ

tổ đội đứng trước và mối liên hệ tổ đội Mối liên hệ tổ đội lúc này chỉ xét để đảm bảo một

tổ đội chỉ làm việc tại một vị trí trong một thời gian Tương tự như trên, i và j lần lượt là các biến của đơn vị và công tác của dự án Vậy j cũng sẽ chạy từ 1 đến Q (tổng số các đơn vị) và i cũng sẽ chạy từ 1 đến M (tổng số các công tác)

Tiếp theo sẽ xem xét công tác i có phải là công tác đầu tiên của đơn vị không Nếu đúng là không có công tác nào đứng trước thì sẽ tìm trong số các đơn vị đứng trước đơn vị nào có cùng tổ đội thi công với đơn vị j thì ta sẽ lấy thời gian bắt đầu của công tác i ở đơn

vị j bằng thời gian kết thúc của công tác đó Nhưng nếu không có công tác đứng trước thì thời gian bắt đầu của công tác i ở đơn vị j sẽ bằng 0

Nếu công tác i không phải là công tác đầu tiến của đơn vị j thì sẽ xác định số công tác đứng trước K và k sẽ là biến của số thứ tự các công tác đứng trước công tác i và k chạy từ

1 đến K Ứng với mỗi giá trị k ta sẽ lấy giá trị thời gian kết thúc (lưu ý là có cộng thời gian gián đoạn giữa công tác k và công tác i) và so sánh các thời gian này với nhau Thời gian lớn nhất sẽ là thời điểm bắt đầu của công tác i ở đơn vị j sau đó tính thời gian kết thúc của công tác i ở đơn vị j theo công thức (3.3) Sau khi xét tất cả các công tác đứng trước ta sẽ tiếp tục xét điều kiện về tổ đội Tương tự như trên, ta sẽ tìm đơn vị đứng trước gần đơn vị j nhất mà có cùng tổ đội thực hiện công tác i như ở đơn vị j thì sẽ lấy thời gian kết thúc của công tác đó so sánh với thời gian bắt đầu của công tác i ở đơn vị j nếu lớn hơn thì gán thời gian bắt đầu của công tác i ở đơn vị j bằng giá trị này Sau đó tính thời gian kết thúc của công tác i ở đơn vị j theo công thức (3.3)

Tóm lại, trong bước này ta sẽ có 3 vòng lặp, vòng lặp đầu tiên là vòng lặp về các các đơn vị của dự án, vòng lặp thứ 2 là vòng lặp về số công tác và vòng lặp thứ 3 là vòng lặp

về tổ đội – vòng lặp thứ 3 chỉ áp dụng đối với các công tác có ràng buộc về công tác đứng trước

Sau đây là hình minh họa của một dự án sau khi chạy xong bước 1 (lấy dữ liệu đầu vào

như hình 3.1 và hình 3.2) Ta thấy công tác 1, 4, 5 không được gián đoạn (alpha) nhưng do giả thiết ở bước này tất cả các công tác đều là beta Và thời gian thực hiện là 124.09 ngày

Trang 21

Hình 3.7 : Ví dụ sau khi xử lý xong bước 1

Trang 22

3.7 Sơ đồ khối tính tốn ES ij và EF ij theo bước 2

BẮT ĐẦU

i =2

i là alpha Đúng

vị j bằng ở đơn vị l Max = 0

Đúng Max=EFill=l+1 l<Q+1 Đúng

Sai

D = 0

l = Q

Tổ đội thực hiện công tác i ở đơn

vị j bằng ở đơn vị l Đúng

EF =Max-Dil

ES = EF - Dil il ilBước 1

D = D + Dil

l = l - 1

l > 0 Đúng

Trang 23

Khi tính toán ESij và EFij theo bước này ta chỉ xét đến công tác alpha Tương tự như trên, i và j lần lượt là các biến của đơn vị và công tác của dự án Nhưng trong bước này vòng lặp công tác sẽ chạy trước và i sẽ chạy từ 2 đến M (tổng số các công tác) vì công tác đầu tiên luôn liên tục cho dù là alpha hay beta Sau đó kiểm tra điều kiện thuộc tính của

công tác i nếu là alpha thì j sẽ chạy từ 1 đến Q (tổng số các đơn vị) Biến k sẽ chạy từ 1

đến Ci (tổng số tổ đội cùng thực hiện công tác i) Trong khi đó sẽ kiểm tra điều kiện:

k=manecrew(j,Ci) nếu đúng thì đặt Max=0 và tiến hành tìm thời gian kết thúc lớn nhất của

công tác cùng thực hiện công tác i nhưng ở đơn vị đứng trước đơn vị j bằng cách dùng biến

l chạy từ 1 đến Q, nếu thời gian kết thúc của công tác đó lớn hơn Max thì gán Max bằng giá trị đó

Sau khi xác định được Max (thời gian kết thúc lớn nhất của tổ đội cùng nằm trước i nhưng ở trước đơn vị j), ta gán D=0, l=Q chạy từ Q tới 1, tiếp theo kiểm tra điều kiện

k=namecrew(j,Ci) Nếu đúng thì gán EFij=Max-D và ESij=EFij-Dij, sau đó ta chạy lại toàn

bộ bước 1, đây là bước quan trọng vì khi ta dịch chuyển thời gian của công tác theo tổ đội thì có thể phá vỡ ràng buộc kỹ thuật của công tác Tiếp theo ta tính D=D+Dij Sau đó kiểm tra điều kiện kết thúc của vòng lặp, cứ như vậy cho đến khi thực hiện hết tất cả các vòng lặp

Trong sơ đồ khối này ta có 3 vòng lặp chính là vòng lặp về công tác, vòng lặp về đơn

vị của dự án và vòng lặp về tổ đội và trong 3 vòng lặp chính này vòng lặp về đơn vị của dự

án được lặp lại 2 lần

Xét ví dụ minh họa ta thấy thời gian thực hiện tăng lên từ 124.09 đến 143.64 và các công tác 1, 4, 5 không còn gián đoạn nữa Như vậy khi các công tác liên tục thì thời gian thực hiện dự án sẽ tăng lên

Hình 3.9:Ví dụ sau khi xử lý xong bước 2

Trang 24

3.8 Mơ hình tính tốn ES ij và EF ij theo bước 3

3.8.1 Giai đoạn 1

BẮT ĐẦU

i = M

i là beta Đúng

k = 1 num_repeat=0

j = Q

Min = Thời gian hoàn thành dự án

Tổ đội thực hiện công tác i

ở đơn vị j bằng k

num_repeat = num_repeat + 1 Đúng

num_repeat > 1 Đúng

l = j + 1

Tổ đội thực hiện công tác i

ở đơn vị l bằng k

l = i + 1

numPre = Số công tác đứng trước công tác l

m = 1

namePre = Tên công tác đứng trước thứ m

namePre = i Min > ES + lagvàmj

lag = thời gian gián đoạn giữa công tác

m và công tác i

mj

mj

Min = ES + lagmj mjĐúng

m = m + 1

m < num_pre + 1 Đúng

Sai

j = j - 1

j > 0 Đúng

k = k + 1

k < C + 1iĐúng

Sai

i = i - 1

i > 0 Đúng

Trang 25

Vì thời gian gián đoạn chi có ở các công tác beta nên ta chỉ xét các công tác beta Như

đã trình bày ở trên, ở bước này ta cố định thời gian thi công mà tổ đội thực hiện ở đơn vị cuối cùng Sau đó dịch chuyển các công tác có cùng tổ đội thi công với nó ở các đơn vị trước về phía sau nhưng vẫn phải đảm bảo mối liên hệ giữa các công tác Cụ thể ta làm như sau

Gán biết i=M và i chạy từ M đến 1 (chạy từ công tác cuối cùng đến công tác đầu tiên)

Sau đó kiểm tra điều kiện công tác beta của công tác i Nếu đúng là công tác beta thì ta tiếp

tục gán k=1(k chay từ 1 đến Ci – số tổ đội cùng thực hiện công tác i) Tiếp theo ta sẽ kiểm tra điều kiện tổ đội đó phải thực hiện công tác i ít nhất 2 lần bằng cách đặt num_repeat=0, gán j=Q (j chạy từ Q tới 1) và Min bằng thời gian hoàn thanh dự án Nếu công tác i ở đơn

vị j nào được thực hiện bởi công tác k thì num_repeat=num_repeat+1 Nếu đúng là num_repeat>1 thì ta gán l=j+1 (l chạy từ j+1 đến Q) Nếu tổ đội thực hiện công tác i ở đơn

vị l giống đơn vị k – numcrew(l,Ci)=k – thì ta tiếp tục kiểm tra điều kiện Min>ESli nếu đúng thì gán M=ESli nếu sai thì ta tiếp tục vòng lặp l Sau khi chạy xong vòng lặp l ta đã xác định được Min tức là thời gian bắt đầu nhỏ nhất mà công tác k phải thực hiện của công tác i ở đơn vị đứng sau đơn vị j Phần này ta mới xét về ràng buộc của tổ đội

Phần tiếp theo ta sẽ xét đến ràng buộc về kĩ thuật tức là ràng buộc về công tác đứng sau công tác i Ta gán l=i+1 (m chạy từ i+1 đến Q), ứng với mỗi công tác l ta xác định được số công tác đứng trước – numPre – sau đó ta gán m=1 (m chạy từ 1 đến numPre), ứng với mỗi

m ta xác định được tên công tác đứng trước của công tác l (namePre) và thời gian gián đoạn giữa công tác l và công tác i Sau đó ta xét điều kiện namePre=i và Min>ESlj+lagljnếu đúng thì ta gán Min>ESlj+laglj Cứ như vậy cho đến khi hết vòng lặp m và vòng lặp l Sau khi hết vòng lặp l và vòng lặp m thì ta xác định được thời gian bắt đầu và kết thúc của công tác i ở đơn vị j như sau:

EFij=Min

ESij=EFij-Dij

Tiếp tục như trên cho đến khi chạy xong vòng lặp j và vòng lặp i thì kết thúc bước 3 giai đoạn 1

Trang 26

3.8.2 Giai đoạn 2

BẮT ĐẦU

i = M

i là betaĐúng

j = 2

numPre = Số côngtác đứng trướccông tác i

m = 1

namePre = Tên côngtác đứng trướcthứ m

vị j bằng ở đơn vị nĐúng

Max <= EF <= EFin ij Đúng EF = EFij in

Sai

n = n - 1

j > 0Đúng

Sai

j = j + 1

j < Q + 1Đúng

lag = thời gian giánđoạn giữa công tácnamePre và công tác i

namePre,j

Hình 3.11: Sơ đồ khối tính tốn theo bước 3 giai đoạn 2

Trang 27

Cũng như giai đoạn 1, vì bước này là dùng để tối ưu thời gian gián đoạn của công tác

beta nên ta chỉ xét đối với những công tác beta Trong bước này ta cố định thời gian bắt

đầu và kết thúc của công tác đầu tiên mà tổ đội thực hiện Vì có nhiều tổ đội cùng thực hiện một công tác nên công tác đầu tiên mà tổ đội thực hiện sẽ không phải là công tác 1 Sau đó cũng ở công tác đó tìm trong các đơn vị đứng sau đơn vị gần nhất có cùng tổ đội thực hiện thì tiến hành dịch chuyển sao cho đảm bảo sự liên tục của tổ đội nhưng vẫn phải đảm bảo ràng buộc về mối liên hệ đứng trước của công tác, nếu như không đảm bảo liên tục thì không dịch chuyển

Ta tiến hành gán i=M (i chạy từ M – tổng số công tác - đến 1) và tiến hành kiểm tra

điều kiện công tác i là beta nếu đúng là beta thì tiếp tục gán j=2 (j chạy từ 2 đến Q – tổng

số các đơn vị)

Ta tiến hành tính thời gian kết thúc lớn nhất của các công tác đứng trước công tác i Tương tự như giai đoạn 1, ta tính số công tác đứng trước công tác i là numPre (số công tác đứng trước công tác i) Đặt thời gian kết thúc lớn nhất của các công tác đứng trước là Max=0 và m=1(m chạy từ 1 đến numPre), ứng với mỗi giá trị m ta xác định được tên công tác đứng trước namePre và thời gian gián đoạn lagnamePre,j giữa công tác namePre và công tác i Sau đó kiểm tra điều kiện: Max<EFnamePre,j+lagnamePre,j nếu đúng thì gán Max=EFnamePre,j+lagnamePre,j, sau khi hết vòng lặp m thì giá trị Max lúc này là thời gian kết thúc lớn nhất của các công tác đứng trước công tác i

Bước tiếp theo là tính thời gian kết thúc của công tác i ở đơn vị gần nhất phía trước j và

có cùng tổ đội thực hiện với công tác i ở đơn vị j Gán n=j-1 sau đó ta kiểm tra điều kiện tổ đội thực hiện công tác i ở đơn vị j giống ở đơn vị n nếu đúng thì ta kiểm tra tiếp điều kiện

ij

EF

Max£ £ (với EFin là thời gian kết thúc của công tác i ở đơn vị n nhưng có cùng

tổ đội thực hiện với công tác i ở đơn vị j và EFij là thời gian kết thúc của công tác i ở đơn

vị j) nếu đúng thì ta gán EFij=EFin và bỏ qua vòng lặp n còn không thì tiếp tục vòng lặp n

Cứ như vậy cho đến khi xong vòng lặp n, j, i (vòng lặp đơn vị n chạy từ j-1 đến 1, j vòng lặp đơn vị và j chạy từ j=2 đến Q, i là vòng công tác i chạy từ M đến 1)

Trang 28

Hình 3.12 : Sau khi thực hiện bước 3 (bước cuối cùng)

Hình 3.12 là một ví dụ sau khi chạy xong bước 3 (bước cuối cùng) Ở đây ta thấy không có sự thay đổi như khi chạy xong bước 1 và 2 bởi vì ở công tác 2 bị ràng buộc bởi công tác đứng trước và đứng sau, còn ở công tác thì đã liên tục, không có thời gian gián đoạn

3.9 Tính toán chi phí thực hiện dự án

Theo Lương Đức Long [10] chi phí thực hiện dự án được tính như sau:

åå

++

=+

i

P Q

j ij D

C

1

0 1

Trong đó:

C1=C0+b.TP : chi phí gián tiếp

TP: là thời gian thực hiện dự án

b: chi phí gián tiếp của mỗi ngày

C0: chi phí ban đầu

Trang 29

Từ đó ta thấy ma trận Cij là ma trận về chi phí thực hiện từng công tác trong các đơn vị của dự án Nên chi phí trực tiếp thực hiện dự án là tổng các Cij Vậy ta có sơ đồ khối tính chi phí của dự án như hình 3.13

Trong đó Max_duration là thời gian thực hiện dự án và Max_cost chi phí để thực hiện

dự án Gán i=1 và j=1 (i chạy từ 1 đến M – tổng số công tác – và j chạy từ 1 đến Q – tổng

số đơn vị của dự án), ứng với mỗi i, j giá trị i,j ta có Cij và EFij Từ đó ta có: Max_cost=Max_cost+Cij và kiểm tra điều kiện Max_duration<EFij nếu đúng thì gán Max_duration=EFij Sau khi chạy xong vòng lặp i, j (i=M, và j=Q) thì Max_cost lúc này là chi phí trực tiếp và Max_duration là thời gian thực hiện dự án Và ta tính chi phí thực hiện

dự án theo công thức: Max_cost=Max_cost+C0+b*Max_duration

Trang 30

M ax_cost= M ax_ co st + C + b*M ax_duration0

Hình 3.13 : Sơ đồ khối tính chi phí thực hiện dự án

Trang 31

Chương 4 CHƯƠNG TRÌNH LẬP TIẾN ĐỘ

4.1 Giới thiệu ngôn ngữ lập trình Visual Basic 6.0

Ngôn ngữ lập trình (programming language) là một hệ thống được ký hiệu hóa để miêu

tả những tính toán (qua máy tính) trong một dạng mà cả con người và máy đều có thể đọc

Visual Basic là gì? Phần "Visual" đề cập đến phương phàp được sử dụng để tạo giao diện đồ họa người dùng (Graphical User Interface hay viết tắc là GUI) Có sẵn những bộ phận hình ảnh, gọi là controls, có thể sắp đặt vị trí và quyết định các đặc tính của chúng trên một khung màn hình, gọi là form Phần "Basic" đề cập đến ngôn ngữ BASIC (Beginners All-Purpose Symbolic Instruction Code), một ngôn ngữ lập trình đơn giản, dễ học, được chế ra cho các khoa học gia (những người không có thì giờ để học lập trình điện toán) dùng

Visual Basic đã được ra từ MSBasic, do Bill Gates viết từ thời dùng cho máy tính 8 bits 8080 hay Z80 Hiện nay nó chứa đến hàng trăm câu lệnh (commands), hàm (functions)

và từ khóa (keywords) Rất nhiều commands, functions liên hệ trực tiếp đến MSWindows GUI Những người mới bắt đầu có thể viết chương trình bằng cách học chỉ một vài commands, functions và keywords Khả năng của ngôn ngữ này cho phép những người chuyên nghiệp hoàn thành bất kỳ điều gì nhờ sử dụng ngôn ngữ lập trình MSWindows nào khác

Người mang lại phần "Visual" cho Visual Basic là ông Alan Cooper Ông đã gói môi trường hoạt động của Basic trong một phạm vi dễ hiểu, dễ dùng, không cần phải chú ý đến

sự tinh xảo của Microsoft Windows, nhưng vẫn dùng các chức năng của Microsoft Windows một cách hiệu quả Do đó, nhiều người xem ông Alan Cooper là cha già của Visual Basic

Trang 32

4.2 Chương trình lập tiến độ

Trong phạm vi đề tài này chủ yếu là trình bày mô hình lập tiến độ, không đi sâu vào những kỹ thuật lập trình phức tạp của Visual Basic 6.0 Do đó, trong mục này chủ yếu là hướng dẫn sử dụng chương trình cũng như giải thích các ký hiệu, biểu tượng sẽ có trong quá trình sử dụng chương trình

4.2.1 Nhập dữ liệu

Hình 4.1 : Giao diện chương trình

Chọn File-New hoặc click vào icon để tạo một dự án mới

Một cửa sổ nhỏ sẽ xuất hiện để nhập vào số tổ đội lớn nhất cùng thực hiện một công tác và số đơn vị của dự án:

Hình 4.2 : Cửa sổ nhập số tổ đội lớn nhất và số đơn vị của dự án

Trang 33

Sau đó chọn OK, màn hình chính sẽ xuất hiện như sau:

Hình 4.3 : Giao diện nhập đơn vị, công tác và tổ đội

Trong hình vẽ trên chỉ có một công tác nên khi muốn bổ sung công tác ta phải chọn Edit-Insertactivities hoặc click vào icon Công tác mới sẽ được bổ sung vào vị trí cuối cùng Còn xóa bỏ công tác thì click vào icon , khi click vào icon thì công tác cuối cùng

sẽ bị xóa Trong cột Predecessors ta nhập vào công tác đứng trước theo dạng sau:

XFS+Ydays,ZFS,TFS

Trong đó:

X,Y,Z: là số thứ tự của công tác trong cột Act

Y: là thời gian gián đoạn và trước thời gian gián đoạn phải có dấu “+”(cộng)

FS: ràng buộc giữa 2 công tác là (Finish – Start) (ở đây chỉ xét ràng buộc FS)

Lưu ý là giữa các công tác đứng trước phải cách nhau bằng dấu “,”(phẩy)

Trang 34

Trong cột Attribute Type ta nhâp vào dạng công tác Khi click vào ô này sẽ xuất

ComboBox, click vào mũi tên ta được Sau đó chọn loại Alpha hay Beta tùy thuộc vào tính chất của từng loại công tác

Trong cột Crew ta nhập vào số tổ đội cùng thi công công tác đó

Trong bảng sau ta nhập thời gian và chi phí để thực hiện một đơn vị khối lượng

Trong cột Act là số thứ tự của công tác

Trong cột Crew 1 ci : ta nhập vào chi phí để thực hiện một đơn vị khối lượng của tổ đội

1 và ứng với số thứ tự công tác ở cột Act Trong các ô này chỉ chấp nhận giá trị dạng số

Trong cột Crew 1 di : ta nhập vào thời gian để thực hiện một đơn vị khối lượng của tổ đội 1 và ứng với số thứ tự công tác ở cột Act Trong các ô này chỉ chấp nhận giá trị dạng

số Sau đây là một ví dụ sau khi nhập dữ liệu hoàn chỉnh:

Hình 4.4 : Một ví dụ về nhập dữ liệu hoàn chỉnh

Ngoài ra để tính chi phí của dự án ta phải nhập vào chi phí gián tiếp và chi phí trực tiếp:

Trang 35

Hình 4.5 : Nhập chi phí gián tiếp của dựa án

Sau khi thực hiện xong bước này thì phần nhập dữ liệu đã hoàn tất Ta có thể lưu dữ liệu thành một tập tin Ở đây, ta lấy cấu trúc tập tin cơ sở dữ liệu của Microsoft Access để lưu thông tin của dự án Do đó, có thể sửa các thông tin này trong Microsoft Access

Hình 4.6: Cửa sổ lưu thông tin dự án

Để lưu thông tin dự án ta chọn File-Save Nếu là một tập tin mới thì sẽ xuất hiện của sổ như hình trên Còn nếu đã có tập được lưu trước đó thì chương trình chỉ cập nhật những dữ liệu hiện tại vào tập tin đó Sau đó, nhập tên tập tin vào ô File name và chọn Save Nếu tập tin đã tồn tại, ta có thể lưu thành một tập tin khác bằng cách chọn File-Save as thì của sổ như trên cũng sẽ xuất hiện Ngoài ra, ta cũng có thể click vào biểu tượng để lưu dự án thay cho việc chọn File-Save

Để mở một dự án đã có ta chọn File – Open hoặc click vào biểu tượng để mở tập

Trang 36

đó giai đoạn này chủ yếu là tính toán về số Sau đây là các đoạn mã của các sơ đồ khối:

Theo sơ đồ khối xác định tổ đội thực hiện công tác – hàm namecrew(j, Ci):

Function namecrews(numberunit, numbercrews As Variant) As Integer

If numberunit Mod numbercrews = 0 Then

namecrews = numberunit Mod numbercrews + numbercrews

Trang 37

Public Sub create_matrix_CD()

Dim i, j As Integer

Dim num_crews, name_crews As Integer

Dim di, ci As Single

Frmmain.MSF3.Cols = Frmmain.MSF1.Rows - 1

Frmmain.MSF3.Rows = Frmmain.MSF1.Cols - 4

For i = 1 To Frmmain.MSF1.Rows - 1

For j = 1 To Frmmain.MSF1.Cols - 4

num_crews = Frmmain.MSF1.TextMatrix(i, Frmmain.MSF1.Cols - 1)

name_crews = namecrews(j, num_crews)

di = Frmmain.MSF2.TextMatrix(i, name_crews * 2) * Frmmain.MSF1.TextMatrix(i, j + 1)

Trang 38

Public Sub constrain_crew_pre()

Dim i, j, k, l, i_crew As Integer

Dim numPre, num_crews, itam, name_crew, name_unit_max As Integer

Dim Max, Stam, D_act, D_acti, chenhlech, Max_EF_crew, D_crew_act, D_crew_act_temp As Single

Dim namePre As String

If ES(j, namePre) <> "" Then

Stam = EF(j, namePre)

If Val(lag_Pre(Frmmain.MSF1.TextMatrix(i, 1), k)) <> 0 Then

' Frmmain.Text1 = Val(lag_Pre(Frmmain.MSF1.TextMatrix(i, 1), k)) Stam = Stam + Val(lag_Pre(Frmmain.MSF1.TextMatrix(i, 1), k)) End If

If Max < Stam Then

Max = Stam

End If

Trang 39

Theo sơ đồ khối tính toán ESij và EFij theo bước 2

Public Sub constrain_alpha()

Dim i, j, k, l, i_crew As Integer

Dim numPre, num_crews, itam, name_crew, name_unit_max As Integer

Dim Max, Stam, D_act, D_acti, chenhlech, Max_EF_crew, D_crew_act, D_crew_act_temp As Single

Dim namePre As String

For i = 2 To Frmmain.MSF1.Rows - 1

If LCase(Frmmain.MSF1.TextMatrix(i, Frmmain.MSF1.Cols - 2)) = LCase("alpha") Then

For j = 1 To Frmmain.MSF1.Cols - 4

Trang 40

name_crew = namecrews(j, Frmmain.MSF1.TextMatrix(i, Frmmain.MSF1.Cols - 1))

If name_crew = i_crew Then

' If Max_EF_crew < ES(k, i) + D_crew_act_temp Then

' Max_EF_crew = ES(k, i) + D_crew_act_temp

Ngày đăng: 03/04/2021, 23:25

TRÍCH ĐOẠN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w