Tải bản đầy đủ (.pdf) (17 trang)

CÁC MÔ HÌNH VÀ PHẦN MỀM TỐI ƯU - CHƯƠNG 2 ppsx

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 (502.09 KB, 17 trang )


23
Chương II
GIẢI BÀI TOÁN QUY HOẠCH TUYẾN TÍNH
BẰNG PHƯƠNG PHÁP ĐƠN HÌNH

1. PHƯƠNG PHÁP ĐƠN HÌNH GIẢI BTQHTT DẠNG CHÍNH TẮC
1.1. Ví dụ . Xét BTQHTT: Max z = 8x
1
+ 6x
2
,
với các ràng buộc
4x
1
+ 2x
2
≤ 60
2x
1
+ 4x
2
≤ 48
x
1
, x
2
≥ 0
Đưa BTQHTT
dạng chuẩn tắc trên về dạng chính tắc bằng các biến bù không
âm x


3
và x
4
như sau:
Max z = 8x
1
+ 6x
2
+ 0x
3
+ 0x
4

với các ràng buộc
4x
1
+ 2x
2
+ x
3
= 60
2x
1
+ 4x
2
+ x
4
= 48
x
1

, x
2
, x
3
, x
4
≥ 0.
Chú ý. BTQHTT có dạng chính tắc là BTQHTT với các biến không âm, các ràng
buộc có dấu “=”, hệ số vế phải của các ràng buộc không âm. Ngoài ra, mỗi phương trình
bắt buộc phải có một biến đứng độc lập với hệ số +1.

Cách lập và biến đổi các bảng đơn hình
Để giải BTQHTT dạng chính tắc trên đây, cần lập một số bảng đơn hình như
trong bảng II.1. Trước hết, cần điền số liệu của bài toán đã cho vào bảng đơn hình bước 1:
– Cột 1 là cột hệ số hàm mục tiêu ứng với các biến cơ sở đã chọn. Phương án
xuất phát có thể chọn là x
1
= x
2
= 0 (đây chính là điểm gốc toạ độ O(0, 0) trên hình II.1),
do đó x
3
= 60, x
4
= 48. Như vậy tại bước này chúng ta chưa bước vào sản xuất, nên
trong phương án chưa có đơn vị sản phẩm loại I hay loại II nào được sản xuất ra (chỉ
“sản xuất” ra các lượng nguyên liệu dư thừa, ta cũng nói là các “sản phẩm” loại III và
IV), và giá trị hàm mục tiêu z tạm thời bằng 0. Các biến bù có giá trị lớn hơn 0 có nghĩa
là các nguyên liệu loại tương ứng chưa được sử dụng h
ết. Ta gọi các biến x

3
và x
4
là các
biến cơ sở vì chúng có giá trị lớn hơn 0 còn x
1
và x
2
là các biến ngoài cơ sở vì chúng có
giá trị bằng 0. Với bài toán có hai ràng buộc, tại mỗi bước chỉ có hai biến cơ sở.
– Cột 2 là cột các biến cơ sở. Trong cột 3 (cột phương án) cần ghi các giá trị của
các biến cơ sở đã chọn.
– Các cột tiếp theo là các cột hệ số trong các điều kiện ràng buộc tương ứng với
các biến x
1
, x
2
, x
3
và x
4
của bài toán đã cho.

24
Bảng II.1. Các bảng đơn hình giải BTQHTT
c
1
= 8 c
2
= 6 c

3
= 0 c
4
= 0
Hệ số hàm
mục tiêu c
j

Biến cơ sở Phương án
x
1
x
2
x
3
x
4

Bảng đơn hình bước 1
0
0
x
3

x
4

60
48
4

2
2
4
1
0
0
1
Hàng z z
0
= 0 z
1
= 0 z
2
= 0 z
3
= 0 z
4
= 0
Hàng Δ
j
= c
j
– z
j


Δ
1
= 8 Δ
2

= 6 Δ
3
= 0 Δ
4
= 0
Bảng đơn hình bước 2
8
0
x
1
x
4

15
18
1
0
1/2
3
1/4
–1/2
0
1
Hàng z z
0
= 120 z
1
= 8 z
2
= 4 z

3
= 2 z
4
= 0
Hàng Δ
j
= c
j
– z
j


Δ
1
= 0 Δ
2
= 2 Δ
3
= –2 Δ
4
= 0
Bảng đơn hình bước 3
8
6
x
1
x
2

12

6
1
0
0
1
1/3
–1/6
–1/6
1/3
Hàng z z
0
= 132 8 6 5/3 2/3
Hàng Δ
j
= c
j
– z
j

0 0 –5/3 –2/3

Phân tích bảng đơn hình bước 1
– Hệ số ứng với biến x
1
trên hàng thứ nhất là a
11
= 4 có nghĩa là tỷ lệ thay thế
riêng giữa một đơn vị sản phẩm loại I và một đơn vị sản phẩm loại III là 4 (giải thích:
xét phương trình (hay ràng buộc) thứ nhất 4x
1

+ 2x
2
+ x
3
= 60, x
1
tăng một đơn vị thì x
3

phải giảm bốn đơn vị nếu giữ nguyên x
2
). Tương tự ta có thể giải thích được ý nghĩa của
các hệ số a
ij
khác cho trên hàng 1 và hàng 2 trong bảng đơn hình bước 1.
– Chúng ta xét hàng z của bảng đơn hình. Để tính z
1
, cần áp dụng công thức
z
1
= (cột hệ số của hàm mục tiêu)× (cột hệ số của biến x
1
) = 0×4 + 0×2 = (giá một đơn
vị sản phẩm loại III)×(tỷ lệ thay thế riêng loại I / loại III) + (giá một đơn vị sản phẩm
loại IV)×(tỷ lệ thay thế riêng loại I / loại IV) = tổng chi phí phải bỏ ra khi đưa thêm một
đơn vị sản phẩm loại I vào phương án sản xuất mới = 0. Các giá trị z
j
, với j = 1, 2, 3, 4,
được tính tương tự và chính là các chi phí khi đưa một thêm một đơn vị sản phẩm loại x
j


vào phương án sản xuất mới. Còn z
0
là giá trị của hàm mục tiêu đạt được tại phương án
đang xét: z
0
= (cột hệ số của hàm mục tiêu)× (cột phương án) = 0×60 + 0 × 48 = 0.
– Trên hàng Δ
j
cần ghi các giá trị Δ
j
, j = 1, 2, 3, 4, tính theo công thức Δ
j
= c
j

z
j
= lợi nhuận / đơn vị sản phẩm – chi phí / đơn vị sản phẩm. Vậy Δ
j
là "lãi biên" / một
đơn vị sản phẩm khi đưa một thêm một đơn vị sản phẩm loại x
j
vào phương án sản xuất
mới. Nếu Δ
j
> 0 thì hàm mục tiêu còn tăng được khi ta đưa thêm các sản phẩm loại j vào
phương án sản xuất mới. Có thể chứng minh được Δ
j
chính là đạo hàm riêng

j
z/ x∂∂
của hàm mục tiêu z theo biến x
j
. Như vậy, x
1
tăng lên 1 thì z tăng lên 8 còn x
2
tăng lên
1 thì z tăng lên 6 .
Do Δ
1
và Δ
2
đều lớn hơn 0 nên vẫn còn khả năng cải thiện hàm mục tiêu khi
chuyển sang (hay “xoay sang”) một phương án cực biên kề tốt hơn.

25
Thủ tục xoay (pivotal procedure)
Bước 1:
Chọn cột xoay là cột bất kỳ có Δ
j
> 0. Lúc đó biến x
j
tương ứng với cột
xoay được chọn làm biến cơ sở mới do x
j
tăng kéo theo hàm mục tiêu tăng. Ở đây ta
chọn đưa x
1

vào làm biến cơ sở mới.
Bước 2: Chọn hàng xoay để xác định đưa biến nào ra khỏi tập các biến cơ sở (vì
tại mỗi bước số biến cơ sở là không thay đổi). Để chọn hàng xoay, ta thực hiện quy tắc
“tỷ số dương bé nhất” bằng cách lấy cột phương án (60, 48)
T
chia tương ứng cho cột
xoay (4, 2)
T
để chọn tỷ số bé nhất. Một điều cần chú ý là ta chỉ xét các tỷ số có mẫu số
dương.
Vì Min {60/4, 48/2} = 60/4 đạt được tại hàng đầu, nên hàng xoay là hàng đầu
(hàng tương ứng với biến x
3
). Do đó cần đưa x
3
ra khỏi tập các biến cơ sở.
Bước 3: Chọn phần tử xoay nằm trên giao của hàng xoay và cột xoay.
Bước 4: Xoay sang bảng đơn hình mới, xác định các biến cơ sở mới để điền vào
cột biến cơ sở, đồng thời thay các giá trị trong cột hệ số hàm mục tiêu. Sau đó, tính lại
các phần tử của hàng xoay bằng cách lấy hàng xoay cũ chia cho phần tử xoay để có
hàng mới tương ứng.
Bước 5: Các phần tử còn lại của bảng đơn hình mới tính theo quy tắc “hình chữ
nhật”: (1)
mới
= (1)

– (2)

× (4)


/(3)

, trong đó (3) là đỉnh tương ứng với phần tử xoay .







Giải thích.
Các bước xoay trên đây chỉ là phép biến đổi tương đương hệ phương trình
4x
1
+ 2x
2
+ x
3
= 60 (2.1)
2x
1
+ 4x
2
+ x
4
= 48 (2.2)
để có hệ
x
1
+ (1/2)x

2
+ (1/4)x
3
= 15 (2.1’)
0x
1
+ 3x
2
– (1/2)x
3
+ x
4
= 18 (2.2’)
bằng cách lấy phương trình (2,1) chia cho 4 (phần tử xoay) để có (2,1’), rồi lấy
(2,2) trừ bớt 2× (2.1)/4 để có (2,2’). Đây chính là nội dung của bước 4 và bước 5. Còn
việc thực hiện bước 3 sẽ đảm bảo rằng giá trị của các biến cơ sở mới không âm (x
1
= 15,
x
4
= 18).
Áp dụng thủ tục xoay cho các phần tử nằm trên hàng 1 và 2 của bảng đơn hình
bước 1, sau đó tính các giá trị trên hàng z
j
và Δ
j
tương tự như khi lập bảng đơn hình
bước 1, chúng ta sẽ nhận được bảng đơn hình bước 2.
(1)
(2)

(3)
(4)
Chẳng hạn: nếu (1)

= 4,(2)

= 2,
(3)

= phần tử xoay = 4, (4)

= 2
thì (1)
mới
= 4 – 2×2/4 =3

Q
u
y

t
ắc hình chữ nh
ật

26
Phân tích bảng đơn hình bước 2
Bảng bước 2 có thể được phân tích tương tự như bảng bước 1. Lúc này giá trị
của hàm mục tiêu là z
0
= 120 đã được cải thiện hơn so với bước 1. Ta thấy Δ

2
= 2 > 0
nên còn có thể cải thiện hàm mục tiêu bằng cách đưa biến x
2
vào làm biến cơ sở mới.
Thực hiện các bước xoay sang phương án cực biên kề tốt hơn, chúng ta sẽ có bảng đơn
hình bước 3.
Phân tích bảng đơn hình bước 3
Tại bảng đơn hình bước 3 ta thấy điều kiện tối ưu đã được thoả mãn (Δ
j
≤ 0, ∀j
=
1, 4 ) nên không còn khả năng cải thiện phương án. Phương án tối ưu đã đạt được tại x
1

= 12, x
2
= 6, x
3
= 0, x
4
= 0, tức là tại điểm cực biên B(12, 6) với giá trị z
max
= 132.
Một số chú ý
– Điều kiện tối ưu cho các BTQHTT dạng Max là Δ
j
≤ 0, ∀j .
– Đối với các BTQHTT cần cực tiểu hoá hàm mục tiêu thì điều kiện tối ưu (hay
tiêu chuẩn dừng) là Δ

j
≥ 0, ∀j (nếu ∃ j* sao cho
j*
Δ
< 0 thì cần tiếp tục cải thiện hàm
mục tiêu bằng cách chọn cột j* làm cột xoay).
– Trong thực tiễn giải các BTQHTT dạng tổng quát có thể xảy ra trường hợp
không tìm được phương án xuất phát (tức là không có phương án khả thi). Lúc này có
thể kết luận mô hình đã thiết lập có các điều kiện ràng buộc quá chặt chẽ, cần xem xét
nới lỏng các điều kiện này.
– Trong trường hợp ta tìm được cột xoay mà không tìm
được hàng xoay thì kết
luận hàm mục tiêu không bị chặn trên (đối với các BTQHTT dạng Max) hoặc không bị
chặn dưới (đối với các BTQHTT dạng Min).
Trong các trường hợp trên cũng phải dừng lại và kết luận mô hình quy hoạch
tuyến tính đã thiết lập không phù hợp với thực tế.
Khung thuật toán đơn hình
Sau đây là khung thuật toán của phương pháp đơn hình được phát biểu cho
BTQHTT cực đại hóa dạng chính tắc.
Bước khởi tạo
– Tìm một phương án cực biên ban đầu (nếu không tìm được thì dừng và in ra
thông báo “BTQHTT không có phương án”).
– Tính Δ
j
= c
j
– z
j
, ∀j = 1,n , trong đó n là số biến của bài toán đang xét.
Các bước lặp

Bước 1: Kiểm tra điều kiện tối ưu. Nếu điều kiện tối ưu Δ
j
= c
j
– z
j
≤ 0, ∀j =
1, n đã được thoả mãn thì in / lưu trữ kết quả của bài toán và chuyển sang bước kết thúc.
Bước 2: Nếu tồn tại một chỉ số j sao cho Δ
j
> 0 thì tiến hành thủ tục xoay gồm
năm bước đã biết, tính lại các Δ
j
, ∀j = 1, n và quay lại bước 1 (Chú ý: Trong trường hợp

27
ta tìm được cột xoay mà không tìm được hàng xoay thì kết luận hàm mục tiêu không bị
chặn, in / lưu trữ kết quả của bài toán và chuyển sang bước kết thúc).
Bước kết thúc. Dừng.
1.2. Thuật toán đơn hình cho BTQHTT dạng chính tắc
Xét BTQHTT sau (xem thêm giáo trình của Nguyễn Hải Thanh, Tối ưu hoá,
Nxb Bách Khoa, 2007):
z = f(x) = c
1
x
1
+ c
2
x
2

+ + c
n
x
n
→ Max (Min),
với các điều kiện ràng buộc
a
11
x
1
+ a
12
x
2
+ + a
1n
x
n
≤ b
1

a
21
x
1
+ a
22
x
2
+ + a

2n
x
n
≤ b
2

a
m1
x
1
+ a
m2
x
2
+ + a
mn
x
n
≤ b
m
x
1
, x
2
, , x
n
≥ 0 (điều kiện không âm).
Đưa BTQHTT trên về dạng chính tắc:
z = f(x) = c
1

x
1
+ c
2
x
2
+ + c
n
x
n
+ 0x
n+1
+ …+ 0x
n+m
→ Max (Min),
với các điều kiện ràng buộc
a
11
x
1
+ a
12
x
2
+ + a
1n
x
n
+ x
n+1

= b
1

a
21
x
1
+ a
22
x
2
+ + a
2n
x
n
+ x
n+2
= b
2

a
m1
x
1
+ a
m2
x
2
+ + a
mn

x
n
+ x
n+m
= b
m
x
1
, x
2
, , x
n+m
≥ 0 (điều kiện không âm).
Bước khởi tạo
– Nhập các hệ số hàm mục tiêu c, ma trận ràng buộc A và các hệ số vế phải b.





Đ
Đ


t
t


d
d

1
1


=
=


c
c
n
n
+
+
1
1
=
=


0
0
,
,


.
.
.
.

.
.
,
,


d
d
m
m


=
=


c
c
n
n
+
+
m
m
=
=


0
0



,
,


t
t


c
c


l
l
à
à


c
c
B
B


=
=



(
(
d
d
1
1
,
,


.
.
.
.
.
.
,
,


d
d
m
m
)
)
T
T
.
.








Đ
Đ


t
t


c
c
h
h




s
s




c

c
á
á
c
c


b
b
i
i
ế
ế
n
n


c
c
ơ
ơ


s
s


:
:



r
r
(
(
1
1
)
)


=
=


n
n


+
+


1
1
,
,


.

.
.
.
.
.
,
,


r
r
(
(
m
m
)
)


=
=


n
n


+
+



m
m
.
.








G
G
á
á
n
n


x
x
r
r
(
(
i
i
)

)


=
=


b
b
i
i


,
,


i
i


=
=


1, m
.
.



Đ
Đ


t
t


f
f
l
l
a
a
g
g


=
=


2
2
.
.


C
C

á
á
c
c


b
b
ư
ư


c
c


l
l


p
p


B
B
ư
ư



c
c


1
1
:
:






T
T
í
í
n
n
h
h


c
c
T
T
x
x



=
=


z
z


=
=


d
d
1
1
x
x
r
r
(
(
1
1
)
)



+
+


.
.
.
.
.
.


+
+


d
d
m
m
x
x
r
r
(
(
m
m
)
)

.
.








T
T
í
í
n
n
h
h


z
z
j
j


=
=



m
p
jp
p1
ad
=

,
,




j
j


=
=


1, n m
+
.
.







T
T
ì
ì
m
m


Δ
Δ


=
=


[
[
Δ
Δ
N
N


,
,


Δ

Δ
B
B
]
]


=
=


[
[
T
N
c


T
B
c
B
B


1
1
N
N
,

,


T
B
c




T
B
c
B
B


1
1
B
B
]
]
,
,


t
t
r

r
o
o
n
n
g
g


đ
đ
ó
ó


Δ
Δ
B
B


=
=


0
0
.
.



N
N
h
h
ư
ư


v
v


y
y


Δ
Δ
j
j


=
=


c
c
j

j






z
z
j
j
,
,


v
v


i
i


z
z
j
j


=

=
m
pj p
p1
ad
=

,
,




j
j






N
N


=
=


{

{
1
1
,
,


2
2
,
,




,
,


n
n


+
+


m
m
}

}


\
\


{
{
r
r
(
(
1
1
)
)
,
,




,
,


r
r
(

(
m
m
)
)
}
}


v
v
à
à


Δ
Δ
j
j


=
=


c
c
j
j







z
z
j
j


=
=


0
0
,
,




j
j







B
B


=
=


{
{
r
r
(
(
1
1
)
)
,
,




,
,


r

r
(
(
m
m
)
)
}
}
,
,


(
(
t
t


c
c


l
l
à
à


z

z
N
N


=
=
T
B
c
B
B


1
1
N
N


v
v
à
à


z
z
B
B



=
=


T
B
c
B
B


1
1
B
B
)
)
.
.



28


B
B
ư

ư


c
c


2
2
:
:




N
N
ế
ế
u
u


t
t


n
n



t
t


i
i


c
c
h
h




s
s




j
j







N
N


s
s
a
a
o
o


c
c
h
h
o
o


Δ
Δ
j
j


>
>



0
0


t
t
h
h
ì
ì


t
t
h
h


c
c


h
h
i
i


n

n


t
t
h
h




t
t


c
c


x
x
o
o
a
a
y
y
.
.







X
X
á
á
c
c


đ
đ


n
n
h
h


c
c


t
t



x
x
o
o
a
a
y
y
:
:


c
c
h
h


n
n


c
c


t
t



x
x
o
o
a
a
y
y


s
s




n
n
g
g


v
v


i
i



m
m


t
t


c
c
h
h




s
s




j
j


c
c
ó

ó


t
t
í
í
n
n
h
h


c
c
h
h


t
t


Δ
Δ
j
j


>

>


0
0
.
.




T
T
h
h
ô
ô
n
n
g
g


t
t
h
h
ư
ư



n
n
g
g


c
c
h
h


n
n


j
j




n
n
g
g


v

v


i
i


Δ
Δ
j
j


>
>


0
0


l
l


n
n


n

n
h
h


t
t
,
,


h
h
o
o


c
c


c
c
h
h


n
n



n
n
g
g


u
u


n
n
h
h
i
i
ê
ê
n
n
.
.






X

X
á
á
c
c


đ
đ


n
n
h
h


h
h
à
à
n
n
g
g


x
x
o

o
a
a
y
y


q
q


t
t
h
h
e
e
o
o


q
q
u
u
y
y


t

t


c
c


t
t




s
s




d
d
ư
ư
ơ
ơ
n
n
g
g



b
b
é
é


n
n
h
h


t
t
:
:


r(q) r(i)
is
qs is
xx
Min , a 0
aa
⎧⎫
=∀>
⎨⎬
⎩⎭
.

.




T
T
r
r
o
o
n
n
g
g


t
t
r
r
ư
ư


n
n
g
g



h
h


p
p


k
k
h
h
ô
ô
n
n
g
g


t
t


n
n


t

t


i
i


a
a
i
i
s
s


>
>


0
0
,
,


đ
đ


t

t


f
f
l
l
a
a
g
g


=
=


0
0


v
v
à
à


c
c
h

h
u
u
y
y


n
n


s
s
a
a
n
n
g
g


b
b
ư
ư


c
c



k
k
ế
ế
t
t


t
t
h
h
ú
ú
c
c
.
.






X
X
á
á
c

c


đ
đ


n
n
h
h


p
p
h
h


n
n


t
t




x

x
o
o
a
a
y
y


a
a
q
q
s
s
.
.






T
T
í
í
n
n
h

h


l
l


i
i


(
(
đ
đ




c
c
h
h
u
u
y
y


n

n


s
s
a
a
n
n
g
g


b
b


n
n
g
g


đ
đ
ơ
ơ
n
n



h
h
ì
ì
n
n
h
h


m
m


i
i
)
)
:
:


b
b
q
q


:

:
=
=


b
b
q
q
/
/
a
a
q
q
s
s
,
,


a
a
q
q
j
j


:

:
=
=


a
a
q
q
j
j
/
/
a
a
q
q
s
s
,
,




j
j


.

.






i
i






q
q


t
t
í
í
n
n
h
h


l

l


i
i


b
b
i
i


:
:
=
=


b
b
i
i









b
b
q
q
*
*
a
a
i
i
s
s


v
v
à
à


a
a
i
i
j
j


:

:
=
=


a
a
i
i
j
j






a
a
q
q
j
j
*
*
a
a
i
i
s

s
,
,




j
j
.
.








Đ
Đ


t
t


l
l



i
i


c
c
h
h




s
s




c
c
á
á
c
c


b
b
i

i
ế
ế
n
n


c
c
ơ
ơ


s
s


:
:


r
r
(
(
q
q
)
)



:
:
=
=


s
s
,
,


d
d
q
q


:
:
=
=


c
c
s
s
,

,


v
v
à
à


x
x
r
r
(
(
i
i
)
)


=
=


b
b
i
i



,
,


i
i


=
=


1, m
.
.


Q
Q
u
u
a
a
y
y


v
v





b
b
ư
ư


c
c


1
1
.
.


B
B
ư
ư


c
c



3
3
:
:


N
N
ế
ế
u
u


Δ
Δ
j
j








0
0
,
,





j
j






N
N


t
t
h
h
ì
ì


đ
đ


t
t



f
f
l
l
a
a
g
g


=
=


1
1


v
v
à
à


c
c
h
h

u
u
y
y


n
n


s
s
a
a
n
n
g
g


b
b
ư
ư


c
c



k
k
ế
ế
t
t


t
t
h
h
ú
ú
c
c
.
.


B
B
ư
ư


c
c



k
k
ế
ế
t
t


t
t
h
h
ú
ú
c
c
:
:


G
G
h
h
i
i


l
l



i
i


d
d




l
l
i
i


u
u


đ
đ


u
u



v
v
à
à
o
o


c
c


a
a


B
B
T
T
Q
Q
H
H
T
T
T
T



v
v
à
à


k
k
ế
ế
t
t


q
q
u
u




c
c
u
u


i
i



c
c
ù
ù
n
n
g
g
.
.


N
N
ế
ế
u
u


f
f
l
l
a
a
g
g



=
=


0
0


t
t
h
h
ì
ì


k
k
ế
ế
t
t


l
l
u
u



n
n


B
B
T
T
Q
Q
H
H
T
T
T
T


c
c
ó
ó


h
h
à
à

m
m


m
m


c
c


t
t
i
i
ê
ê
u
u


k
k
h
h
ô
ô
n
n

g
g


b
b




c
c
h
h


n
n


t
t
r
r
ê
ê
n
n
.
.



C
C
ò
ò
n
n


n
n
ế
ế
u
u


f
f
l
l
a
a
g
g


=
=



1
1


t
t
h
h
ì
ì


k
k
ế
ế
t
t


l
l
u
u


n
n



B
B
T
T
Q
Q
H
H
T
T
T
T


c
c
ó
ó


p
p
h
h
ư
ư
ơ
ơ

n
n
g
g


á
á
n
n


t
t


i
i


ư
ư
u
u


đ
đ
ã
ã



t
t
ì
ì
m
m


đ
đ
ư
ư


c
c
.
.


D
D


n
n
g
g

.
.




2. PHƯƠNG PHÁP ĐƠN HÌNH HAI PHA GIẢI BTQHTT TỔNG QUÁT
Từ trước tới nay, chúng ta luôn giả sử rằng BTQHTT được xem xét luôn có
phương án và có thể biết được một phương án (cực biên) ban đầu của nó để khởi tạo
quá trình giải. Trong mục này chúng ta sẽ đi xét các trường hợp khi chưa biết BTQHTT
có phương án hay không, cũng như chưa biết được phương án cực biên ban đầu. Đối
với những trường hợp này có thể sử dụng phương pháp đơn hình hai pha. Chúng ta sẽ
trình bày phươ
ng pháp đơn hình hai pha thông qua ví dụ sau.
2.1. Ví dụ . Max z = 8x
1
+ 6x
2
, với các ràng buộc
12
12
12
4x 2x 60
2x 4x 48
x,x 0.
+≤


+≥





hay:
Max z = 8x
1
+ 6x
2
+ 0x
3
+ 0x
4
, với các ràng buộc
123
124
1234
4x 2x x 60
2x 4x x 48
x,x,x,x 0.
++=


+−=





Trước hết cần trả lời câu hỏi BTQHTT dạng chuẩn tắc trên đây có phương án
hay không, nếu có thì cần tìm một phương án cực biên xuất phát của nó.

Pha 1. Tìm một phương án cực biên xuất phát bằng cách xét BTQHTT sau đây:
Min
ω = x
5
, với các ràng buộc



29
123
1245
12345
4x 2x x 60
2x 4x x x 48
x,x,x,x,x 0.
++=


+−+=




(2.3)

Bảng II.2. Các bảng đơn hình giải bài toán pha 1
0 0 0 0 1
Hệ số hàm mục
tiêu
Biến cơ

sở
Phương
án
x
1
x
2
x
3
x
4
x
5

0
1
x
3

x
5

60
48
4
2
2
4
1
0

0
–1
0
+1
Hàng ω ω
0
= 48 ω
1
= 2 ω
2
= 4 ω
3
= 0 ω
4
= –
1
ω
5
=
1
Hàng Δ
j


Δ
1
= –2
Δ
2
= –

4
Δ
3
= 0 Δ
4
= 1 Δ
5
= 0
0
0
x
3

x
2

36
12
3
1/2
0
1
1
0
1/2
–1/4
–1/2
1/4
Hàng ω ω
0

= 0
0 0 0 0 0
Hàng Δ
j

0 0 0 0 1

Mục đích của pha 1 là để giải BTQHTT với các ràng buộc (2.3) hay còn gọi
là bài toán
ω. Nếu tìm được phương án tối ưu của bài toán ω với các biến giả đều
nhận giá trị bằng 0 thì điều này chứng tỏ BTQHTT ban đầu có phương án. Trong
trường hợp đó dễ dàng tìm được một phương án cực biên của nó (xem bảng II.2).
Tại bảng đơn hình cuối cùng, ta thấy
Δ
j
≤ 0, ∀j, nên phương án tối ưu đã đạt
được với x
2
= 12, x
3
= 36, x
1
= x
4
= x
5
= 0 và ω
min
= 0.
Do đó chúng ta đưa ra kết luận là BTQHTT ban đầu có phương án x

1
= 0, x
2
=
12, x
3
= 36, x
4
= 0. Một cách tổng quát, có thể khẳng định được ngay rằng, nếu bài toán
ω
có phương án tối ưu với giá trị hàm mục tiêu là 0 thì BTQHTT ban đầu có phương
án, trong trường hợp trái lại thì nó không có phương án.
Pha 2.
Giải BTQHTT ban đầu căn cứ phương án cực biên vừa tìm được ở pha 1
(xem bảng II.3):
Max z = 8x
1
+ 6x
2
+0x
3
+ 0x
4
,
với các ràng buộc
123
124
1234
4x2xx60
2x 4x x 48

x,x,x,x 0.
++=


+−=





Nhận xét. Kết quả giải ví dụ trên bằng phương pháp đơn hình hai pha cũng
giống với kết quả đạt được khi giải bằng phương pháp đơn hình mở rộng. Tuy nhiên,
khi sử dụng phương pháp đơn hình hai pha, chúng ta tránh được sự phiền phức trong
việc khai báo giá trị dương đủ lớn của tham số M như trong phương pháp đơn hình mở
rộng.

30
Bảng II.3. Các bảng đơn hình giải bài toán pha 2
8 6 0 0
Hệ số hàm
mục tiêu
Biến cơ sở Phương án
x
1
x
2
x
3
x
4


0
6
x
3

x
2

36
12
3
1/2
0
1
1
0
1/2
–1/4
Hàng z z
0
= 72 z
1
= 3 z
2


= 6 z
3
= 0 z

4
=–3/2
Hàng Δ
j


Δ
1
= 5 Δ
2
= 0 Δ
3
= 0 Δ
4
= 3/2
0
6
x
4

x
2

72
30
6
2
0
1
1

1/2
1
0
Hàng z 180 12 6 3 0
Hàng Δ
j

–4 0 –3 0
Tại bảng đơn hình cuối cùng, ta thấy Δ
j
≤ 0, ∀j, nên phương án tối ưu đã đạt
được với x
2
= 30, x
4
= 72, x
1
= x
3
= 0 và z
max
= 180.
2.2. Thuật toán đơn hình hai pha giải BTQHTT dạng tổng quát
Xét bài toán gốc: z =
n
j1
=

c
j

x
j
→ Min/ Max

n
ij j i
j1
n
ij j i
j1
n
ij j i
j1
j
i1,m
1
im1,mm
112
imm 1,mm m
12 123
j1,nm m m
123
ax b ( )
ax b ( )
ax b ( )
x0 ( )
=
=
=
=

=+ +
=++ ++
=+++












=






Bước 1
: - Nhập dạng bài toán Min, Max.
- Nhập tổng số ràng buộc m bao gồm các ràng buộc mang dấu:

≤ (m
1
ràng buộc) , ≥ (m
2

ràng buộc) và = (m
3
ràng buộc).
- Nhập số biến: n biến.
- Nhập véc tơ hệ số hàm mục tiêu: C = [ c
1
, c
2
, . . ., c
n
].
- Nhập véc tơ hệ số vế phải: b = [ b
1,
b
2,
. . ., b
m
].
- Nhập ma trận hệ số ràng buộc: A = [a
i j
]
m x n
.
Bước 2:
Đưa bài toán về dạng chính tắc: dạng Max đưa về dạng Min.
Đưa thêm biến bù thiếu: m
1
biến x
n+i
,

1
i1,m=
,
Biến bù thừa: m
2
biến x
n+ m1+p
,
2
p
1,m=
,

Biến giả: m
2
+ m
3
biến x
n+m1+m2+q
,
23
q1,m m
=
+
.
Nếu m
2
+ m
3
= 0, chuyển sang bước 4.

Nếu m
2
+ m
3
≠ 0, giải bài toán theo hai pha bằng cách chuyển
sang bước 3.

31
Sơ đồ thuật giải (cho BTQHTT gốc là bài toán Max)































Bước 3: Pha thứ nhất.
Xây dựng và giải bài toán phụ:

ω =
m2 m3
q
+

x
m1 + m2+q+n
→ Min
Giải pha I
Tính
Δ
k

Giải pha II
Khởi tạo, đổi dấu, thêm
biến bù, biến giả

Bắt đầu


k
,

Δ
k

0 ?
Y
N
Kết thúc
Xuất kết quả
Tính Max Δ
k
, Δ
k
>
0
Tìm cột
Hàm mục tiêu không
bị chặn, BT vô nghiệm
Tìm phần tử
Chuyển đổi
cơ sở
N
Y
Tìm hàng xoay
Tính
f(
)

BT có nghiệm
Tính
Δ
k

Y
N
Có biến giả
?
∃k,Δ
k
<0?
Y
N
Tính Max
k
Δ , Δ
k

Tìm cột xoay
Tìm hàng xoay
và phần tử
Chuyển đổi
cơ sở
BT vô nghiệm
∃biến giả

0?
Y
N

Xóa biến giả
Pha I
Pha II
Sơ đồ thuật giải đơn hình hai pha

32

123
m2*m m
ij j i 1 2 3
j1
j123
ax b (i 1,m m m)
x0 j1,(nm2*mm).
++
=


==++



≥∀= + + +




Kết thúc pha 1: Xảy ra ba trường hợp sau:

Phương án tối ưu không có biến giả, lấy đó làm phương án xuất phát,

thay lại hệ số hàm mục tiêu, loại trừ các cột biến giả và sang bước 4.

Phương án tối ưu có biến giả khác 0 thì bài toán tối ưu không có phương
án. Dừng.

Phương án tối ưu có chứa biến giả nhưng biến giả bằng 0, xoá các dòng
chứa các biến giả này, thay lại hệ số hàm mục tiêu, loại trừ các cột biến giả và
sang bước 4.
Bước 4:
Pha thứ 2.
Giải bài toán gốc với phương án xuất phát tìm được bằng phương pháp đơn hình.
Bước 5:
In kết quả .

3. GIẢI CÁC BÀI TOÁN TỐI ƯU TRÊN MICROSOFT EXCEL
Microsoft Excel 2000, 2003 có các công cụ toán học rất mạnh để giải các bài
toán tối ưu và thống kê toán học. Excel có thể giải được các loại bài toán tối ưu:
BTQHTT tổng quát, các biến có thể có ràng buộc hai phía, ràng buộc cũng có thể viết ở
dạng hai phía; bài toán vận tải có hai chỉ số; bài toán quy hoạch nguyên (các biến có
điều kiện nguyên hay boolean); bài toán quy hoạch phi tuyến. Số biến của BTQHTT
hay nguyên có thể lên tới 200 biến. Excel còn có thể giải các bài toán hồi quy trong
thống kê toán họ
c: hồi quy đơn, hồi quy bội, hồi quy mũ.
Dùng Solver ta có thể tìm cực đại hay cực tiểu của một hàm số đặt trong một ô
gọi là ô đích. Solver chỉnh sửa một nhóm các ô (gọi là các ô có thể chỉnh sửa) có liên
quan trực tiếp hay gián tiếp đến công thức nằm trong ô đích để tạo ra kết quả. Ta có thể
thêm vào các ràng buộc để hạn chế các giá trị mà Solver có thể dùng. Đối với BTQHTT
Solver dùng phương pháp đơn hình, đố
i với quy hoạch phi tuyến Solver dùng phương
pháp tụt gradient để tìm một cực trị địa phương.

3.1. Giải BTQHTT
Xét bài toán quy hoạch c
1
x
1
+ c
2
x
2
+ …+ c
n
x
n
= f(x) → max / min
a
11
x
1
+ a
12
x
2
+ … + a
1n
x
n
Q b
1

a

21
x
1
+ a
22
x
2
+ " + a
2n
x
n
Q b
2


a
m1
x
1
+ a
m2
x
2
+ … + a
mn
x
n
Q b
m


x
j
≥ 0, j = 1, . . . , n nguyên hoặc nhị phân 0–1.

33
Trong đó Q là một trong các phép toán quan hệ
≥ , ≤ hoặc = , thứ tự các phép
toán quan hệ trong các ràng buộc là tuỳ ý. Như vậy bài toán trên có thể là BTQHTT
thông thường, quy hoạch tuyến tính nguyên hay quy hoạch 0–1. Cách bố trí dữ liệu cho
trên bảng tính:

c[1] c[2] . . . . . . c[n]
Σ c[j] x[j]

a[1,1] a[1,2] . . . . . . a[1,n]
Σ a[1,j] x[j]
b[1]
a[2,1] a[2,2] . . . . . . a[2,n]
Σ a[2,j] x[j]
b[2]
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
a[m,1] a[m,2] . . . . . . a[m,n]
Σ a[m,j] x[j]
b[m]
x[1] x[2] . . . . . . x[n]

Hàng cuối cùng là các giá trị ban đầu của các biến để các công thức của Excel
hoạt động, có thể lấy giá trị của tất cả các biến bằng 1.
Xét bài toán:
x

1
+4x
2
+ x
3
→ Min ,
với các ràng buộc:
2x
1
+3x
2
+4x
3


20
5x
1
– x
2
+2x
3

12
x
1
+2x
2
– x
3

≤ 2
x
1
+4x
2
–2x
3
≤1
x
1
, x
2
, x
3

0
Các bước thực hiện để giải bài toán:
Bước 1. Nhập dữ liệu bài toán vào bảng tính dưới dạng sau:


Phương án ban đầu X = (1, 1, 1), nó có thể không chấp nhận được.
Bước 2. Tính giá trị hàm mục tiêu tại ô E2 bằng công thức =
SUMPRODOCT($B$7 : $D$7, B2 : D2) Hàm Sumproduct cho tích vô hướng của hai
dãy ô. Copy công thức từ ô E2 sang dãy các ô E3 : E6 nhằm tính giá trị vế trái của bốn
ràng buộc bài toán (1).
Bước 3. Dùng lệnh Tools / Solver, xuất hiện hộp thoại Solver Parameters.

34

Mục Set Target Cell: chọn ô đích (chứa giá trị hàm mục tiêu), có thể nháy vào

biểu tượng của Excel bên phải hộp văn bản để xác định ô, trong ví dụ chọn ô E2. Mục
Equal To: chọn Max nếu cực đại hàm mục tiêu, chọn Min nếu cực tiểu hàm mục tiêu,
chọn Value of và nhập giá trị nếu muốn ô đích bằng một giá trị nhất định, trong ví dụ
chọn Min. Mục By Changing cells: chọn các ô chứa các biến của bài toán, ta chọ
n khối
ô B7:D7. Nháy nút Add để nhập tất cả các ràng buộc vào khung Subject to the
Constraints (dòng đầu trong khung ứng với ràng buộc không âm trên các biến, dòng thứ
hai ứng với hai ràng buộc đầu bài toán (2), dòng cuối ứng với 2 ràng buộc cuối). Khi
nháy nút Add, hiện hộp thoại

Hộp văn bản Cell Reference để chọn các ô cần đặt ràng buộc lên chúng, hộp văn
bản ở giữa để chọn loại ràng buộc (>= = <= interger, binary), hộp văn bản Constraint
để chọn giá trị ràng buộc (có thể là số hay giá trị trong các ô).
Sau khi nhập xong các ràng buộc, nháy vào nút Options, hiện hộp thoại Solver
Options, đánh dấu kiểm vào mục Assume Linear Model (khảng định mô hình của ta là
tuyến tính).
Bước 4. Trong hộp thoại Solver Parameters nháy vào nút Solve để bắt đầu giải
bài toán tối ưu. Giải xong bài toán xuất hiện hộp thoại Solver Results, chọn mục Keep
Solver Solution (giữ lại lời giải), nháy OK, kết quả giải bài toán nằm ở các ô B7 : D7.
Kết quả ta được phương án tối ưu là X = (0.5 , 0 , 4.75), giá trị cực tiểu hàm mục tiêu là
5.25 ở ô E2.


35
3.2. Giải bài toán quy hoạch phi tuyến có ràng buộc tuyến tính
Xét bài toán quy hoạch phi tuyến
Min{f(x)| g
i
(x) = 0, i = 1, 2, …, m, x∈R
n

}.
Để giải bài toán quy hoạch phi tuyến bằng Solver ta cần xác định khối ô để chứa
các biến (x[1], x[2], . . . , x[n]), một ô chứa giá trị hàm mục tiêu f(x), khối m ô chứa giá
trị các hàm g
i
(x) .
Ví dụ. Giải bài toán quy hoạch toàn phương:
– x
1
–2x
2
+0,5x
1
2
+0,5x
2
2
→Min
2x
1
+3x
2
+ x
3
=6
x
1
+4x
2
+ x

4
=5
x
1
, x
2
, x
3
, x
4
≥ 0
Bảng tính để giải bài toán này như sau:

Phương án trong khối ô B2:E2 (phương án ban đầu cho mọi phần tử bằng 0),
hàm mục tiêu trong ô F2 xác định bởi công thức = - b2 - 2*c2 + 0.5*b2^2 + 0.5*c2^2.
Ô F3 tính theo công thức = sumproduct ($b$2: $e$2, b3 : e3), công thức này chép sang
ô F4. Các ràng buộc bài toán B2 : E2 >= 0, và F3:F4 = G3:G4. Khi giải các bài toán quy
hoạch phi tuyến ta phải bỏ chọn mục Assume Linear Model trong hộp thoại Solver
Options. Kết quả dùng Solver giải bài toán: trị tối ưu -2.0294, phương án tối ưu (0.7647,
1.0588, 1.294, 0).
Tóm lại Solver có thể giải được nhiều bài toán tối ưu, số lượng biến tối đa của
bài toán là 200 biến. Tuy nhiên cũng có nhiều bài toán nó không giải được, khi đó nó
đưa thường đưa ra các thông báo:
– Solver could not find a feasible solution: bài toán không có lời giải chấp nhận
được. Hoặc có thể do các giá trị khởi đầu của những ô chứa biến khác quá xa các giá trị
tối ưu, hãy thay đổi các giá trị khởi đầu và giải lại.
– The maximum iteration limit was reached, continue anyway ? số bước lặp đã
đến số cực đại. Ta có thể tăng số bước lặp ngầm định nhờ l
ệnh Tools/ Solver, chọn
Options, nhập giá trị mới vào hộp Iterations.

– The maximum time limit was reached, continue anyway ? thời gian chạy vượt
quá thời gian tối đa ngầm định. Ta có thể sửa giá trị trong mục Max Time trong gộp
thoại Solver Options.
Chú ý, nếu các lệnh Solver và Data Analysis không có trong menu Tools ta phải
cài đặt bổ sung từ đĩa CD: dùng lệnh Tools / Add-Ins, hiện hộp thoại, chọn mục Solver
Add in và Analysis ToolPak.

36
3.3. Một số ví dụ khác
Bài 1. Giải BTQHTT nguyên bộ phận:
z=5x
1
+x
2
+x
3
+2x
4
+3x
5
→min
–x
2
+5x
3
–x
4
–2x
5
≤ 2

5x
1
–x
2
+x
5
≥7
x
1
+x
2
+6x
3
+x
4
≥4
x
j
≥ 0 j=1, 2, 3, 4, 5
x
j
= interger, j = 1, 2, 3.
Đáp số: Giá trị tối ưu là 12, phương án tối ưu (2, 2, 0, 0, 0).
Bài 2. Giải BTQHTT 0–1 (bài toán cái túi) sau:
30x
1
+19x
2
+13x
3

+38x
4
+20x
5
+6x
6
+8x
7
+19x
8
+10x
9
+11x
10
→max
15x
1
+12x
2
+9x
3
+27x
4
+15x
5
+5x
6
+8x
7
+20x

8
+12x
9
+15x
10

62
x
j

{0, 1}, j=1, 2,",10
Đáp số: Giá trị tối ưu là 95, phương án tối ưu là ( 1, 1, 0, 1, 0, 0, 1, 0, 0, 0).
Bài 3. Giải bài toán quy hoạch lõm (có thể có nhiều cực tiểu địa phương)
–x
1
2
+2x
1
–x
2
2
+4x
2
–x
3
2
+8x
3
–x
4

2
+14x
4
–x
5
2
+18x
5
–180 →Min
–x
1
–2x
2
+x
3
+2x
4
+3x
5
≤ 85
–7x
1
+9x
2
–5x
3
+33x
4
–11x
5

≤500
2x
1
–x
2
+2x
3
–x
4
+2x
5
≤ 150
1.3x
1
+x
2
+x
3
+x
4
+x
5
≤ 300
x
1
+x
2
+x
3
+x

4
+x
5
≤ 300
x
1
, x
2
, x
3
, x
4
, x
5
≥0
Đáp số. Với phương án ban đầu X = (50, 50, 50, 50, 50) dùng Solver có phương
án tối ưu là X = (0, 190, 0, 0, 110) và trị tối ưu hàm mục tiêu là - 45640.

4. GIẢI BTQHTT TRONG LINGO
LINGO cho phép giải rất nhiều loại toán tối ưu, trong đó có BTQHTT (biến liên
tục cũng như biến nguyên). Để giải bài toán này, chúng ta cần cài đặt Lingo vào trong
máy tính. Nhấn vào biểu tượng Lingo trên màn hình để vào cửa sổ Lingo. Sau đó thực
hiện các lệnh Lingo:
Menu > New > <Untitle> và gõ vào các dữ liệu của bài toán.
Nhập bài toán
max = 8*x1+6*x2;
4*x1+2*x2<=76;

37
2*x1+5*x2<=52;

@gin(x1);
@gin(x2);
Hai điều kiện sau cùng là các điều kiện biến nguyên.
Kết quả chạy bài toán khi các biến đều liên tục
Rows= 3 Vars= 2 No. integer vars= 0 ( all are linear)
Nonzeros= 8 Constraint nonz= 4( 0 are +- 1) Density=0.889
Smallest and largest elements in absolute value= 2.00000 76.0000
No. < : 2 No. =: 0 No. > : 0, Obj=MAX, GUBs <= 1
Single cols= 0
Optimal solution found at step: 0
Objective value: 159.0000
Variable Value Reduced Cost
X1 17.25000 0.0000000E+00
X2 3.500000 0.0000000E+00
Row Slack or Surplus Dual Price
1 159.0000 1.000000
2 0.0000000E+00 1.750000
3 0.0000000E+00 0.5000000
Kết quả chạy bài toán khi biến x
1
nguyên
Rows= 3 Vars= 2 No. integer vars= 1 ( all are linear)
Nonzeros= 8 Constraint nonz= 4( 0 are +- 1) Density=0.889
Smallest and largest elements in absolute value= 2.00000 76.0000
No. < : 2 No. =: 0 No. > : 0, Obj=MAX, GUBs <= 1
Single cols= 0
Optimal solution found at step: 5
Objective value: 157.6000
Branch count: 1
Variable Value Reduced Cost

X1 17.00000 -5.600000
X2 3.600000 0.0000000E+00
Row Slack or Surplus Dual Price
1 157.6000 1.000000
2 0.8000000 0.0000000E+00
3 0.0000000E+00 1.200000


38
Kết quả chạy bài toán khi các biến đều nguyên
Rows= 3 Vars= 2 No. integer vars= 2 ( all are linear)
Nonzeros= 8 Constraint nonz= 4( 0 are +- 1) Density=0.889
Smallest and largest elements in absolute value= 2.00000 76.0000
No. < : 2 No. =: 0 No. > : 0, Obj=MAX, GUBs <= 1
Single cols= 0
Optimal solution found at step: 7
Objective value: 156.0000
Branch count: 2
Variable Value Reduced Cost
X1 18.00000 -8.000000
X2 2.000000 -6.000000
Row Slack or Surplus Dual Price
1 156.0000 1.000000
2 0.0000000E+00 0.0000000E+00
3 6.000000 0.0000000E+00
5. GIẢI BTQHTT BẰNG PHẦN MỀM QHTT
Sử dụng phần mềm QHTT trên mạng giáo dục edu.net.vn, dễ dàng nhập được
dữ liệu BTQHTT và có đáp số với toàn bộ các bảng trung gian. Tuy nhiên phần mềm
này chỉ áp dụng cho các biến liên tục và vẫn còn sai sót.


Bài toán dạng chính tắc:
F(x) = 8x
1
+ 6x
2
=> MAX
Các ràng buộc:

4x
1
+ 2x
2
+ x
3
= 60
2x
1
+ 4x
2
+ x
4
= 48

Trong đó:


39
x
3
, x

4
là biến bù
x
1
>=0, x
2
>=0, x
3
>=0, x
4
>=0

C
i
X
i
Y
i
X
1
X
2
X
3
X
4

Lamda
0
X

3

60
4
2 1 0 15
0
X
4

48 2 4 0 1 24
F(x) 0
-8

-6 0 0


C
i
X
i
Y
i
X
1
X
2
X
3
X
4


Lamda
8
X
1

15 1 1/2 1/4 0 30
0
X
4

18 0
3
-1/2 1 6
F(x) 120 0
-2

2 0

D

C
i
X
i
Y
i
X
1
X

2
X
3
X
4

Lamda
8
X
1

12 1 0 1/3 -1/6 -
6
X
2

6 0 1 -1/6 1/3 -
F(x) 132 0 0 5/3 2/3

Phương án tối ưu của bài toán là : (12,6,0,0)
Giá trị tối ưu của hàm mục tiêu là : F(x) = 132






×