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

Lập trình mô phỏng một số thuật toán giải quy hoạch tuyến tính hỗ trợ việc giảng dạy bộ môn tối ưu hóa

89 262 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 89
Dung lượng 1,45 MB

Nội dung

LỜI CAM ĐOAN Tên tôi là: NGUYỄN VĂN PHÒNG Sinh ngày: 10/01/1987 Quê quán: Tân Phương – Thanh Thủy – Phú Thọ Nơi công tác: Trường Đại học Công nghiệp Việt Trì Tôi xin cam đoan Luận văn t

Trang 1

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM HÀ NỘI 2

NGUYỄN VĂN PHÕNG

LẬP TRÌNH MÔ PHỎNG MỘT SỐ THUẬT TOÁN GIẢI QUY HOẠCH TUYẾN TÍNH HỖ TRỢ VIỆC

GIẢNG DẠY BỘ MÔN TỐI ƯU HÓA

LUẬN VĂN THẠC SĨ MÁY TÍNH

HÀ NỘI, 2017

Trang 2

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM HÀ NỘI 2

NGUYỄN VĂN PHÕNG

LẬP TRÌNH MÔ PHỎNG MỘT SỐ THUẬT TOÁN GIẢI QUY HOẠCH TUYẾN TÍNH HỖ TRỢ VIỆC

GIẢNG DẠY BỘ MÔN TỐI ƯU HÓA

Chuyên ngành: Khoa học máy tính

Mã số: 60 48 01 01

LUẬN VĂN THẠC SĨ MÁY TÍNH

Người hướng dẫn khoa học: TS Trần Minh Tước

HÀ NỘI, 2017

Trang 3

LỜI CẢM ƠN

Trong quá trình học tập, nghiên cứu và thực hiện Luận văn Thạc sỹ, tôi

đã nhận được sự giúp đỡ, tạo điều kiện nhiệt tình và quý báu của nhiều cá nhân và tập thể

Trước tiên, tôi xin bày tỏ lòng biết ơn sâu sắc tới thầy giáo TS Trần Minh Tước đã tận tình hướng dẫn trong suốt thời gian nghiên cứu và hoàn thành luận văn này

Tôi xin chân thành cám ơn các thầy cô Khoa đào tạo Sau đại học và các thầy cô giảng dạy đã hướng dẫn, truyền đạt trong suốt quá trình học tập và thực hiện luận văn

Tôi cũng xin chân thành cám ơn bạn bè, đồng nghiệp thuộc lớp cao học K19 Khoa học máy tính đã giúp tôi trong suốt quá trình học tập và hoàn thiện luận văn này

Mặc dù tôi đã rất cố gắng hoàn thiện luận văn bằng tất cả sự nhiệt tình và năng lực của mình, tuy nhiên không thể tránh khỏi những thiếu sót hoặc có những phần nghiên cứu chưa sâu Rất mong nhận được sự chỉ bảo và thông cảm của các Thầy cô

Tôi xin trân trọng cảm ơn!

Hà Nội, ngày tháng năm 2017

Tác giả luận văn

Nguyễn Văn Phòng

Trang 4

LỜI CAM ĐOAN

Tên tôi là: NGUYỄN VĂN PHÒNG

Sinh ngày: 10/01/1987

Quê quán: Tân Phương – Thanh Thủy – Phú Thọ

Nơi công tác: Trường Đại học Công nghiệp Việt Trì

Tôi xin cam đoan Luận văn tốt nghiệp cao học ngành Máy tính với đề tài

: “Lập trình mô phỏng một số thuật toán giải quy hoạch tuyến tính hỗ trợ việc giảng dạy bộ môn tối ưu hóa” là luận văn do cá nhân tôi thực hiện Các

kết quả tính toán, các mô hình không sao chép bất kỳ tài liệu nào khác

Hà Nội, ngày tháng năm 2017

Tác giả luận văn

Nguyễn Văn Phòng

Trang 5

MỤC LỤC LỜI CẢM ƠN

LỜI CAM ĐOAN

MỤC LỤC

MỞ ĐẦU 1

1 Lý do chọn đề tài 1

2 Mục đích nghiên cứu 2

3 Nhiệm vụ nghiên cứu 2

4 Đối tượng và phạm vi nghiên cứu 2

5 Dự kiến đóng góp 2

6 Phương pháp nghiên cứu 2

NỘI DUNG 3

CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 3

1.1 Bài toán quy hoạch tuyến tính 3

1.1.1 Bài toán quy hoạch tuyến tính 3

1.1.1.1 Một số mô hình thực tế 3

1.1.1.2 Bài toán quy hoạch tuyến tính tổng quát 6

1.1.1.3 Dạng chính tắc của bài toán quy hoạch tuyến tính 6

1.1.1.4 Đưa bài toán quy hoạch tuyến tính về dạng chính tắc 7

1.1.2 Phương án cơ sở chấp nhận được 8

1.1.3 Tiêu chuẩn tối ưu 9

1.2 Thuật toán đơn hình giải bài toán quy hoạch tuyến tính 10

1.2.1 Thuật toán 10

1.2.1.1 Tư tưởng của phương pháp đơn hình 10

1.2.1.2 Biểu diễn qua cơ sở Dấu hiệu tối ưu 11

1.2.1.3 Công thức biến đổi, bảng đơn hình 13

1.2.2 Thuật toán đơn hình dạng bảng 14

1.2.1.1 Bảng đơn hình 14

1.2.2.2.Thuật toán đơn hình dạng bảng 14

1.3 Thuật toán đơn hình hai pha 16

1.4 Thuật toán đánh thuế 18

1.5 Tối ưu hóa rời rạc 21

1.5.1 Bài toán tối ưu rời rạc 21

1.5.2 Bài toán cái túi 22

1.5.3 Bài toán cái túi dạng 0 -1 23

Trang 6

1.5.4 Đưa bài toán quy hoạch tuyến tính nguyên về bài toán cái túi 24

1.5.4.1 Định lý 1.6 24

1.5.4.2 Đinh lý 1.7 25

CHƯƠNG 2: LẬP TRÌNH MÔ PHỎNG PHƯƠNG PHÁP ĐƠN HÌNH 27

2.1 Mô tả dữ liệu 27

2.1.1 Dữ liệu nhập 27

2.1.2 Đưa bài toán về dạng chính tắc 29

2.2 Lập trình mô phỏng thuật toán đơn hình gốc 31

2.2.1 Khởi tạo bài toán 31

2.2.2 Đưa bài toán về dạng chuẩn 33

2.2.3 Xây dựng bảng đơn hình 33

2.3 Lập trình mô phỏng thuật toán đơn hình hai pha 45

2.3.1 Khởi tạo bài toán 45

2.3.2 Xây dựng bài toán phụ (P) 46

2.3.3 Xây dựng bảng đơn hình ứng với pha 1 49

2.3.3 Giải bài toán pha 2 50

2.4 Lập trình mô phỏng thuật toán đơn hình đánh thuế 52

2.4.1 Khởi tạo bài toán 52

2.4.2 Xây dựng bài toán (M) 53

2.4.3 Giải bài toán (M) 55

CHƯƠNG 3: LẬP TRÌNH MÔ PHỎNG GIẢI QUY HOẠCH TUYẾN TÍNH NGUYÊN 58

3.1 Lập trình mô phỏng đưa bài toán quy hoạch tuyến tính nguyên với các hệ số dương về bài toán cái túi 58

3.1.1 Mô tả dữ liệu 58

3.1.1.1 Dữ liệu nhập 58

3.1.1.2 Xử lý dữ liệu 59

3.1.2 Lập trình mô phỏng 62

3.1.2.1 Khởi tạo bài toán 62

3.1.2.2 Đưa bài toán về dạng chính tắc 63

3.1.2.3 Hợp nhất các ràng buộc 64

3.2 Lập trình mô phỏng thuật toán giải bài toán cái túi 67

3.2.1 Mô tả dữ liệu 67

3.2.1.1 Dữ liệu nhập 67

Trang 7

3.1.1.2 Xử lý dữ liệu 68

3.2.2 Lập trình mô phỏng thuật toán 70

3.2.2.1 Khởi tạo bài toán 70

3.2.2.2 Hiển thị mô hình bài toán cái túi 71

3.2.2.3 Giải bài toán cái túi theo từng bước 71

3.3 Lập trình mô phỏng giải bài toán cái túi 0 - 1 73

3.3.1 Mô tả dữ liệu 73

3.3.1.1 Dữ liệu nhập 73

3.3.1.2 Xử lý dữ liệu 74

3.3.2 Lập trình mô phỏng thuật toán 76

3.3.2.1 Khởi tạo bài toán 76

3.3.2.2 Hiển thị mô hình bài toán cái túi 77

3.3.2.3 Giải bài toán cái túi theo từng bước 77

KẾT LUẬN 80

DANH MỤC TÀI LIỆU THAM KHẢO 81

Trang 8

Khi số lượng biến trong bài toán quy hoạc tuyến tính tăng lên thì việc giải bài toán quy hoạch tuyến tính thủ công hiện nay mất rất nhiều thời gian

và rất dễ nhầm lẫn Để phục vụ cho việc giảng dạy và học tập bộ môn tối ưu hóa thì phần mềm giải bài toán quy hoạch tuyến tính là sự trợ giúp cần thiết cho cả người dạy lẫn người học

Với mong muốn đạt được mục tiêu nói trên, tôi chọn "Lập trình mô phỏng một số thuật toán giải quy hoạch tuyến tính hỗ trợ việc giảng dạy

bộ môn tối ƣu hóa" làm đề tài nghiên cứu

Trang 9

2

2 Mục đích nghiên cứu

Hệ thống lại một cách chi tiết các vấn đề lý thuyết về bài toán quy hoạch tuyến tính; xây dựng chương trình mô phỏng các phương pháp giải bài toán quy hoạch tuyến tính

3 Nhiệm vụ nghiên cứu

 Nghiên cứu các kiến thức liên quan đến bài toán quy hoạch tuyến tính

 Nghiên cứu một số thuật toán giải bài toán quy hoạch tuyến tính

 Lập trình mô phỏng một số thuật toán giải bài toán quy hoạch tuyến tính

4 Đối tượng và phạm vi nghiên cứu

Đối tượng nghiên cứu: Lý thuyết tối ưu hóa

Phạm vi nghiên cứu: Các thuật toán giải bài toán quy hoạch tuyến tính

5 Dự kiến đóng góp

Sản phẩm khoa học: Hệ thống lại một số kiến thức của lý thuyết tối ưu tuyến tính, giới thiệu một số thuật toán giải bài toán quy hoạch tuyến tính Mô hình hệ thống mô phỏng thuật toán giải quy hoạch tuyến tính

Sản phẩm thực tiễn: Phần mềm mô phỏng một số thuật toán giải bài toán quy hoạch tuyến tính

6 Phương pháp nghiên cứu

 Phương pháp nghiên cứu lý luận: Đọc tài liệu về môn quy hoạch tuyến tính, các tài liệu liên quan đến tối ưu hóa, các khóa luận, luận văn tốt nghiệp

về quy hoạch tuyến tính

 Phương pháp lấy ý kiến chuyên gia: Tham khảo ý kiến của giảng viên hướng dẫn và các giảng viên dạy tối ưu hóa

 Phương pháp tổng kết kinh nghiệm: Tổng kết kinh nghiệm của bản thân qua quá trình xây dựng phần mềm giải bài toán quy hoạch tuyến tính Kinh nghiệm của các giảng viên, sinh viên tham gia giảng dạy và học tập tối ưu hóa

Trang 10

3

NỘI DUNG CHƯƠNG 1: CƠ SỞ LÝ THUYẾT

1.1 Bài toán quy hoạch tuyến tính

1.1.1 Bài toán quy hoạch tuyến tính

1.1.1.1 Một số mô hình thực tế

A Bài toán lập kế hoạch sản xuất

Một cơ sở có thể sản xuất hai loại sản phẩm A và B, từ các nguyên liệu I, II, III Chi phí từng loại nguyên liệu và tiền lãi của một đơn vị sản phẩm, cũng như dự trữ nguyên liệu cho trong bảng sau đây:

Nguyên liệu Sản phẩm

Khi đó ta cần tìm sao cho đạt lãi lớn nhất

với điều kiện nguyên liệu:

Tức là cần giải bài toán:

( )

Trang 11

4

(Nguồn Internet)

B Bài toán phân công lao động:

Một lớp học cần tổ chức lao động với hai loại công việc: xúc đất và chuyển đất Lao động của lớp được chia làm 3 loại A, B, C, với số lượng lần lượt là 10, 20, 12 Năng suất của từng loại lao động trên từng công việc cho trong bảng dưới đây:

Lao động Công việc

Trang 12

5

(Nguồn Internet) C Bài toán khẩu phần thức ăn: Một khẩu phần thức ăn có khối lượng P, có thể cấu tạo từ n loại thức ăn Gía mua một đơn vị thức ăn loại j là cj Để đảm bảo cơ thể phát triển bình thường thì khẩu phần cần m loại chất dinh dưỡng Chất dinh dưỡng thứ i cần tối thiểu cho khẩu phần là b i và có trong một đơn vị thức ăn loại j là a ij Hỏi nên cấu tạo một khẩu phần thức ăn như thế nào để ăn đủ no, đủ chất dinh dưỡng mà có giá thành rẻ nhất Lập bài toán: Gọi ( ) là số đơn vị thức ăn loại được cấu tạo trong khẩu phần Khi đó, giá thành của khẩu phần là: ( ) ∑

Vì phải đảm bảo thoả mãn điều kiện đủ no và đủ chất, tức là: ∑ ∑

̅̅̅̅̅̅

Ta có bài toán sau: ( ) ∑

Với điều kiện:

Trang 13

6

{

̅̅̅̅̅̅

̅̅̅̅̅

(Nguồn Internet)

Ta thấy rằng ba bài toán trên đều thuộc bài toán tổng quát

1.1.1.2 Bài toán quy hoạch tuyến tính tổng quát

Bài toán tổng quát của QHTT có dạng:

̅̅̅̅̅

̅̅̅̅̅̅̅̅̅̅̅

̅̅̅̅

(Nguồn Internet)

1.1.1.3 Dạng chính tắc của bài toán quy hoạch tuyến tính

Người ta thường xét bài toán QHTT dưới dạng sau:

( ) ∑

Với điều kiện:

Với điều kiện:

(1.1)

Trang 14

7

{

1.1.1.4 Đưa bài toán quy hoạch tuyến tính về dạng chính tắc

Phương pháp: Ta có thể đưa bài toán tuyến tính tổng quát về bài toán

tuyến tính dạng chính tắc tương đương nhờ các quy tắc sau:

Nếu có ( ) thì đổi thành * ( )+

 Nếu có bất đẳng thức ∑ hoặc ∑

thì ta đưa thêm ẩn phụ , với hệ số hàm mục tiêu để có:

Với điều kiện:

Với điều kiện:

Với điều kiện:

(1.2)

(1.3)

Trang 15

8

∑ hoặc ∑

 Nếu có ẩn chưa ràng buộc về dấu, thì ta có thể thay nó bởi hai

biến mới không âm, theo công thức:

Định nghĩa 1.1: Ta gọi cơ sở của ma trận A là một bộ m vectơ cột

độc lập tuyến tính { } của nó (Nguyễn Đức Nghĩa,

Trang 16

9

Định nghĩa 1.2 Phương án cơ sở được gọi là phương án cơ sở chấp nhận được (lời giải cơ sở chấp nhận được) nếu như nó là phương án chấp

nhận được (Nguyễn Đức Nghĩa, 1996)

Mệnh đề 1.1 Giả sử x là phương án cơ sở chấp nhận được của bài

toán tối ưu tuyến tính tương ứng với cơ sở B Khi đó tìm được vectơ c sao cho x là phương án tối ưu duy nhất của bài toán

* ̅ +

(Nguyễn Đức Nghĩa, 1996)

Sự tồn tại phương án cơ sở chấp nhận được

Mệnh đề 1.2 Phương án chấp nhận được x là phương án cơ sở chấp

nhận được khi và chỉ khi tập vectơ cột của ma trận A ứng với các thành phần khác không của nó tạo thành một hệ vectơ độc lập tuyến tính (Nguyễn Đức Nghĩa, 1996)

Định lý 1.1 Giả sử bài toán QHTT dạng chính tắc (1.1) – (1.3) có

phương án chấp nhận được Khi đó có ít nhất một phương án cơ sở chấp nhận được (Nguyễn Đức Nghĩa, 1996)

1.1.3 Tiêu chuẩn tối ưu

Định nghĩa 1.3 Phương án cơ sở chấp nhận được x được gọi là không

suy biến nếu như tất cả các thành phần cơ sở của nó là khác không (Nguyễn Đức Nghĩa, 1996)

Định lý 1.2 (Tiêu chuẩn tối ưu) Bất đẳng thức:

Là điều kiện đủ, và trong trường hợp không suy biến cũng là điều kiện cần để phương án cơ sở chấp nhận được x là tối ưu (Nguyễn Đức Nghĩa, 1996)

Trang 17

10

Định lý 1.3 (Điều kiện đủ để hàm mục tiêu không bị chặn dưới) Nếu

trong số các ước lượng của phương án cơ sở chấp nhận được x có ước lượng dương (∆ jo >0) mà ứng với nó là các thành phần của vectơ B -1 A jo là không dương thì hàm mục tiêu của bài toán là không bị chặn dưới.(Nguyễn Đức Nghĩa, 1996)

1.2 Thuật toán đơn hình giải bài toán quy hoạch tuyến tính

1.2.1 Thuật toán

1.2.1.1 Tư tưởng của phương pháp đơn hình

Xét bài toán quy hoạch tuyến tính dạng chính tắc

̅̅̅̅̅

Ta đã biết rằng:

- Nếu bài toán có phương án thì có phương án cực biên

- Nếu bài toán có phương án tối ưu thì cũng có phương án cực biên tối ưu

Số phương án cực biên là hữu hạn

Với điều kiện:

Trang 18

11

Do đó, ta có thể tìm một phương án tối ưu(hay một lời giải của bài toán) trong tập hợp các phương án cực biên Tập hợp này là hữu hạn Vì vậy Dantzig đề xuất thuật toán đơn hình như sau:

Xuất phát từ một phương án cực biên x 0 Kiểm tra xem x 0

có là

phương án tối ưu hay chưa Nếu x 0

chưa phải là phương án tối ưu thì tìm

cách cải tiến nó để được phương pháp khác là x 1

tốt hơn x 0, tức là:

( ) ( ) Qúa trình này lặp lại nhiều lần Vì số phương án cực biên là hữu hạn nên sau một số hữu hạn lần lặp ta sẽ tìm thấy phương án cực biên tối ưu

Để thực hiện thuật toán đề ra ở trên, ta cần làm rõ hai vấn đề sau:

1 Làm thế nào để biết một phương án cực biên đã cho là tối ưu hay chưa, tức là cần tìm

« dấu hiệu tối ưu »

2 Làm thế nào để từ một phương án cực biên chưa tối ưu tìm được một phương án cực biên tốt hơn nó

(Nguồn Internet)

1.2.1.2 Biểu diễn qua cơ sở Dấu hiệu tối ưu

Giả sử có phương án cực biên với cơ sở (tức là hệ véctơ cột độc lập tuyến tính { } và ) Ta có:

( )

(vì Với mỗi , ta biểu diễn vé tơ qua véc tơ

cơ sở

Trang 19

∑(

∑ )

∑ ∑

∑ (

)

Trang 20

13

Ký hiệu:

( ) gọi là ước lượng của véc tơ cột theo cơ sở J và:

(Nguyễn Ngọc Thắng và Nguyễn Đình Hóa, 2004)

1.2.1.3 Công thức biến đổi, bảng đơn hình

Giả sử x0

với cơ sở J là một phương án cực biên nhưng chưa phải là phương án tối ưu, khi đó k J 0 sao cho ∆k > 0 Giả sử s là một chỉ số trong các chỉ số nói trên:

s J 0 , ∆s > 0

Theo thuật toán trên ta cần cải tiến x0

để nhận được một phương án cực biên mới tốt hơn Ta sẽ tìm một phương án cực biên mới x1

Trang 21

14

Trong đó  là một số dương sẽ được xác định sau sao cho x1

là một phương án cực biên

(Nguyễn Ngọc Thắng và Nguyễn Đình Hóa, 2004)

1.2.2 Thuật toán đơn hình dạng bảng

1.2.1.1 Bảng đơn hình

Để thuận tiện cho việc tính toán, người ta sắp xếp các số liệu thành một bảng gọi là bảng đơn hình như dưới đây:

Bảng 1.1 Bảng đơn hình (Nguồn Internet)

Các cột ứng với  sẽ là các véc tơ đơn vị với số 1 trên dòng với chỉ

số

1.2.2.2.Thuật toán đơn hình dạng bảng

Trang 22

15

Bước xuất phát: Tìm một phương án cực biên và cơ sở tương ứng Tìm các hệ số khai triển và các ước lượng

Bước 1: Kiểm tra dấu hiệu tối ưu

- Nếu thì là phương án tối ưu Thuật toán kết thúc

- Nếu  thì chuyển sang bước 2

Bước 2: Kiểm tra dấu hiệu hàm mục tiêu giảm vô hạn:

Với mỗi mà thì kiểm tra các hệ số khai triển của cột tương ứng

a, Nếu có một mà tất cả các thì kết luận hàm mục tiêu giảm vô hạn trên miền ràng buộc Bài toán không có lời giải hữu hạn Thuật toán kết thúc

b, mà đều tồn tại ít nhất một hệ số thì chuyển sang bước 3

Bước 3: Xác định cột xoay, dòng xoay, phần tử trục

Bước 4:Tính các ( ) trong cơ sở mới

J 1 (J 0 \ r) s theo các công thức trên Ghi nhận các kết quả trong

một bảng mới Quay trở lại bước 1

- Để nhận được bảng đơn hình mới từ bảng đơn hình cũ ta làm như sau:

Trang 23

16

+ Thay A r bằng A s , c r bằng c s

+ Chia các phần tử trên hàng xoay ( hàng r) cho phần tử trục z rs ta

được hàng r mới gọi là hàng chuẩn

+ Mỗi phần tử khác ngoài hàng xoay trừ đi tích của phần tử cùng hàng với nó trên cột xoay với phần tử cùng cột với nó trên hàng chuẩn được phần tử cùng vị trí trong bảng đơn

(Nguyễn Ngọc Thắng và Nguyễn Đình Hóa, 2004)

1.3 Thuật toán đơn hình hai pha

Xét bài toán quy hoạch tuyến tính dạng chính tắc

̅̅̅̅̅̅

̅̅̅̅̅

Không giảm tính tổng quát coi b i ≥ 0 (I = 1,2,…, m) Nếu trái lại có

b i < 0, ta nhân hai vế ràng buộc thứ i với -1

Xét bài toán phụ sau:

( )

Trang 24

17

{

∑ ( ̅̅̅̅̅̅)

( ̅̅̅̅̅) ( ̅̅̅̅̅̅)Các biến un+i , (i=1,2,…,m) gọi là các biến giả Nếu ký hiệu e =

(1,1,…,1)t

là vectơ gồm m thành phần đều bằng 1, còn E là ma trận đơn vị cấp m, thì ma trận của bài toán (P) là:

( ) {

Bài toán (P) cũng là một quy hoạch tuyến tính với n + m biến Đối với bài toán (P) ta có ngay phương án cực biên xuất phát (x,u) = (0,b) tức là

xj=0 (j = 1,2, ,n), un+i = bi (i=1,2,…,m) và cơ sở tương ứng là m cột cuối và

ma trận cơ sở Aj = E Nghĩa là rất thuận lợi để bắt đầu thủ tục đơn hình Bài toán phụ (P) giúp ta giải quyết vấn đề phương án cực biên và cơ sở xuất phát của bàn toán ban đầu (I)

Định lý 1.4 Bài toán ban đầu (I) có phương án chấp nhận được khi và chỉ

khi bài toán phụ (P) có phương án tối ưu với tất cả các biến giả u n+i đều bằng 0 (i=1,2,…,m) (Nguyễn Ngọc Thắng và Nguyễn Đình Hóa, 2004)

Quá trình giải bài toán phụ (P) gọi là pha thứ nhất trong phương pháp hai pha Giả sử sau pha thứ nhất này ta nhận được phương án tối ưu (x*,u*) của bài toán phụ (P) Có 3 khả năng:

a, Nếu u*  0 thì kết luận bài toán ban đầu (I) không có phương án

b, Nếu u* = 0 và cơ sở tương ứng gồm toàn các cột ứng với xi, không chứa cột nào ứng với các biến giả un+i (i =1,2,…m) Đây chính là phương

D’:

(P)

Trang 25

biến giả u n+i , J = J x +J u

Trường hợp C1: Nếu trên còng có chỉ số (n+i) của bảng đơn hình cuối

cùng của bài toán (P) ta tìm được một một chỉ số k ngoài cơ sở (1≤ k ≤n) sao cho z n+i,k ≠ 0 thì ta thực hiện phép đổi cơ sở với phần tử trục là z n+i,k để

đưa (n+i) ra và đưa k vào cơ sở, ta sẽ nhận được một cơ sở mới trong đó đã

được bớt đi một cột ứng với biến u Lặp lại cách làm này ta sẽ loại hết được các cột ứng với các biến giả u và sẽ nhận được cơ sở xuất phát cho bài toán ban đầu (I) gồm toàn các cột của ma trận A

Trường hợp C2: Trên dòng chỉ số (n+i) của bảng đơn hình cuối cùng

của bài toán (P) không tìm được chỉ số k ngoài cơ sở (1≤ k ≤n) mà z n+i,k ≠ 0

thì ta kết luận rằng dòng i của ma trận A là tổ hợp tuyến tính của các dòng còn lại Ta có thể xóa dòng này đi và đồng thời có thể loại bỏ luôn biến giả

un+i

Tóm lại, trong cả hai trường hợp C1 và C2 ta đều loại được các cột ứng với các biến giả u ra khỏi cơ sở để nhận được một cơ sở chỉ gồm toàn cột ứng với biến x Đây là cơ sở xuất phát để giải quyết bài toán ban đầu

1.4 Thuật toán đánh thuế

Phương pháp hai pha có nhược điểm là quá trình tính toán không liên tục mà chia thành hai giai đoạn tách biệt Hàm mục tiêu là khác nhau nên một số kết quả tính ra không thể kế thừa được Phương pháp đánh thuế

Trang 26

u n+i > 0 khiến cho trong trường hợp phương án tối ưu của bài toán (M) (x*,u*) buộc phải có u* n+i = 0 (I = ̅̅̅̅̅̅) Phương án tối ưu đó đồng thời đạt cực tiểu hàm f(x) = c t

x = ∑ trên miền D = {x: Ax = b, x ≥ 0} tức

là cho x* là phương án tối ưu của bài toán ban đầu Mặt khác đối với bài

toán (M) có đầy đủ điều kiện để thực hiện thủ tục đơn hình vì ta có ngay

phương án xuất phát là (0,b) với cơ sở là các vectơ cột đơn vị ứng với các

u n+i (ma trận cơ sở là E)

Trang 27

a, Coi ( ) nếu ( ) , hoặc ( )

b, Coi ( ) ( ) nếu ( ) ( ) hoặc ( ) ( )

Cũng vì thế trong bảng đơn hình bài toán (M), dòng cuối cùng ghi các ước lượng ( ) được chia thành hai hàng: hàng trên ghi các ∆ k (ước lượng của bài toán (I), ứng với M = 0), hàng dưới ghi các ( ) (ước lượng của bài

toán (P), ứng với M = 1, c j = 0 ( j = 1,2, ,n)

Kết quả giải bài toán (M) bằng phương pháp đơn hình sẽ rơi vào một trong ba trường hợp sau đây:

Trang 28

21

a, Nhận được phương án tối ưu (x*,u*) với u* = 0 Lúc đó x* là

phương án tối ưu của bài toán (I) ban đầu

b, Nhận được phương án tối ưu (x*,u*) với u* ≠ 0, ta kết luận bài toán

ban đầu (I) không có phương án

c, Phát hiện ra rằng bài toán (M) có hàm mục tiêu không bị chặn dưới trong miền ràng buộc Nếu cơ sở tương ứng không có cột nào ứng với các biến giả thì đây cũng là một cơ sở của bài toán (I), ta kết luận bài toán (I)

có phương án nhưng hàm mục tiêu không bị chặn dưới trên miền ràng buộc nên không có phương án tối ưu

Nếu cơ sở vẫn còn cột ứng với biến giả thì để biết bài toán (I) có phương án hay không ta phải sửa lại hàm mục tiêu bằng cách cho tất cả

c j =0, (j = 1,2, ,n), M=1 và tiến hành thủ tục đơn hình giải bài toán (P) như

trong pha đầu của phương pháp hai pha

1.5 Tối ƣu hóa rời rạc

1.5.1 Bài toán tối ƣu rời rạc

Xây dựng mô hình tối ưu rời rạc

Trước tiên chúng ta bàn về những nguyên nhân dẫn đến tính rời rạc của biến số trong việc xây dựng mô hình tối ưu hóa cho các bài toán trong thực tế

Một trong những nguyên nhân đầu tiên dẫn đến tính rời rạc của biến

số là tính chất không chia cắt được của đối tượng nghiên cứu Một nguyên nhân khác thường cũng dẫn đến tính rời rạc của biến số là do ta phải mô tả các khả năng thiết kế Ngoài ra, trong nhiều bài toán thực tế do chính cấu trúc tổ hợp ban đầu của bài toán mà các biến số chỉ có thể nhận các giá trị rời rạc Cuối cùng, tính rời rạc của biến số có thể xuất hiện từ tính không liên tục, đa cực trị của hàm mục tiêu bài toán

Trang 29

22

Bài toán tối ưu rời rạc tổng quát có thể phát biểu như sau:

( ) ( ) ( ) Trong đó D là tập các vectơ ( ) mà một số ( hoặc tất cả) các thành phần của nó chỉ nhận giá trị rời rạc

Thông thường tập D được xác định bởi một hệ thống các phương trình

và bất phương trình với điều kiện bổ sung về tính nguyên của các biến số

( ) ( ) Khi đó bài toán được gọi là bài toán quy hoạch nguyên

1.5.2 Bài toán cái túi

Một nhà thám hiểm có n đồ vật cần mang theo người Các đồ vật đó

được đựng trong một chiếc túi có thể chứa nhiều nhất là b (kg) Biết đồ vật thứ j có trọng lượng a j (kg) và có giá trị là c j (đơn vị tiền tệ), j = 1, 2, …, n

Hỏi nhà thám hiểm cần mang theo các loại đồ vật nào và với số lượng là bao nhiêu để tổng giá trị sử dụng của chúng là lớn nhất?

Gọi x j là số lượng đồ vật loại j mà nhà thám hiểm quyết định mang

theo Lúc đó chúng ta có bài toán sau:

Trang 30

Max z = c 1 x 1 + c 2 x 2 + … + c n x n

với ràng buộc:

a 1 x 1 + a 2 x 2 + … + a n x n= b

x 1 , x 2 , …, x n 0 và nguyên

Để giải bài toán này chúng ta có thể áp dụng phương pháp nêu trên,

nhưng phải đặt F 0 (0) = 0 và F 0 (y) = - , y ≠ 0

1.5.3 Bài toán cái túi dạng 0 -1

Một trường hợp riêng của bài toán cái túi được quan tâm nhiều là bài toán cái túi dạng 0 -1 Trong trường hợp này chúng ta có n đồ vật, mỗi đồ

vật chỉ có thể lựa chọn mang theo hoặc không mang theo, tương ứng x j =1

hoặc x j = 1

Trang 31

24

Bài toán được mô hình toán học dưới dạng:

Với k = 1,…,n ta tính được F k () ~ F n () là giá trị tối ưu cần tìm

1.5.4 Đƣa bài toán quy hoạch tuyến tính nguyên về bài toán cái túi

Chúng ta xét các phương pháp đưa hệ các phương trình tuyến tính với các hệ số và biến số nguyên về một phương trình tương đương là tổ hợp tuyến tính của các phương trình đã cho Ta gọi việc làm đó là hợp nhất hóa Hợp nhất hóa có thể có lợi vì chúng ta có phương pháp khá hiệu quả để giải bài toán cái túi Khuyết điểm lớn nhất của của hợp nhất hóa là các hệ số trong phương trình hợp nhất là quá lớn

1.5.4.1 Định lý 1.6

Trang 32

Trang 33

26

Trong đó a min = min(a ij : a ij > 0, i = 1,2; j = 1…n)

Khi đó tập các nghiệm nguyên không âm của hệ (6) là trùng với tập nghiệm nguyên không âm của phương trình:

∑( )

(Nguyễn Đức Nghĩa, 1996)

Hệ quả: Đối với hệ

( )

Trong đó a ij là các số nguyên không âm, b i > 0 (i = 1…m), (j = 1…n), luôn tìm được số nguyên t 1 , t 2 , … t m sao cho tập nghiệm nguyên không âm của hệ (7) là trùng với tập nghiệm nguyên không âm của phương trình

∑(

Trang 34

- Input

Số biến n, số ràng buộc m

Các hệ số hàm mục tiêu c, ma trận hệ số ràng buộc A và các hệ số vế phải b

Điều kiện hàm mục tiêu, điều kiện các ràng buộc, điều kiện về dấu của các biến

- Output

Bảng đơn hình theo từng bước

2.1.1 Dữ liệu nhập

- Khai báo các loại dữ liệu

Lưu trữ số biến ta sử dụng biến nguyên $n;

Lưu trữ số ràng buộc ta sử dụng biến nguyên $m;

Lưu trữ hệ số hàm mục tiêu ta sử dụng mảng một chiều $fx;

Trang 35

28

Lưu trữ điều kiện ràng buộc các biến ta sử dụng biến $dkx; $dkx nhận một trong 3 giá trị ( 1; 0; -1) tương ứng với điều kiện ( )

Lưu trữ điều kiện hàm mục tiêu: $dkfx; $dkfx nhận một trong 2 giá trị ( 1; 0) tương ứng với điều kiện ( ( ) ( ) )

Lưu trữ hệ số ràng buộc ta dùng mảng hai chiều $arr;

Lưu trữ điều kiện của các ràng buộc mảng $dkrb; $dkrb nhận 3 giá trị ( 1; 0; -1) tương ứng với điều kiện ( )

Lưu trữ giá trị vế phải các ràng buộc ta sử dụng mảng $b

- Xây dựng các phương thức nhập dữ liệu:

getn(): Nhập dữ liệu số biến

Trang 37

$rbx[$i]=0;

$fx[$n+$k]=0;

$dkx[$n+$k]=1;

for($j=0;$j<$m;$j++) {

$rbx[$i]=0;

$fx[$n+$k]=0;

$dkx[$n+$k]=1;

for($j=0;$j<$m;$j++) {

$n=$n+$k;

 Nếu có ẩn chưa ràng buộc về dấu, thì ta có thể thay nó bởi hai

biến mới không âm, theo công thức:

Trang 38

31

if($dkx[$i]==-1) {

$fx[$n+$k]=-$fx[$i];

$dkx[$i]=1;

$dkx[$n+$k]=1;

for($j=0;$j<$m;$j++) {

$fx[$i]=-$fx[$i];

$dkx[$i]=1;

for($j=0;$j<$m;$j++) {

$arr[$j][$i]=-$arr[$j][$i];

} }

2.2 Lập trình mô phỏng thuật toán đơn hình gốc

Xét bài toán quy hoạch tuyến tính dạng chuẩn:

( )

{ Trong đó A là ma trận cấp m x n ( m < n ) và đã biết một phương án cực biên của nó ứng với cơ sở * +

2.2.1 Khởi tạo bài toán

Trang 39

- Giao diện nhập dữ liệu:

Nhập số liệu bài toán gồm bài toán, số biến, số ràng buộc

Trang 40

33

Nhập dữ liệu cho bài toán ( hệ số hàm mục tiêu, điều kiện hàm mục tiêu, điều kiện biến, ma trận hệ số ràng buộc, điều kiện các ràng buộc, giá trị vế phải của ràng buộc)

2.2.2 Đƣa bài toán về dạng chuẩn

Sử dụng phương thức: duavechuan($arr,$n,$m,$dkx,$dkx,$fx,$dkfx);

Hiển thị bài toán dạng chuẩn:

2.2.3 Xây dựng bảng đơn hình

- Dữ liệu khởi tạo:

Phương án cực biên xuất phát: $pa_cucbien;

Véc tơ phương án: $pa;

Véc tơ cột: $Ai;

Véc tơ cơ sở: $coso;

Véc tơ hệ số: $c;

Ngày đăng: 22/05/2018, 18:53

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w