Tải bản đầy đủ (.doc) (116 trang)

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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.38 MB, 116 trang )

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


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



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 tnh 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 tnh
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ọn
g
cảm
ơn!

Hà Nội,

ngày
tháng
năm 2017
T
á
c
g
i

l
u

n
v
ă
n

N
g
u
y

n
V
ă
n
P
h
ò
n

g


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 tnh 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



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 tnh................................................................ 3
1.1.1. Bài toán quy hoạch tuyến tnh......................................................... 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 tnh ..................
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


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 tnh 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


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


1



2

MỞ ĐẦU
1. Lý do chọn đề tài
Tối ưu hóa là một lĩnh vực toán học nghiên cứu lý thuyết về thuật toán
giải các bài toán cực trị. Nó là một phần kiến thức không thể thiếu được cho
những người làm việc trong các lĩnh vực ứng dụng khoa học và kỹ thuật.
Trong lý thuyết tối ưu, một trong những lớp bài toán đầu tiên được
nghiên cứu trọn vẹn cả về phương diện lý thuyết lẫn giải pháp là bài toán quy
hoạch tuyến tính. Ngay từ khi ra đời, quy hoạch tuyến tnh đã chiếm vị trí hết
sức quan trọng, nó là môn toán ứng dụng rất cần thiết đối với sinh viên
thuộc nhiều ngành khoa học khác nhau. Các thuật toán giải bài toán quy
hoạch tuyến tính không những giúp giải quyết những bài toán quy hoạch
tuyến tính tổng quát cỡ lớn mà nó còn là điểm xuất phát quan trọng trong
nghiên cứu lý thuyết giải các các bài toán tối ưu tổng quát.
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 tê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.


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 tnh.



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

tnh.
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 tễ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.


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 tnh
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 x uấ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à tề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

I

II

III

Lãi

A

2

0

1


3

B

1

1

0

5

Dự trữ

8

4

3

Sản phẩm

Hãy lập bài toán thể hiện kế hoạch sản xuất sao cho có tổng số lãi lớn
nhất, trên cơ sở dự trữ nguyên liệu đã có.
Lậ p b ài
toá n:
Gọi x, y lần lượt là số sản phẩm A và B được sản xuất (
vị 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:
(

)

, đơn


Với điều kiện:

(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

A(10)

B(20)

C(12)


Xúc đất

6

5

4

Chuyển đất

4

3

2

Công việc

Hãy tổ chức lao động sao cho có tổng năng suất lớn nhất.
Lậ p b ài toá n:
Gọi xij là số lao động loại j làm công việc (
) Khi đó, năng suất lao động của công việc đào đất sẽ là:
còn chuyển đất sẽ là :
Ta thấy rằng để có năng suất lớn nhất thì không thể có lao động dư
thừa, tức là phải cân bằng giữa hai công việc.
Vì vậy ta có bài toán sau:


Với điều kiện:


(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à bi và có trong một đơn vị thức
ăn loại j là aij.
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:



̅


{

̅

(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:
( )



(

̅



Với điều kiện:

)

̅


̅

{

(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:

( )



(1.1)



Với điều kiện:

(1.2)
̅




(1.3)
̅

{

Bài toán (1.1), (1.2), (1.3) được gọi là Bài toán Quy hoạch tuyến tính
dạng chính tắc.
Kí hiệu ma trận hàng

(

)

và các ma trận:

Ta có bài toán ở dạng m a tr ận như sau:
( )
Với điều kiện:
và bài toán ở dạng véc tơ như sau:
( )
Với điều kiện:
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:
( ) thì đổi thành *



Nếu có




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

thì ta đưa thêm ẩn phụ

( )+
hoặc ∑

, với hệ số hàm mục têu

để có:




hoặc ∑



Nếu có ẩn

biến mới


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



không âm, theo công thức:


Nếu có ẩn

ta đặt

(

)

1.1.2. Phương án cơ sở chấp nhận được
Xét bài toán QHTT dạng chính tắc (1.1) – (1.3) , giả thiết rằng hạng
của ma trận A là m, tức là ràng buộc cơ bản

gồm m phương trình

độc lập tuyến tnh
Đị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,

{

1996)
sửđó vectơ(
trận Giả
. Khi

),( trong đó


Khi đó:
Các biến
khác 0)

- các biến phi cơ sở (các biến có giá trị bằng 0)

Như vậy, nếu ký hiệu
tương ứng với cơ sở

( )

( ) thì phương án cơ sở x

có thể xác định nhờ thủ tục sau:

1. Chọn một cơ sở

3. Xác định

là một cơ sở của ma

được gọi là các biến cơ sở (các biến có giá trị

Các biến

2. Đặt

* mãn:
) thỏa


của ma trận

.
từ hệ phương trình :


Đị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 tnh.
(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)


Đị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
-1

lượng dương (∆jo >0) mà ứng với nó là các thành phần của vectơ B Ajo là
không dương thì hàm mục tê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 tnh dạng chính tắc
( )



̅


{

̅

Dạng véctơ của bài toán:
( )

Với điều kiện:

{

̅

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.


×