Tải bản đầy đủ (.pdf) (89 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.45 MB, 89 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 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
Tác giả luận văn

Nguyễn Văn Phòng

năm 2017


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


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


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



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

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 tính đã 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 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.


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.


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

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


4

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:



5

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



̅̅̅̅̅̅


6

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)


7


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 ma 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 tiêu

để có:


8




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 tính
Đị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,

), trong đó

*

1996)
Giả sử

(

(

trận . Khi đó vectơ
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

) thỏa mãn:

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

Các biến

2. Đặt

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

của ma trận

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


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)


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-1Ajo 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
( )


̅̅̅̅̅̅



̅̅̅̅̅

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


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 x0. Kiểm tra xem x0 có là
phương án tối ưu hay chưa. Nếu x0 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à x1 tốt hơn x0, 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
lập tuyến tính {

} và

cơ sở


(tức là hệ véctơ cột độc

). Ta có:



(vì

với cơ sở

Với mỗi



( )

, ta biểu diễn vé tơ

qua véc tơ


12

{

}

(




)

là một phương án bất kỳ. Ta có:

Gỉa sử






∑(

Vì {



)







( )

} độc lập tuyến tính nên từ (1) và (2) suy ra:




(

)

Hay:
(



)

( )

Khi đó ta có:
( )





( )



Thay (3) vào ta được :
( )

∑(





)



∑( ∑

)


13

Ký hiệu:
(


gọi là ước lượng của véc tơ cột
( )

Nhận xét: Do

nên nếu

)

theo cơ sở J và:
(


)





thì ( )

(

), x  M

do đó ta có dấu hiệu tối ưu sau đây:
Phương án cực biên x0 với cơ sở J0 là phương án tối ưu khi và chỉ khi

(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  J0 sao cho ∆k > 0. Giả sử s là một chỉ số
trong các chỉ số nói trên:
s  J0, ∆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 ứng với cơ
sở J1 chỉ khác J một véctơ J 1  (J \ r)  s, tức là ta đưa véc tơ As vào cơ sở
thay cho véc tơ Ar bị loại ra khỏi cơ sở J.
Vì mọi thành phần ngoài cơ sở của một phương án cực biên đều
bằng 0 nên phương án cực biên mới x1 có cơ sở J 1  (J \ r)  s là:



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


15

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

và cơ sở

tương

và các ước lượng

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


thì

- Nếu 

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

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
cột

thì kiểm tra các hệ số khai triển



của

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,


đề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
- Chọn chỉ số
cột xoay

*

:

+, đánh dấu cột s là

- Tìm chỉ số r đạt min:
*
Bước 4:Tính các

+, đánh dấu hàng r là hàng xoay.
(

)

trong cơ sở mới

J 1  (J0\ 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:


16

+ Thay Ar bằng As, cr bằng cs
+ Chia các phần tử trên hàng xoay ( hàng r) cho phần tử trục zrs 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
mới.

hình

(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

( )


̅̅̅̅̅̅


D:
{

(I)


̅̅̅̅̅

Không giảm tính tổng quát coi bi ≥ 0 (I = 1,2,…, m). Nếu trái lại có
bi < 0, ta nhân hai vế ràng buộc thứ i với -1.
Xét bài toán phụ sau:
(

)


17


{

D’:

(
(

̅̅̅̅̅̅)
(
̅̅̅̅̅)
̅̅̅̅̅̅)

(P)

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à:
(
D’:

)

{
(P)

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 x i, 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


18

án cực biên và cơ sở xuất phát để bắt đầu pha thứ hai, tức là bắt đầu thủ tục
đơn hình đối với bài toán ban đầu (I).

c, u* = 0 nhưng cơ sở tương ứng có chứa một số cột ứng với các biến
giả un+i . Ta cần xét kỹ hơn trường hợp này. Ký hiệu Jx là tập các chỉ số
trong cơ sở ứng với các biến xj, Ju là tập các chỉ số trong cơ sở ứng với các
biến giả un+i, J = Jx+Ju.
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 zn+i,k ≠ 0 thì ta thực hiện phép đổi cơ sở với phần tử trục là zn+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à zn+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ế


×