BÀI TOÁN PHÂN PHỐI
Trang 1ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA CÔNG NGHỆ THÔNG TIN
Tel (84-511) 736 949, Website: itf.ud.edu.vn , E-mail: cntt@edu.ud.vn
BÁO CÁO TIỂU LUẬN MÔN HỌC
HỆ HỖ TRỢ RA QUYẾT ĐỊNH NGÀNH KHOA HỌC MÁY TÍNH
ĐỀ TÀI 11:
BÀI TOÁN PHÂN PHỐI
GVHD: TS Nguyễn Văn Hiệu HVTH: Đặng Thị Thanh Thúy
Lớp Cao học KHMT Khóa 28 (2013 - 2015)
ĐÀ NẴNG, 5/2015
Trang 2MỤC LỤC
I Tổng quan 1
II Mục đích 1
III Phương pháp 1
III.1 Phương pháp giải Bài toán quy hoạch nguyên 2
III.2 Phương pháp giải Bài toán quy hoạch phi tuyến 4
III.2.1.Giới thiệu 4
III.2.2.Hàm lồi 5
III.2.3.Giải bài toán tối ưu không có điều kiện ràng buộc 6
III.2.4.Giải bài toán tối ưu với điều kiện ràng buộc là các phương trình phi tuyến 7
IV Bài toán phân phối 8
IV.1 Bài toán phân phối dạng tổng quát 8
IV.2 Mô tả bài toán 9
IV.3 Mô hình tổng quát 11
V Giải quyết bài toán 13
V.1 Phân hoạch bài toán 13
V.2 Bài toán tối ưu hóa 14
V.2.1 Bài toán tối ưu hóa các module mua 14
V.2.2 Bài toán tối ưu hóa các module phát triển trong công ty 15
V.3 Ví dụ minh họa 16
VI Kết luận 17
TÀI LIỆU THAM KHẢO 19
Trang 3I Tổng quan
Ngày nay, với sự phát triển của khoa học, kỹ thuật, công nghệ và với tốc
độ tính toán, xử lý, lưu trữ và truy xuất nhanh, chính xác, máy tính trở thành thiết bị không thể thiếu Theo đó, nhu cầu sử dụng ngày càng tăng cao, đòi hỏi các phần mềm phục vụ cho con người cũng phát triển không ngừng
Máy tính đã được con người sử dụng trong mọi thiết bị: đồng hồ đeo tay, điện thoại, các thiết bị trong nhà, xe mô tô, hầu hết máy tính được sử dụng ở mọi mọi nhà, mọi cơ quan, trường học, bệnh viện, nhà máy, xí nghiệp,… Vấn đề
đó đồng nghĩa với việc phát triển khả năng xử lý của phần cứng và chất lượng của phần mềm Một vấn đề đang làm đau đầu các nhà quản lý của Công ty phần mềm, đó là bằng cách nào đó họ có thể phân bổ tài nguyên một cách hợp lý để tạo ra phần mềm với lợi nhuận và chất lượng cao
Vì thế, các nhà quản lý luôn tìm tòi, nghiên cứu, giải quyết bài toán phân phối tài nguyên cho việc xây dựng phần mềm có chất lượng cao mà chi phí ở mức thấp nhất và giảm thiểu rủi ro, nhằm tạo ra phần mềm có tính tin cậy nhất
Để tiếp cận và tìm ra giải pháp giải quyết bài toán nhằm tạo ra được cách đáng tin cậy theo yêu cầu, vấn đề cần cố gắng tập trung giải quyết là:
Xác định các mudule phần mềm cần phát triển
Dự đoán tài nguyên (chi phí) cần thiết cho từng module và tính toán
độ tin cậy mong đợi với tài nguyên đó
Tính độ tin cậy lớn nhất có thể đạt được của hệ thống phần mềm không vượt quá giới hạn ngân sách
Tìm chi phí nhỏ nhất để phần mềm có độ tin cậy là một hằng số xác định trước
III Phương pháp
Với những mục tiêu trên, để giải quyết bài toán phân phối chi phí trong độ tin cậy phần mềm, đề tài vận dụng một số phương pháp như sau:
Trang 4 Xây dựng được mô hình tổng quát cho bài toán quy hoạch nguyên dạng nhị phân và bài toán quy hoạch phi tuyến, trên cơ sở đó áp dụng cho bài toán tối ưu hóa các module phát triển trong công ty
Xây dựng được một mô hình phân phối chi phí để phần mềm có độ tin cậy lớn nhất
Xây dựng được một mô hình phân phối chi phí nhỏ nhất để phần mềm
có độ tin cậy là một hằng số cho trước
III.1 Phương pháp giải Bài toán quy hoạch nguyên
Bài toán quy hoạch nguyên là một bài toán quy hoạch tuyến tính mà ràng buộc thêm điều kiện các biến có giá trị nguyên Biến nhị phân cũng là một tập con của biến nguyên Trong đó, biến nhị phân chỉ nhận giá trị nguyên: 0 hoặc 1 Biến nhị phân thường được sử dụng trong các bài toán ra quyết định, dùng để quyết định thực hiện hay không thực hiện một công việc nào đó Bài toán quy
hoạch nguyên chứa các biến nhị phân được gọi là Binary integer programming (BIP)
Đầu tiên bạn nghĩ ngay một cách đơn giải để giải bài toán này là liệt kê toàn bộ các lời giải và sau đó là lựa chọn lời giải có nghiệm tối ưu nhất Công việc này chỉ được thực hiện cho những bài toán nhỏ, nhưng điều đó rất nhanh chóng không thực hiện được cho những bài toán có kích thước từ trung bình hoặc lớn
Ví dụ: Xét liệt kê đầy đủ của một mô hình tổng quát có một biến nguyên
1 x và hai biến nhị phân 2 x và 3 x với các ràng buộc:
1 ≤ x1 ≤ 3
0 ≤ x 2 ≤ 1
1 ≤ x 3 ≤ 1
Cấu trúc trong hình dưới là một cây với nút gốc bên trái, được gán nhãn
“all solution” và các nút lá nằm bên phải Các nút lá mô tả các giải pháp có được, vì vậy chúng ta có 12 giải pháp trong đó có: (3 giá trị có thể thực hiện
Trang 5được cho xi )*(2 giá trị có thể thực hiện được cho x 2 )*(2 giá trị có thể thực hiện
được cho x 3)
Hình 1 Cây liệt kê đầy đủ
Tương tự, nếu xét bài toán nhị phân có 20 biến Điều đó có nghĩa là sẽ có
220 =1,048,576 giải pháp được thực hiện bằng phương pháp liệt kê, công việc này phải được thực hiện bằng máy tính Nhưng nếu chúng ta xét một trường hợp giải sử có 100 biến nhị phân khi đó chúng ta cần đến 2100
=1.268x1030 giải pháp
được thực hiện bằng phương pháp liệt kê Do do, nếu ta đưa ra bài toán có n
biến theo lý thuyết sẽ có 2n
phương pháp có thể được xét đến Vấn đề là khi n
chỉ cần tăng 1 thì số phương pháp tăng lên gấp đôi, như vậy độ phức tạp là tăng tưởng theo hàm số mũ, vấn đề này là bất khả thi đối với máy tính Sự bùng nổ tổ hợp sẽ xấu hơn cho các biến nguyên có thể nhận nhiều giá trị hơn biến nhị phân
(chỉ có 2 giá trị 0/1) Điều này xét về mặt tính toán là bất khả thi với máy tính
Trang 6Trong thực tế, số biến của một bài toán có thể là rất lớn Do đó, phương pháp liệt kê sẽ không được thực hiện cho các bài toán có kích thước đủ lớn Vì vậy, chúng ta cần một phương pháp tối ưu nhất giải quyết việc bùng nổ tổ hợp này
Điểm khác biệt quan trọng giữa bài toán quy hoạch tuyến tính và bài toán quy hoạch nguyên:
Bài toán quy hoạch tuyến tính số lượng hàm ràng buộc là chính yếu quyết định độ phức tạp của bài toán
Bài toán quy hoạch nguyên số lượng biến và các cấu trúc đặc biệt
(special structure) Chính các cấu trúc đặc biệt này có thể là chìa khóa để đơn giản hóa vấn đề
III.2 Phương pháp giải Bài toán quy hoạch phi tuyến
III.2.1 Giới thiệu
Chúng ta sẽ nguyên cứu lý thuyết cho các chương trình toán học có dạng: Hàm mục tiêu:
Trang 7Với các điều kiện ràng buộc
h 1 (x 1 , x 2 ) = x 1 2 + x 2 2 – 1 = 0
g 1 (x 1 , x 2 ) = x 1 - x 2
2 ≥ 0
Vùng khả thi là một cung của đường tròn nằm bên trong parabola Bài
toán tìm một điểm trong vùng khả thi sao cho f(x1 , x 2 ) đạt giá trị nhỏ nhất Trong
trường hợp này, không có điểm nào để cho hàm mục tiêu đạt giá trị nhỏ nhất
Hình 2 Mô tả hình học cho ví dụ III.2.2 Hàm lồi
Định nghĩa Đối với hàm nhiều biến, lưu ý rằng ta chỉ có khái niệm lồi
của hàm khi hàm xác định trên một tập lồi Hàm nhiều biến f (x) xác định trên tập lồi D được gọi là một hàm lồi nếu với mọi M, N thuộc D và M≠ N, với mọi
α (0,1) thì ta đều có: (1−α) f (M) +αf (N) ≥ f ((1−α)M −αN)
Đặc trưng của hàm lồi
Hàm nhiều biến f (x) xác định trên một tập lồi D Giả sử f (x) có các đạo
hàm riêng cấp 2 liên tục
Nếu tại mọi điểm (x 1 , x 2 ,…, x n ) thuộc D, với mọi dx 1, dx2,…, dxn không đồng thời bằng 0:
Trang 8 d 2
f(x 1 , x 2 ,…, x n ) ≥ 0 thì f (x) là hàm lồi trên D
d 2
f(x 1 , x 2 ,…, x n ) > 0 thì f (x) là hàm lồi ngặt D
Việc phân tích trực tiếp trên biểu thức vi phân cấp 2 để chứng minh d 2 f
không đổi dấu là khó khả thi Do đó phải dùng đến công cụ của đại số tuyến tính
mà ta sẽ đề cập đến trong định lý sau
Định lý Xét hàm n biến f (x) xác định trên miền lồi D Giả sử hàm f (x) có
các đạo hàm riêng cấp hai liên tục x* D là một điểm dừng
Với mỗi x* D, gọi ma trận Hessian tại x * , ký hiệu F(x*) là ma trận vuông cấp n có thành phần dòng i cột j là
Với mỗi k từ 1 đến n, gọi F (x*) k là định thức ma trận con có được từ ma trận H(x*) bằng các lấy các phần tử ở k dòng đầu và k cột đầu Ta có điểm x * là cực tiểu của hàm f (x) trên X nếu f (x) là hàm lồi trên D Điều kiện để f (x) lồi trên D là với mọi x* D , ma trận F(x*) xác định dương Tức là với mọi x* D, với mọi k từ 1 đến n, ta đều có F k (x*) > 0
III.2.3 Giải bài toán tối ưu không có điều kiện ràng buộc
Đây là trường hợp đơn giản nhất của bài toán tối ưu là không có điều kiện ràng buộc, có dạng sau:
Tiếp theo chúng ta xem xét những trường hợp v = e j và v = −e j nghĩa là
Ta có điều kiện cần:
Chú ý Với mọi điểm x trong (x*) có thể được mô tả dưới dạng x = x * + tv, trong đó t > 0 (0 < t < ε vì t = || x*+ tv|| = ||x - x*|| ≤ ε) Ta được:
Trang 9f(x * ) ≤ f(x) = f(x * + tv) = f(x * ) + t f(x *
)v + Gọi ma trận Hessian, ký hiệu F là ma trận vuông cấp n của f và α [0,1]
Nhưng f (x*) = 0 và vì thế một điều kiện cần thứ hai cho f để có một cực tiểu tại x* là 0 ≤ v T
F(x* + αtv)v (3)
Định lý 1 Cho f : R n
→ R 1 hai lần đạo hàm liên tục xung quanh một lân
cận của x* Nếu f có một cực tiểu tại x* thì:
(i) f (x*) = 0
(ii) F(x*) là một đại lượng xác định dương
Định lý 2 Cho f : R n
→ R 1 hai lần đạo hàm liên tục xung quanh một lân
cận của x* Khi đó một điều kiện đủ để cho f (x) có một cực tiểu tại x* , là f (x*) = 0 và F(x*) là một đại lượng xác định dương.
III.2.4 Giải bài toán tối ưu với điều kiện ràng buộc là các phương trình phi
Trong đó:
f : R n → R 1 , h : R n → R m , g: R n → R q và toàn bộ các hàm đều trong C 2
Định nghĩa Cho x* là một điểm thỏa mãn điều kiện h(x*) = 0, g(x*) ≥ 0
và g (x*) = 0 j với j J Khi đó x* được gọi là một điểm dừng của các ràng buộc
nếu các véctơ hi(x*) i với 1≤ i ≤ m và gj(x*) là độc lập tuyến tính
Định lý 1 (Kuhn - Tucker Conditions) Cho x* là một điểm cực tiểu của
bài toán (VI.3) và giả sử rằng x* là một điểm dừng Khi đó tồn tại một vector λ
R m
và một vector μ R q
sao cho:
f (x*) –λT h(x*) − μT g(x*) = 0 (a)
Trang 10và một
vector μ Rq
, μ ≥ 0 từ (a) - (d), ta có L(x*) = F(x*) –λTH(x*) –μT G(x*) là xác định dương tại x*
Định lý 3 (điều kiện đủ) Cho f ,h, g C 2
Điều kiện để điểm x* là một
cực tiểu là tồn tại λ R m
và μ R q
thoả các ràng buộc từ (a) - (d) và ma trận
Hessian L(x*) = F(x*) − λTH(x*) –μT G(x*) xác định dương trong mặt phẳng
T'= {y : h(x*)y = 0, gj (x*)y = 0 với mọi j J '}, trong đó J '= {j: gj (x*) = 0, μj
> 0}
IV Bài toán phân phối
Bài toán phân phối là một trong những bài toán phổ biến nhất của quy
hoạch tuyến tính, được vận dụng trong nhiều lĩnh vực và có nhiều ứng dụng trong
thực tiễn Việc giải quyết Bài toán phân phối là xác định một phương án tối ưu sao
cho:
Đáp ứng nhu cầu tốt nhất
Chi phí thấp nhất
Lợi nhuận cao nhất
Từ đó, xây dựng mạng lưới liên kết, chi nhánh, tài nguyên, sản phầm sản xuất,… để có phương án lên kế hoạch, phân bổ
IV.1 Bài toán phân phối dạng tổng quát
Giả sử một Công ty phần mềm VN đang cần xây dựng một phần mềm cho khách hàng Phần mềm này có n module được phân theo dạng sau:
Các module từ 1, 2, m1 là các module đơn và các module từ
m1+1, , n là các tích hợp
Các module từ 1, 2,…, m là các module mua và còn lại m+ 1, , n là
được phát triển trong công ty
Trang 11Mỗi module có thể được mua ngoài hoặc được công ty phát triển
Ứng với từng module sẽ có một hoặc nhiều phiên bản (version) và mỗi phiên bản sẽ có một chi phí phát triển và một độ tin cậy
Hãy tìm cách phân phối chi phí để xây dựng một hệ thống phần mềm sao cho độ tin cậy của phần mềm là lớn nhất nhưng tổng chi phí là thấp nhất hoặc không vượt quá giới hạn ngân sách đã cho
IV.2 Mô tả bài toán
Quá trình phân phối chi phí cho độ tin cậy phần mềm được thực hiện như sau:
Bước 1 Xác định các module trong phần mềm module nào là module đơn
và module nào là module tích hợp Module đơn nào được phát triển trong công
ty và module đơn nào sẽ được mua bên ngoài thị trường
Bước 2 Xác định công thức tính độ tin cậy cho từng loại module:
Đối với module mua, mỗi module mua có nhiều version trên thị trường, ứng với mỗi version đều có độ tin cậy và chi phí khác nhau Độ tin cậy và chi phí của một module bằng độ tin cậy và chi phí của version
mà chúng ta lựa chọn mua Với lý do tiết kiệm chi phí, do đó chúng ta phải lựa chọn duy nhất một trong số các version đã cho Do đó để thực hiện được vấn đề này, chúng ta đưa một biến thực hiện công việc lựa chọn mua hay không mua một version nào đó Đó là các biến nguyên nhị phân
Đối với các module phát triển trong công ty, độ tin cậy của một module sẽ phụ thuộc vào chi phí Khi chi phí tăng thì độ tin cậy cũng tăng theo Tuy nhiên, độ tin cậy sẽ tăng đến một mức độ nào đó thì sẽ tăng chậm lại, cho dù ta có tăng chi phí nhiều thì độ tin cậy cũng tăng chậm Qua việc khảo sát hàm số mũ âm, ta nhận thấy cách đo độ tin cậy phần mềm rất giống với hàm số mũ âm Do đó ta chọn hàm số mũ âm để mô tả
độ tin cậy của các module phát triển trong công ty và các biến trong các module phát triển trong công ty là các biến thực
Trang 12Việc giải quyết bài toán tối ưu hoá phân phối chi phí cho độ tin cậy phần mềm tồn tại cả hai loại biến nguyên nhị phân và biến thực rất khó giải quyết Một phương án đề xuất phân hoạch bài toán thành hai phần: phần module mua
và phần module phát triển trong công ty, chi phí để phát triển phần mềm cũng được phân hoạch thành hai phần ứng với hai sự phân hoạch đó
Đối với bài toán module mua, cấu trúc bài toán giống như một bài toán quy hoạch tuyến tính, tuy nhiên các biến trong bài toán đều là các biến nguyên nhị phân, nếu chúng ta giải quyết bài toán theo phương pháp quy hoạch tuyến tính để tìm ra nghiệm, sau đó làm tròn các nghiệm để được giá trị nguyên, phương pháp làm tròn tìm ra lời giải rất xa so với lời giải thực tế, còn dùng phương pháp liệt kê tất cả các lời giải sau đó tìm ra lời giải tối ưu nhất thì dẫn đến việc bùng nổ tổ hợp Một giải pháp được
đề xuất là sử dụng giải thuật Branch and Bound để giải quyết bài toán, bước đầu đã đạt được những kết quả Do module mua cũng là một module đơn trong phần mềm, và các module tích hợp được tích hợp từ các module đơn Do đó, với việc giải quyết bài toán tối ưu hoá các module mua, chúng ta đã tìm được độ tin cậy và chi phí cho các module mua Kết quả
sẽ được đưa vào để giải quyết bài toán tối ưu hoá các module phát triển trong công ty
Đối với bài toán các module phát triển trong công ty, do cấu trúc bài toán hàm mục tiêu là một hàm nhiều biến, lại liên quan đến hàm số mũ Cho nên để thực hiện được bài toán ta sử dụng phương pháp quy hoạch phi tuyến để giải quyết, thông qua đây ta cũng tìm được độ tin cậy và chi phí cho từng module trong phần mềm cũng như độ tin cậy của phần mềm Tuy nhiên, để đảm bảo bài toán tìm được lời giải tối ưu nhất, chúng ta cần phải xem xét nguồn chi phí cung cấp có đủ để phát triển phần mềm chưa, cũng như việc phân chia chi phí giữa các module mua và module phát triển trong công ty có hợp lý chưa, và các thông số nhập vào có đảm bảo phần mềm có độ tin cậy thoả mãn không