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

BÀI TOÁN PHÂN PHỐI

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.17 MB, 21 trang )

ĐẠ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:

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


MỤ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


Hệ hỗ trợ ra quyết định

I.

Bài toán phân phối

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

Mục đích
Để 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:

HVTH: Đặng Thị Thanh Thúy – KHMT.K28

1


Hệ hỗ trợ ra quyết định



Bài toán phân phối

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 ≤ x2 ≤ 1
1 ≤ x3 ≤ 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

HVTH: Đặng Thị Thanh Thúy – KHMT.K28

2


Hệ hỗ trợ ra quyết định

Bài toán phân phối

được cho xi)*(2 giá trị có thể thực hiện được cho x2)*(2 giá trị có thể thực hiện
được cho x3)

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 2 100 =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.
HVTH: Đặng Thị Thanh Thúy – KHMT.K28

3



Hệ hỗ trợ ra quyết định

Bài toán phân phối

Trong 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:
min f (x)
với các điều kiện ràng buộc:
hi(x) = 0, i =1,…,m
gi(x) ≤ 0, j =1,…,q
x


D

trong đó:


f (x): Là hàm mục tiêu.



gj (x) , hi(x) các điều kiện ràng buộc là các bất đẳng thức, và các đẳng

thức.


D ⊂ Rn: Miền xác định.



x

D: Thỏa mãn tất cả các ràng buộc gọi là nghiệm chấp nhận được.

Nhiệm vụ của bài toán tìm một cực tiểu x để hàm mục tiêu đạt giá trị nhỏ
nhất thỏa mãn điều kiện ràng buộc.
Ví dụ: Xét bài toán
Hàm mục tiêu: min f(x1, x2) = |x1 – 2| + |x2 – 2|
HVTH: Đặng Thị Thanh Thúy – KHMT.K28

4



Hệ hỗ trợ ra quyết định

Bài toán phân phối

Với các điều kiện ràng buộc
h1(x1, x2)= x12 + x22 – 1 = 0
g1(x1, x2)= x1 - x22 ≥ 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, x2) đạ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 (x1, x2,…, xn) thuộc D, với mọi dx1, dx2,…, dxn không
đồng thời bằng 0:
HVTH: Đặng Thị Thanh Thúy – KHMT.K28

5


Hệ hỗ trợ ra quyết định


Bài toán phân phối

 d2f(x1, x2,…, xn) ≥ 0 thì f (x) là hàm lồi trên D.
 d2f(x1, x2,…, xn) > 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*
Với mỗi x*

D là một điểm dừng.

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ó Fk (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:
Hàm mục tiêu:
min{ f (x) : x Rn}
Trong đó f: Rn → R1 . Cho x* được xem như một điểm và giả sử f hai lần
đạo hàm liên tục trong lân cận N (x*) của x*, trong đó x


(x*) với f (x) ≥ f

(x*) . Giả sử tồn tại một vectơ v , sao cho ||v|| = 1, ta có:

Tiếp theo chúng ta xem xét những trường hợp v = ej và v = −ej 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:
HVTH: Đặng Thị Thanh Thúy – KHMT.K28

6


Hệ hỗ trợ ra quyết định

Bài toán phân phối

f(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 ≤ vTF(x* + αtv)v (3)
Định lý 1 Cho f : Rn → R1 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 : Rn → R1 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
tuyến
Mô hình tổng quát NLP mà chúng ta xem xét bao gồm cả các ràng buộc
tuyến tính và phi tuyến.
Hàm mục tiêu: Minimize f (x)
với các điều kiện ràng buộc:
h(x) = 0
g(x)≥ 0

(VI.3)

Trong đó:
f : Rn → R1, h : Rn → Rm, g: Rn → Rq và toàn bộ các hàm đều trong C2.
Đị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 λ
Rm và một vector μ Rq sao cho:
f (x*) –λT h(x*) − μT g(x*) = 0
HVTH: Đặng Thị Thanh Thúy – KHMT.K28

(a)
7



Hệ hỗ trợ ra quyết định

Bài toán phân phối

μTg(x*) = 0

(b)

μ≥0

(c)

h(x*) = 0, g(x*) ≥ 0

(d)

Định lý 2 (điều kiện cần). Giả sử các hàm f ,h, g C2 và x* là một điểm
dừng. Nếu x* là một cực tiểu của (VI.3) thì tồn tại một vector λ

Rm và 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 C2 . Điều kiện để điểm x* là một
cực tiểu là tồn tại λ Rm và μ Rq 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.
HVTH: Đặng Thị Thanh Thúy – KHMT.K28

8


Hệ hỗ trợ ra quyết định

Bài toán phân phối

Mỗ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.

HVTH: Đặng Thị Thanh Thúy – KHMT.K28

9


Hệ hỗ trợ ra quyết định

Bài toán phân phối

Việ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.
HVTH: Đặng Thị Thanh Thúy – KHMT.K28

10


Hệ hỗ trợ ra quyết định

Bài toán phân phối

Một vấn đề khác nhà quản lý đặc ra, với độ tin cậy độ đã định trước, tìm
chi phí nhỏ nhất ứng với độ tin cậy đã cho. Để thực hiện được vấn đề này, các
công việc sau đây cần giải quyết:


Đối với các module mua các verion của các module mua có độ tin cậy

và chi phí là một hằng số xác định trước. Vì vậy, công việc tìm độ tin cậy
của các module này cũng được thực hiện giống như trường hợp trên.
Nghĩa là ta sẽ cho trước chi phí để mua các module và từ đó tìm ra độ tin
cậy ứng với chi phí đó. Tương tự như trên kết quả độ tin cậy của các
module mua 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 các module phát triển trong công ty, qua việc tìm chi phí nhỏ

nhất để phần mềm có độ tin cậy là một hằng số cho trước ta cũng dùng
phương pháp quy hoạch phi tuyến để giải quyết. Trong trường hợp này
hàm mục tiêu là hàm chi phí và điều kiện ràng buộc là hàm độ tin cậy của

phần mềm phải bằng một hằng số cho trước. Qua đây, chúng ta có thể tìm
ra được chi phí nhỏ nhất của phần mềm, cũng như độ tin cậy và chi phí
của từng module trong phần mềm. Tuy nhiên, công việc này nhiều lúc
không dễ dàng thực hiện, do khi chúng ta phân phối chi phí cho các
module mua quá ít, làm cho độ tin cậy của các module này cũng nhỏ theo,
kết quả làm ảnh hưởng đến độ tin cậy phần mềm, hoặc các thông số đầu
vào của các module phần mềm cũng gây ảnh hưởng không nhỏ đến quá
trình xác định.
IV.3. Mô hình tổng quát
Giả sử trong phần mềm tồn tại n module và các module này có thể được
mua ở bên ngoài thị trường hoặc được phát triển trong công ty, B là tổng ngân
sách đã cho.
Với mỗi module i (i=1,2,…,n) có chi phí khởi tạo cho việc phát triển
module là xi và ứng với chi phí này ta có độ tin cậy khởi tạo là ri.

HVTH: Đặng Thị Thanh Thúy – KHMT.K28

11


Hệ hỗ trợ ra quyết định

Bài toán phân phối

Mỗi module i có j version (j=1,2,…,k). Và yij là một biến nhị phân biểu thị
cho việc mua hay không mua version thứ j của module i. Nếu yij = 1 thì version j
của module i được mua, ngược lại yij = 0 thì version j của module i không được
mua.
Cho zi là một biến nhị phân, khi zi = 1 thì module i là được phát triển trong
công ty, ngược lại nếu zi = 0 thì module i được mua từ bên ngoài. Số version của

những module i được mua bên ngoài thị trường là ni và mỗi module mua chỉ
mua một version trong số các version của module đó. Từ một module có thể
được phát triển trong công ty hoặc được mua từ bên ngoài thị trường, ta có
. Gọi ri là độ tin cậy của module i được phát triển trong công
ty với chi chí xi, và rij , cij là độ tin cậy và chi phí của một version j của module i.
Do đó, đối với bất kỳ một module phần mềm i nào có độ tin cậy Ri được cho
bởi:

Tương tự, gọi Ci là chi phí để thực hiện một module module i:

Trong trường hợp này bài toán được phát biểu như sau:
Max

(GP1)

S.T.
(GP2)

(GP3)

zi, yij = 0,1 với i =1,…, n; j=1,…,ni

(GP4)

Trong đó:
HVTH: Đặng Thị Thanh Thúy – KHMT.K28

12



Hệ hỗ trợ ra quyết định

Bài toán phân phối



(GP1) cực đại hoá độ tin cậy.



(GP2) đảm bảo tổng các khoảng chi tiêu là không vượt ngân sách.



(GP3) đảm bảo có đúng một module i được phát triển trong công ty

hoặc có duy nhất một version được mua trên thị trường cho module i.
(GP4) đảm bảo các biến yij, zi là các biến nhị phân.
V.
Giải quyết bài toán
V.1. Phân hoạch bài toán
Trong giai đoạn thiết kế phần mềm, những nhà quản lý sẽ ước lượng độ
tin cậy của phần mềm dựa vào chi phí đã cho. Với mục tiêu làm thế nào để phân
phối chi phí giữa việc mua và phát triển các module một cách hợp lý để tạo ra
phần mềm có độ tin cậy mong muốn. Để giải quyết bài toán, tôi xin đề xuất một
giải pháp chia bài toán thành hai bước:


Bước một, phân hoạch bài toán thành hai phần: phần các module mua


và phần các module phát triển trong công ty.


Bước hai, kết hợp hai bài toán lại thông qua đó tìm độ tin cậy lớn nhất

có thể đạt được của phần mềm sao cho không vượt quá giới hạn ngân sách
đã cho.
Lý do để phân hoạch bài toán thành hai phần:


Phần module mua: Các biến trong phần module mua là các biến

nguyên nhị phân (chỉ nhận giá trị: 0 hoặc 1). Hơn nữa theo cơ sở lý thuyết
đã trình bày trong bài toán quy hoạch nguyên có thể dễ dàng thực hiện
cho phần module mua.


Phần module phát triển trong công ty: Các biến trong phần module

phát triển trong công ty là các biến thực. Hàm mục tiêu là một hàm nhiều
biến, các điều kiện ràng buộc là các phương trình phi tuyến. Trong bài
toán quy hoạch phi tuyến cũng có thể dễ dàng thực hiện cho phần module
phát triển trong công ty.
Do vấn đề đặc biệt này, ta có thể phân hoạch bài toán thành hai bài toán con
để giải quyết. Giả sử kinh phí cung cấp cho dự án phần mềm này là B. Ta sẽ
HVTH: Đặng Thị Thanh Thúy – KHMT.K28

13



Hệ hỗ trợ ra quyết định

Bài toán phân phối

trích ra phần B’ để mua các module, phần còn lại B-B’ sẽ được dùng vào việc
phát triển các module trong công ty.
V.2.

Bài toán tối ưu hóa

V.2.1. Bài toán tối ưu hóa các module mua
Nhiệm vụ của bài toán tối ưu hóa các module mua là với chi phí đã cho để
mua các module mua cần phải đảm bảo:


Các module là các module đơn.



Mỗi module phải có ít nhất một version trên thị trường.



Mỗi module phải mua duy nhất một version trong số các version đã có

trên thị trường.


Tổng chi phí để mua các module thoả điều kiện
,


là chi phí của version rẻ và đắt tiền nhất của

module i.
Ta có thể xây dựng bài toán tối ưu hóa các module mua như sau:
Hàm mục tiêu

Với các ràng buộc sau

Trong đó:


rij, cij: Hằng số độ tin cậy và chi phí của version cần mua.



yij: Biến nguyên nhị phân (chỉ nhận giá trị 0 hoặc 1).



m: Số lượng các module mua.

HVTH: Đặng Thị Thanh Thúy – KHMT.K28

14


Hệ hỗ trợ ra quyết định

Bài toán phân phối




ni: Số lượng version của module i.



(P11): Cực đại hoá tổng độ tin cậy của các module mua.



(P12): Đảm bảo tổng các khoảng chi tiêu nằm trong phạm vi ngân

sách phần mua.


(P13): Đảm bảo mỗi module chỉ mua duy nhất một version.



(P14): Đảm bảo các biến đều là biến nhị phân.

V.2.2. Bài toán tối ưu hóa các module phát triển trong công ty
Đặc tính của module phát triển trong công ty:


Các module phát triển trong công ty có thể là các module đơn cũng có

thể là module tích hợp.



Module đơn là những module mua, cũng có thể là các module được

phát triển trong công ty.


Module tích hợp được tích hợp từ các module đơn hoặc từ các module

tích hợp khác.
Dựa vào các đặc tính này kết hợp với các công thức (2.1) và (2.3), và
những yêu cầu đặt ra là tổng chi phí dùng cho việc phát triển phần mềm không
vượt quá giới hạn ngân sách đã cho. Ta có thể xây dựng bài toán tối ưu hóa các
module tự phát triển trong công ty như sau:
Max

(P21)

S.T.

(P22)
xi ≥ xi(0)

(P23)

Trong đó:


Mục tiêu (P21) là cực đại hoá độ tin cậy của hệ thống .




(P22) đảm bảo tổng chi phí sử dụng không vượt quá ngân sách cho

phép.


(P23) đảm bảo tất cả các module phát triển trong công ty đều có độ tin

cậy lớn hơn 0.
HVTH: Đặng Thị Thanh Thúy – KHMT.K28

15


Hệ hỗ trợ ra quyết định

Bài toán phân phối

V.3. Ví dụ minh họa
Ví dụ 1. Giả sử một phần mềm có 2 module mua. Trong đó: Module 1 có
2 version trên thị trường có chi phí c11=5, c12=6 và độ tin cậy tương ứng là
r11=0,7, r12=0,9. Tương tự Module 2 cũng có 2 version trên thị trường với chi
phí và độ tin cậy tương ứng: c21=7, c22=8, r21=0,87, r22=0,95. Tổng chi phí nhà
quản lý cung cấp để mua 2 module là B. Với mục tiêu đưa ra là mỗi module mua
chỉ được mua duy nhất một version trên thị trường, làm thế nào để nhà quản lý
có thể phân phối chi phí cho việc mua các module sao cho có độ tin cậy lớn nhất
mà không vượt quá giới hạn ngân sách quy định.
Dựa vào những dữ kiện đã cho ta xây dựng được bài toán như sau:
Maximize Z = r11y11+ r12y12+r21y21+r22y22
Với các ràng buộc:

c11y11+c12y12+c21y21+c22y22 ≤ B’
y11+y12 = 1
y21+y22 = 1, yij là biến nguyên nhị phân
Ví dụ 2. Một phần mềm A gồm có 6 mudule, lần lượt là (1), (2), (3), (4), (5), (6).
Trong đó: Module (3) và (4) được phát triển trong công ty, (1) và (2) là mua
ngoài, (5) được tích hợp từ (2) và (4), (6) được tích hợp từ (1) -(3) và (5). Tìm
tổng chi phí dùng cho việc phát triển phần mềm không vượt quá giới hạn và có
độ tin cậy cao.
Ta có:


Hai module (3) và (4) là được phát triển trong công ty. Do đó công

thức độ tin cậy của chúng được tính như sau:
r3 =
0
r4 =
0
Trong đó:
HVTH: Đặng Thị Thanh Thúy – KHMT.K28

16


Hệ hỗ trợ ra quyết định



Bài toán phân phối


Còn module (5) và (6) là hai module tích hợp, trong đó module (5)

được tích hợp từ hai module (2) và (4)

r5 =
0
Trong đó:



Còn module (6) được tích hợp từ module (1), (3), (5). Và công thức

tính độ tin cậy của module này cũng là hàm mục tiêu của bài toán phân
phối chi phí cho độ tin cậy phần mềm. Chúng được thực hiện như sau:
Hàm mục tiêu:
Maximize
Với các điều kiện ràng buộc:

Trong đó:



là các giá trị được tìm thấy trong bài toán tối ưu hóa các module mua.



là các chi phí cần thiết để phát triển các module (3), (4), (5),
(6) sao cho phần mềm có độ tin cậy lớn nhất (

đạt giá trị lớn nhất).


 B − B' là chi phí dùng cho các module phát triển trong công ty.
VI.

Kết luận
Bài toán phân phối chi phí cho độ tin cậy phần mềm là một bài toán mở, có

nhiều cách để giải quyết, với nhiều phương pháp đã được đưa ra, trong đó có
HVTH: Đặng Thị Thanh Thúy – KHMT.K28

17


Hệ hỗ trợ ra quyết định

Bài toán phân phối

phương pháp kết hợp quy hoạch nguyên và quy hoạch tuyến tính để giải. Việc giải
quyết bài toán đã đem lại cho chúng ta phương án lựa chọn và phân bổ tài nguyên
một cách hợp lí để đạt được hệ thống phần mềm có chi phí thấp nhất mà độ tin cậy
là cao nhất.
Bài toán phân phối là một trong những bài toán đặc biệt của quy hoạch
tuyến tính. Nó được ứng dụng trong nhiều lĩnh vực, vì vậy việc giải quyết bài toán
mang lại nhiều lợi ích, đóng góp rất lớn trong việc tìm kiếm những giải pháp tối ưu
mà các nhà quản lý đặc biệt quan tâm để xây dựng mạng lưới liên kết, chi nhánh,
phân bổ tài nguyên, sản phẩm sản xuất,…
Ngày nay, Bài toán phân phối được áp dụng rộng rãi trong nhiều lĩnh
vực, đặc biệt là trong nền kinh tế vi mô và vĩ mô nhằm mục đích xác định giải
pháp, cách thức nào tối ưu để có thể đảm bảo được: Đáp ứng nhu cầu một cách
tốt nhất, giảm thiểu chi phí, nguy cơ rủi ro đến mức thấp nhất và đạt lợi nhuận

cao nhất. Xuất phát từ những lý do đó, mà Bài toán phân phối ngày càng được
các nhà quản lý lớn trên thế giới quan tâm.

HVTH: Đặng Thị Thanh Thúy – KHMT.K28

18


Hệ hỗ trợ ra quyết định

Bài toán phân phối

TÀI LIỆU THAM KHẢO
[1] Ðặng Văn Uyên, Quy hoạch tuyến tính, NXB Giáo dục, Hà Nội, 1989.
[2] Jonathan F.Bard “Practical Bilevel Optimization Algorithms and
Applications” Springer 1999, ISBN 0-7923-5458-3
[3] Nguyễn Ðức Nghĩa, Tối ưu hóa (Qui hoạch tuyến tính và rời rạc), NXB
Giáo dục, Hà Nội, 1997 .
[4] Trương Văn Khảng, Qui hoạch tuyến tính, ÐH Kinh tế TP Hồ Chí Minh,
TP Hồ Chí Minh, 1987.
[5] />[6] />
HVTH: Đặng Thị Thanh Thúy – KHMT.K28

19



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×