LÝ THUYẾT CƠ BẢN VỀ QUY HOẠCH TUYẾN TÍNH
GIỚI THIỆU BÀI TOÁN QUY HOẠCH TUYẾN TÍNH
Có thể tạm định nghĩa quy hoạch tuyến tính là lĩnh vực toán học nghiên cứu các
bài toán tối ưu mà hàm mục tiêu (vấn đề được quan tâm) và các ràng buộc (điều
kiện của bài toán) đều là hàm và các phương trình hoặc bất phương trình tuyến
tính. Đây chỉ là một định nghĩa mơ hồ, bài toán quy hoạch tuyến tính sẽ được
xác định rõ ràng hơn thông qua các ví dụ .
Các bước nghiên cứu và ứng dụng một bài toán quy hoạch tuyến tính điển hình
là như sau :
a- Xác định vấn đề cần giải quyết, thu thập dữ liệu.
b- Lập mô hình toán học.
c- Xây dựng các thuật toán để giải bài toán đã mô hình hoá bằng ngôn ngữ thuận
lợi cho việc lập trình cho máy tính.
d- Tính toán thử và điều chỉnh mô hình nếu cần.
e- Áp dụng giải các bài toán thực tế.
Bài toán vốn đầu tư
Người ta cần có một lượng (tối thiểu) chất dinh dưỡng i=1,2,..,m do các thức ăn
j=1,2,...,n cung cấp. Giả sử :
aij là số lượng chất dinh dưỡng loại i có trong 1 đơn vị thức ăn loại j
(i=1,2,...,m) và (j=1,2,..., n)
bi là nhu cầu tối thiểu về loại dinh dưỡng i
cj là giá mua một đơn vị thức ăn loại j
Vấn đề đặt ra là phải mua các loại thức ăn như thế nào để tổng chi phí bỏ ra ít
nhất mà vẫn đáp ứng được yêu cầu về dinh dưỡng. Vấn đề được giải quyết
theo mô hình sau đây :
0 (j= 1,2,...,n) là số lượng thức ăn thứ j≥ Gọi xj cần mua .
Tổng chi phí cho việc mua thức ăn là :
z=
n
∑
j=1
cjxj=c1x1+c2x2+......+cnxn
Vì chi phí bỏ ra để mua thức ăn phải là thấp nhất nên yêu cầu cần được thỏa
mãn là :
min z=
n
∑
j=1
cjxj=c1x1+c2x2+......+cnxn
Lượng dinh dưỡng i thu được từ thức ăn 1 là : ai1x1 m)→(i=1
Lượng dinh dưỡng i thu được từ thức ăn 2 là : ai2x2
.........................................................
Lượng dinh dưỡng i thu được từ thức ăn n là : ainxn
Vậy lượng dinh dưỡng thứ i thu được từ các loại thức ăn là :
m)→ai1x1+ai2x2+...+ainxn (i=1
Vì lượng dinh dưỡng thứ i thu được phải thỏa yêu cầu bi về dinh dưỡng loại đó
nên ta có ràng buộc sau :
m)→ bi (i=1≥ ai1x1+ai2x2+...+ainxn
Khi đó theo yêu cầu của bài toán ta có mô hình toán sau đây :
min z=
n
∑
j=1
cjxj=c1x1+c2x2+......+cnxn
a11x1+a12x2+...+a1nxn≥b1
a21x1+a22x2+...+a2nxn≥b2
..........................................
am1x1+am2x2+...+amnxn≥bm
xj≥0(j=1,2,...,n)
{ { { {
Bài toán lập kế hoạch sản xuất
Từ m loại nguyên liệu hiện có người ta muốn sản xuất n loại sản phẩm
Giả sử :
aij là lượng nguyên liệu loại i dùng để sản xuất 1 sản phẩm loại j
(i=1,2,...,m) và (j=1,2,..., n)
bi là số lượng nguyên liệu loại i hiện có
cj là lợi nhuận thu được từ việc bán một đơn vị sản phẩm loại j
Vấn đề đặt ra là phải sản xuất mỗi loại sản phẩm là bao nhiêu sao cho tổng lợi
nhuận thu được từ việc bán các sản phẩm lớn nhất trong điều kiện nguyên liệu
hiện có.
0 là số lượng sản phẩm thứ j sẽ sản xuất≥ Gọi xj (j=1,2,...,n)
Tổng lợi nhuận thu được từ việc bán các sản phẩm là :
z=
n
∑
j=1
cjxj=c1x1+c2x2+......+cnxn
Vì yêu cầu lợi nhuận thu được cao nhất nên ta cần có :
max z=
n
∑
j=1
cjxj=c1x1+c2x2+......+cnxn
m dùng để sản xuất sản→Lượng nguyên liệu thứ i=1 phẩm thứ 1 là ai1x1
m dùng để sản xuất sản→Lượng nguyên liệu thứ i=1 phẩm thứ 2 là ai2x2
...............................................
m dùng để sản xuất sản→Lượng nguyên liệu thứ i=1 phẩm thứ n là ainxn
Vậy lượng nguyên liệu thứ i dùng để sản xuất là các sản phẩm là
ai1x1+ai2x2+...+ainxn
m dùng để sản xuất các→Vì lượng nguyên liệu thứ i=1 loại sản phẩm không thể
vượt quá lượng được cung cấp là bi nên :
bi (i=1,2,...,m)≤ ai1x1+ai2x2+...+ainxn
Vậy theo yêu cầu của bài toán ta có mô hình sau đây :
max z=
n
∑
j=1
cjxj=c1x1+c2x2+......+cnxn
a11x1+a12x2+...+a1nxn≤b1
a21x1+a22x2+...+a2nxn≤b2
..........................................
am1x1+am2x2+...+amnxn≤bm
xj≥0(j=1,2,...,n)
{ { { {
Bài toán vận tải
Người ta cần vận chuyển hàng hoá từ m kho đến n cửa hàng bán lẻ. Lượng hàng
hoá ở kho i là si (i=1,2,...,m) và nhu cầu hàng hoá của cửa hàng j là dj (j=1,2,...,n).
Cước vận chuyển một đơn vị hàng hoá từ kho i đến 0 đồng.≥ của hàng j là cij
Giả sử rằng tổng hàng hoá có ở các kho và tổng nhu cầu hàng hoá ở các cửa
hàng là bằng nhau, tức là :
m
∑
i=1
si=
n
∑
j=1
dj
Bài toán đặt ra là lập kế hoạch vận chuyển để tiền cước là nhỏ nhất, với điều
kiện là mỗi cửa hàng đều nhận đủ hàng và mỗi kho đều trao hết hàng.
0 là lượng hàng hoá phải vận chuyển từ≥ Gọi xij kho i đến cửa hàng j. Cước
vận chuyển chuyển hàng hoá i đến tất cả các kho j là :
n
∑
j=1
cijxij
Cước vận chuyển tất cả hàng hoá đến tất cả kho sẽ là :
z=
m
∑
i=1
n
∑
j=1
cijxij
Theo yêu cầu của bài toán ta có mô hình toán sau đây :
minz=
m
∑
i=1
n
∑
j=1
cijxij
m
∑
i=1
xij=dj
x
x
x
x
x
x
x
j=1,2,...,n
j
j
j
j
j
j
j
xij≥0(i=1,2,...,m)(j=1,1,...,n)
{
QUY HOẠCH TUYẾN TÍNH TỔNG QUÁT VÀ CHÍNH TẮC
Quy hoạch tuyến tính tổng quát
Tổng quát những bài toán quy hoạch tuyến tính cụ thể trên, một bài toán quy
hoạch tuyến tính là một mô hình toán tìm cực tiểu (min) hoặc cực đại (max) của
hàm mục tiêu tuyến tính với các ràng buộc là bất đẳng thức và đẳng thức tuyến
tính. Dạng tổng quát của một bài toán quy hoạch tuyến tính là :
min/maxz=
n
∑
j=1
cjxj(I)
n
∑
j=1
aijxj=bi
a
a
a
a
a
a
a
i∈I1
∈
∈
∈
∈
∈
∈
∈
n
∑
j=1
aijxj≤bi
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
i∈I2
∈
II
I
I
I
I
I
I
I
I
I
n
∑
j=1
aijxj≥bi
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
i∈I3
∈
∈
∈
xj≥0j∈J1 xj≤0j∈J2 (III) xjtùy ýj∈J3 no
{ {
{ {
Trong đó :
(I) Hàm mục tiêu•
Là một tổ hợp tuyến tính của các biến số, biểu thị một đại lượng nào đó mà ta
cần phải quan tâm của bài toán.
(II) Các ràng buộc của bài toán•
Là các phương trình hoặc bất phương trình tuyến tính n biến số, sinh ra từ điều
kiện của bài toán.
(III) Các các hạn chế về dấu của các biến• số
Người ta cũng thường trình bày bài toán quy hoạch tuyến tính dưới dạng ma trận
như sau :
a11a12...a1n
a21a22...a2n
......................
am1am2...amn
righ
[] [] []
A=[aij] =
x1
x2
...
xn
righ
c1
c2
...
cn
righ
b1
b2
...
bm
righ
[] [] []
x=
m) là dòng thứ i của ma trận A, ta có→Gọi ai (i=1 :
min/maxz(x)=cT x(I)
aix=bi(i∈I1)
aix≤bi(i∈I2)(II)
aix≥bi(i∈I3)
xj≥0j∈J1
xj≤0j∈J2 (III)
xjtùy ýj∈J3
no
{ {
{ {
Người ta gọi :
- A là ma trận hệ số các ràng buộc.
- c là vectơ chi phí (cT là chuyển vị của c)
- b là vectơ giới hạn các ràng buộc.
Quy hoạch tuyến tính dạng chính tắc
Bài toán quy hoạch tuyến tính chính tắc là bài toán quy hoạch tuyến tính mà
trong đó các ràng buộc chỉ có dấu = và các biến số đều không âm.
min/maxz=
n
∑
j=1
cjxj(I)
n
∑
j=1
aijxj=bi
a
a
a
a
a
a
a
i=1,2,...,m
i
i
i
i
i
i
i
i
i
i
i
i
i
i
II
I
I
I
I
I
I
xj≥0(j=1,2,...,n)(III)
{
n )≤ ( m
min/maxz(x)=cT x(I)
Ax=b(II)
x≥0(III)
{
rang(A)=m
Người ta có thể biến đổi bài toán quy hoạch tuyến tính dạng tổng quát thành bài
toán quy hoạch tuyến tính dạng chính tắc nhờ các quy tắc sau đây :
thì người ta cộng≤ - Nếu gặp ràng buộc i có dạng 0 để được dấu = .≥ thêm vào
vế trái của ràng buộc một biến phụ xn+i
thì người ta trừ≥ - Nếu gặp ràng buộc i có dạng 0 để được dấu = .≥ vào vế trái
của ràng buộc một biến phụ xn+i
Các biến phụ chỉ là những đại lượng giúp ta biến các ràng buộc dạng bất đẳng
thức thành đẳng thức, nó phải không ảnh hưởng gì đến hàm mục tiêu nên không
xuất hiện trong hàm mục tiêu.
0≥ 0 thì ta đặt xj = -x’j với x’j ≤ - Nếu biến xj rồi thay vào bài toán.
- Nếu biến xj là tuỳ ý thì ta đặt xj=xj'−xj'' với xj', {xj'' 0 rồi thay vào≥ đều bài
toán.
- Trong trường hợp trong số các ràng buộc có dòng mà vế phải của dòng đó là
giá trị âm thì đổi dấu cả hai vế để được vế phải là một giá trị không âm.
Dựa vào các phép biến đổi trên mà người ta có thể nói rằng bài toán quy hoạch
tuyến tính chính tắc là bài toán quy hoạch tuyến tính mà trong đó các ràng buộc
chỉ có dấu = , vế phải và các biến số đều không âm.
Ví dụ :
Biến đổi bài toán quy hoạch tuyến tính sau đây về dạng chính tắc :
minz(x)=2x1−x2+2x3+x4−2x5
x1−2x2+x3+2x4+x5≤7
x2+2x3+x4≥−1
2x3+x4+3x5≥10
x1+x2−2x3+x4=20
x1,x5≥0
x4≤0
x2,x3tùy ý
no
{ {
{ { {
Bằng các thay thế :
x4=−x4'(x4'≥0)
x2=x2'−x2''(x2',x2''≥0)
x3=x3'−x3''(x3',x3''≥0)
ta được :
minz(x)=2x1−( x2'−x2'')+2 (x3'−x3'')−x4' −2x5
x1−2(x2'−x2'')+( x3'−x3'')−2 x4'+x5+x6=7
(x2'−x2'')+2 (x3'−x3'')+x4 −x7=−1
2(x3'−x3'')−x4' +3x5−x8=10
x1+( x2'−x2'')−2 (x3'−x3'')−x4' =20
x1,x5,x6,x7,x8,x2',x2'',x3',x3'',x4'≥0
{ { {
hay :
minz(x)=2x1−( x2'−x2'')+2 (x3'−x3'')−x4' −2x5
x1−2(x2'−x2'')+( x3'−x3'')−2 x4'+x5+x6=7
−( x2'−x2'')−2 (x3'−x3'')−x4 +x7=1
2(x3'−x3'')−x4' +3x5−x8=10
x1+( x2'−x2'')−2 (x3'−x3'')−x4' =20
x1,x5,x6,x7,x8,x2',x2'',x3',x3'',x4'≥0
{ { {
Phương án
Xét bài toán quy hoạch tuyến tính chính tắc :
min/maxz(x)=cT x
Ax=b
x≥0
{
(P)
x=[x1 x2 ... xn] T là một phương án của (P) khi và chỉ khi Ax = b.
x=[x1 x2 ... xn] T là một phương án khả thi của (P) khi và chỉ 0 .≥ khi Ax = b và
x
Một phương án tối ưu của (P) là một phương án khả thi của (P) mà giá trị của
hàm mục tiêu tương ứng đạt min/max.
ĐẶC ĐIỂM CỦA TẬP HỢP CÁC PHƯƠNG ÁN
Khái niệm lồi và các tính chất
a- Tổ hợp lồi
- Cho m điểm xi trong không gian Rn . Điểm x được gọi là tổ hợp lồi của các
điểm xi nếu :
x=
m
∑
i=1
αixi=α1x1+α2x2+...+αmxm α1,α2,....,αn≥0α1+α2+....+αn=1
- Khi x là tổ hợp lồi của hai điểm x1, x2 người ta thường viết :
1)≤λ ≤ )x2 (0λx1+(1-λx=
Nếu 0Trong đa diện lồi người ta có thể loại bỏ dần các điểm là tổ hợp của các điểm
còn lại. Khi đó người ta thu được một hệ các điểm, m) . Các điểm này chính là
các điểm cực biên của đa≤ giả sử là y1, y2,...,yp (p diện lồi, chúng sinh ra đa
diện lồi đó.
Số điểm cực biên của đa diện lồi là hữu hạn.
Siêu phẳng - Nửa không gian
A=[aij]m.n là ma trận cấp m.n
Ai (i=1,2,...,m) là hàng thứ i của A
Siêu phẳng trong Rn là tập các điểm x=[x1,x2,.....,xn]T thỏa
Ai x = bi
Nửa không gian trong Rn là tập các điểm x=[x1,x2,.....,xn]T thỏa
bi≥ Ai x
Siêu phẳng và nửa không gian đều là các tập hợp lồi.
Tập lồi đa diện
Giao của một số hữu hạn các nửa không gian trong Rn được gọi là tập lồi đa
diện.
Tập lồi đa diện là một tập hợp lồi.
Nếu tập lồi đa diện không rỗng và giới nội thì đó là một đa diện lồi
Đặc điểm của tập hợp các phương án
Ðịnh lý
Tập hợp các phương án của một quy hoạch tuyến tính là một tập lồi đa diện.
Nếu tập hợp lồi đa diện này không rỗng và giới nội thì đó là một đa diện lồi, số
điểm cực biên của nó là hữu hạn.
Ðịnh lý
Tập hợp các phương án tối ưu của một quy hoạch tuyến tính là một tập lồi.
Xét quy hoạch tuyến tính chính tắc
min/maxz(x)=cT x(I)
Ax=b(II)
x≥0(III)
{
n, rang(A)=m≤ Giả sử A=[aij]m.n có cấp m.n, m .
Gọi Aj (j=1,2,...,n) cột thứ j của ma trận A, quy hoạch tuyến tính chính tắc trên
có thể viết :
min/maxz(x)=c1 x1+c2x2+...+cnxn
x1A1+x2A2+...+xnAn=b
x≥0
{
0 / x1A1+ x2A2+...+≥ Gọi S={x=[x1,x2,...,xn]T xnAn=b} là tập các
phương án của bài toán.
x0=[x10,x20,...,xn0] T S là một phương án khác∈ 0.
Định lý
Điều kiện cần và đủ để x0 là phương án cực biên ( điểm cực biên của S) là các
cột Aj ứng với xj0>0 là độc lập tuyến tính.
Hệ quả
Số phương án cực biên của một quy hoạch tuyến tính chính tắc là hữu hạn. Số
thành phần > 0 của một phương án cực biên tối đa là bằng m.
Khi số thành phần > 0 của một phương án cực biên bằng đúng m thì phương án
đó được gọi là một phương án cơ sở.
Định lý
Nếu tập các phương án của một quy hoạch tuyến tính chính tắc không rỗng thì
quy hoạch tuyến tính đó có ít nhất một phương án cực biên.
Bổ đề
Nếu
x là một phương án tối ưu của quy hoạch tuyến tính.
x1, x2 là các phương án của quy hoạch tuyến tính.
x là tổ hợp lồi thực sự của x1, x2
thì x1, x2 cũng là phương án tối ưu của quy hoạch tuyến tính.
Định lý
Nếu quy hoạch tuyến tính chính tắc có phương án tối ưu thì thì sẽ có ít nhất một
phương án cực biên là phương án tối ưu.
Ví dụ : xét quy hoạch tuyến tính chính tắc
maxz(x)=2x1+3x2
4x1+2x2+x3=5
x1+3x2=1
x1,x2,x3≥0
{
Với hệ A1 A2 ta tính được x1=
ợ
ợ
ợ
ợ
ợ
−
13
1 0
3
10
0
0
0
0
0
T
Với hệ A1 A3 ta tính được x2=
ợ
ợ
101
1
1
T
Với hệ A2 A3 ta tính được x3=
ợ
1 13
03 3
3
3
3
T
Vì các thành phần của phương án cực biên là > 0 nên ta chi xét x2 và x3 . Khi đó :
z(x2)=2.1+3.0=2
z(x3)=2.0+3.1/3=1
Vậy x2=
ậ
ậ
101
1
1
Tlà một phương án tối ưu.
Định lý
Điều kiện cần và đủ để một quy hoạch tuyến tính có phương án tối ưu là tập
các phương án không rỗng và hàm mục tiêu bị chặn.
Định lý
Nếu tập các phương án của một quy hoạch tuyến tính không rỗng và là một đa
diện lồi thì quy hoạch tuyến tính đó sẽ có ít nhất một phương án cực biên là
phương án tối ưu.
Phương pháp hình học
Từ những kết quả trên người ta có cách giải một quy hoạch tuyến tính hai biến
bằng phương pháp hình học thông qua ví dụ sau :
Ví dụ : xét quy hoạch tuyến tính
maxz(x)=3x1+2x2
x1−x2≥−4
x1+2x2≤14
5x1+2x2≤30