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

Bài toán chia cắt vật liệu

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 (458.9 KB, 56 trang )

ðồ án tốt nghiệp Bài toán chia cắt vật liệu

GVHD: ðỗ Như An Trang 1


LỜI NÓI ðẦU

Từ trước ñến nay, vấn ñề “chia cắt vật liệu” vẫn luôn mối quan tâm
hàng ñầu trong các ngành sản xuất, các xí nghiệp, các công trình. Sử dụng
nguyên vật liệu sao cho hợp lý, tiết kiệm nhất vì giá thành sản phẩm thấp hay cao
tùy thuộc một phần lớn vào số lượng nguyên liệu ñược dùng ñể chế tạo ra nó.

Bài toán “chia cắt vật liệu” liên quan ñến vấn ñề tối ưu pha cắt. ðể
thực hiện ñược ñiều này ta phải giải bài toán Quy hoạch ñể tìm ra phương án
tối ưu trong các pha cắt nguyên liệu.

Bài toán cơ bản ñã giải quyết ñược yêu cầu cắt vật liệu, ñáp ứng ñủ số
lượng yêu cầu với số lượng lãng phí là thấp nhất.

Tuy nhiên, do trình ñộ và thời gian thực hiện có hạn cũng như sự tiếp
thu vấn ñề chưa tốt nên chương trình còn nhiều hạn chế và sai sót. Vì thế rất
mong sự ñóng góp ý kiến của thầy cô và các bạn ñể ñề tài có ñiều kiện ñược
hoàn thiện tốt hơn trong thời gian tới.

Cuối cùng, em xin chân thành cảm ơn thầy ðỗ Như An ñã tận tình
hướng dẫn em thực hiện ñề tài này.

Nha trang, tháng 12 năm 2007

Sinh viên thực hiện


Võ Thị Chương Nguyệt






ðồ án tốt nghiệp Bài toán chia cắt vật liệu

GVHD: ðỗ Như An Trang 2

MỤC LỤC

LỜI MỞ ðẦU

NỘI DUNG Trang

CHƯƠNG 1: BÀI TOÁN CHIA CẮT VẬT LIỆU

1. Tìm hiểu thực tế bài toán chia cắt vật liệu (tại các cơ sở kinh doanh
vật liệu, các ñơn vị thi công công trình). 3

2. Mô hình toán học của bài toán chia cắt vật liệu 5

3. Phương pháp giải bài toán chia cắt vật liệu

3.1. Lý thuyết phương pháp sinh cột

3.1.1. Lý thuyết về quy hoạch ñộng 8


3.1.2. Bài toán xếp ba lô 18

3.1.3. Phương pháp sinh cột 24

3.2. Ví dụ bài toán sinh cột 27

4. Sơ ñồ thuật toán giải bài toán chia cắt vật liệu 42


CHƯƠNG 2: CÀI ðẶT BÀI TOÁN CHIA CẮT VẬT LIỆU

1. Tổ chức dữ liệu 43

.2. Các chức năng, giao diện của chương trình 45

KẾT LUẬN 47

PHỤ LỤC 48

TÀI LIỆU THAM KHẢO 55

NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN 56



ðồ án tốt nghiệp Bài toán chia cắt vật liệu

GVHD: ðỗ Như An Trang 3
CHƯƠNG 1
BÀI TOÁN CHIA CẮT NGUYÊN LIỆU


1. Tìm hiểu thực tế bài toán chia cắt vật liệu (tại các cơ sở kinh doanh
vật liệu, các ñơn vị thi công công trình)


Trong thực tế có rất nhiều trường hợp bài toán chia cắt nguyên liệu (thanh
thép, ống nước, băng giấy…) ñược ñặt ra dưới hình thức sau:
Có những thanh (hoặc tấm, hoặc khối) nguyên liệu cùng ñộ dài L (hoặc
diện tích S, hoặc thể tích V) cần phải pha cắt thành những thanh ngắn hơn, có ñộ
dài l
1
, , l
i
, l
m
(hoặc những tấm nhỏ hơn có diện tích s
1, …
, s
i
, , s
m
hoặc những
khối bé hơn có thể tích v
1
, , v
i
, , v
m
)


với số lượng cần thiết b
1
, , b
i
, , b
m
.
Hãy tìm phương án cắt sao cho tiết kiệm nguyên vật liệu nhất. Các bài
toán thuộc loại này thường ñược giải qua 2 giai ñoạn:
1) Tìm ra các mẫu cắt tối ưu khi cắt một thanh (tấm, khối) nguyên liệu. Mỗi
mẫu (pha) cắt thanh (tấm, khối) ñược dự kiến phải thỏa mãn 2 ñiều kiện:
a) Phần nguyên liệu dư trên mỗi thanh (tấm, khối) không thể dùng ñể
cắt thêm bất kì một thanh (tấm, khối) nhỏ hơn theo kích thước ñã qui ñịnh.
b) Cách pha cắt dự kiến có thể mang thực hiện trong thực tế.
2) Tính toán xem với các mẫu cắt tối ưu ở trên thì dự kiến phải dùng bao
nhiêu thanh (tấm, khối) nguyên liệu ñể:
a) Số sản phẩm thu ñược ñáp ứng nhu cầu về số lượng ñã ñòi hỏi.
b) Tổng số thanh (tấm, khối) nguyên liệu ñã sử dụng là nhỏ nhất.

Hiện nay, tại các cơ sở kinh doanh vật liệu xây dựng nói chung và cụ thể
là tại cơ sở kinh doanh vật liệu xây dựng ”Việt Hùng” nói riêng, việc kinh doanh
vật xây dựng ñặc biệt là sắt thép vẫn còn ñược tính toán, mua bán theo lối thủ
công. Với vật liệu là thép cuộn, thường thì cửa hàng sẽ bán theo kí với các quy
cách sau (loại
φ
= 6, 1m = 4.5454kg, loại
φ
= 8, 1m = 2.5609), còn lại bao nhiêu
thì ñể ñó, tiếp tục bán cho các khách hàng sau.





ðồ án tốt nghiệp Bài toán chia cắt vật liệu

GVHD: ðỗ Như An Trang 4
Nếu vật liệu là thép cây, khách hàng buộc phải mua thép nguyên thanh
với kích thước chuẩn là 11.75m và sau ñó tùy theo yêu cầu mà người sử dụng cắt
ngắn hay dài cho phù hợp. Sau khi mua về, việc tính toán ñể cắt chủ yếu vẫn
ñược thực hiện bằng tay, và dựa vào khả năng kinh nghiệm của người dùng.

Với các ñơn vị thi công công trình, việc ñọc bản thiết kế và hướng dẫn
thợ xây dựng do kỹ sư xây dựng ñảm nhiệm. Kỹ sư xây dựng là người trực tiếp
tính toán và hướng dẫn thợ cắt thép theo yêu cầu. Trên thực tế, khi nhà sản xuất
ñưa ra một mẫu thép với kích thước cố ñịnh thì kích thước ñó thường là kích
thước chuẩn, ñã ñược tính toán kĩ lưỡng trong lĩnh vực xây dựng. Vì vậy, kích
thước của những thanh thép thừa thường không ñáng kể, còn nếu kích thước
thừa lớn thì trong xây dựng ñã có một bảng thống kê cốt thép ứng với các loại
kích thước từ lớn ñến bé, căn cứ vào ñó mà ta tận dụng.























ðồ án tốt nghiệp Bài toán chia cắt vật liệu

GVHD: ðỗ Như An Trang 5
2. Mô hình toán học của bài toán chia cắt vật liệu

Giả sử có các cách cắt nguyên liệu thanh nằm trong dự kiến là P
j
(j = 1, 2, ,
n) và các cách cắt P
j
cho ta a
ij
sản phẩm loại i (có ñộ dài l
i
) trên mỗi ñơn vị
nguyên liệu thanh nằm trong dự kiến là p
j
(1, 2, , n) và cách cắt p
j

cho ta a
ij
sản
phẩm loại i (có ñộ dài l
i
) trên mỗi ñơn vị nguyên liệu có ñộ dài L.

P
1
P
j
P
n
Yêu cầu

Số sản phẩm loại 1 a
11
a
jj
a
in
b
1
. . . . . . . . . . . . . . . . . . . . . . . . . . .
Số sản phẩm loại i a
i1


a
ij

a
in
b
j

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Số sản phẩm loại m a
m1
a
mj
a
mn
b
m

Số ñơn vị nguyên liệu x
1
. . . x
i
. . . x
n


Nếu gọi x
j
là số ñơn vị nguyên liệu thanh cần cắt theo cách Pj thì vấn ñề là
phải tìm hệ thống số x
j
làm cực tiểu hóa f = x
1

+ + x
n
=
jx
j

với
x
j
≥ 0 (j = 1, 2, , n) và thỏa mãn hệ:
a
i1
x
1
+ + a
ij
+ +a
jn
x
n
= b
i
(i = 1, 2, , n)

Trong ñó f là tổng số nguyên liệu sử dụng trong phương án và mỗi phương
trình ràng buộc có ý nghĩa là số sản phẩm loại i phải thỏa mãn yêu cầu về số
lượng b
j
ñã qui ñịnh.


Ở ñây mỗi cách cắt Pj ñược ñặc trưng hoàn toàn bởi vectơ cột (a
1j
a
ịj

a
mj
) còn toàn bộ yêu cầu về các sản phẩm thì ñược dặc trưng bởi vectơ cột:

P
0
= (b
1
b
j
b
m
)

Như vậy sau khi dự kiến các cách pha cắt một ñơn vị nguyên liệu thì ta phải
giải một bài toán ñơn hình ñể tìm phương án tối ưu. Cần nhận rõ tính chất tương
ñối của phương án tối ưu: ở ñây tối ưu là trong phạm vi những cách pha cắt
P
1
P
j
P
n
ñã dự kiến. Ví dụ nếu có một cách pha cắt P
n+1

nào ñó khá hay thì
(theo nghĩa phần nguyên liệu phế phẩm rất hạn chế) thì phương án tối ưu xây
dựng trên các pha cắt dự kiến P
1
, P
n
, P
n+1
có nhiều triển vọng sẽ tốt hơn
phương án tối ưu xây dựng trên P
1
, P
j
, , P
n
. Do ñó vấn ñề dự kiến ñược ñầy
ðồ án tốt nghiệp Bài toán chia cắt vật liệu

GVHD: ðỗ Như An Trang 6
ñủ các cách pha cắt một ñơn vị nguyên liệu là rất quan trọng, còn việc giải bài
toán ñơn hình chỉ là một biện pháp kỹ thuật về phương diện toán học nhằm tổ
hợp các pha cắt ñã dự kiến ñể lập nên phương án tối ưu.

Ví dụ.

Một phân xưởng cốt thép có những thanh thép nguyên dài 3.8m, cần cắt 400
ñoạn dài 1.8m, 200 ñoạn dài 1.4m và 350 ñoạn dài 1.0m. Hãy lập phương án cắt
sao cho số sắt thừa là ít nhất.

Có 6 mẫu cắt khác nhau như trong bảng dưới ñây


Mẫu cắt
Loại
1 2 3 4 5 6
Số
ñoạn
cần cắt

1.8m 2 1 1 0 0 0 400
1.4m 0 1 0 2 1 0 200
1.0m 0 0 2 1 2 3 350
Phần
thừa
0.2m 0.6m 0 0 0.4m 0.8m


Gọi x
j
(j=1, , 6) là số lượng thanh thép nguyên cần cắt theo mẫu j (j= 1, …, 6).
Khi ñó, số ñoạn loại 1.8m thu ñược là 2x
1
+ x
3
+ x
5
. Vì thế,

2x
1
+ x

2
+ x
3
= 400

Tương tự với số ñoạn loại 1.4m và 1.0m tương ứng:
x
2
+ 2x
4
+ x
5
= 200
2x
3
+ x
4
+ 2x
5
+ 3x
6
= 350

Tổng số thép thừa bằng f = 0.2x
1
+ 0.6x
2
+ 0.4x
5
+ 0.8x

6
(m). Từ ñó ta
ñược mô hình toán học của bài toán: Xác ñịnh các số nguyên x
1
, x
2
, x
3
, x
4
, x
5
,
x
6
sao cho




ðồ án tốt nghiệp Bài toán chia cắt vật liệu

GVHD: ðỗ Như An Trang 7
f = 0.2x
1
+ 0.6x
2
+ 0.4x
3
+ 0.8x

6


min









=≥
=+++
=++
=++
5,6 4, 3, 2, ,1,0
350322
20022
4002
6543
542
321
jx
xxxx
xxx
xxx
j







































ðồ án tốt nghiệp Bài toán chia cắt vật liệu

GVHD: ðỗ Như An Trang 8
3. Phương pháp giải bài toán chia cắt vật liệu
3.1. Lý thuyết phương pháp sinh cột
3.1.1. Lý thuyết quy hoạch ñộng

Quy hoạch ñộng là một trong những phương pháp tối ưu hiện ñại mạnh mẽ.
ðối tượng của quy hoạch ñộng là các quá trình nhiều bước nói chung và các quá
trình tiến triển theo thời gian nói riêng.

Sự xuất hiện của quy hoạch ñộng gắn liền với tên tuổi của nhà bác học Mỹ
R. Bellman mà trong những năm 50 của thế kỷ này ñã áp dụng cho một loạt các
bài toán thực tế, một công cụ mà sau này gọi là nguyên tắc tối ưu. Chính nhờ tính
ñơn giản và tính tường minh của nguyên tắc này mà phương pháp quy hoạch
ñộng tỏ ra ñặc biệt hấp dẫn.

Bên cạnh nguyên tắc tối ưu, nguyên tắc quan trọng thứ hai là nguyên tắc
lồng bài toán tối ưu ñang xét vào một họ các bài toán tương tự và việc áp dụng
nguyên tắc tối ưu và nguyên tắc lồng dẫn ñến các phương trình hàm truy toán
(hồi) ñối với giá trị tối ưu của tiêu chuẩn chất lượng. Những phương trình thu
ñược cho phép lần lượt viết ra các ñiều khiển tối ưu cho bài toán xuất phát. Cái
hay ở ñây là bài toán tính toán ñiều khiển cả quá trình chia ra thành một dãy các
bài toán tính toán ñiều khiển ñơn giản hơn cho các giai ñoạn của quá trình.


Phương pháp quy hoạch ñộng dùng ñể giải bài toán tối ưu có bản chất ñệ
quy, tức là việc tìm phương án tối ưu cho bài toán ñó có thể ñưa về tìm phương
án tối ưu của một số hữu hạn các bài toán con.

Ðối với một số bài toán ñệ quy, nguyên lý chia ñể trị (divide and conquer)
thường ñóng vai trò chủ ñạo trong việc thiết kế thuật toán. Ðể giải quyết một bài
toán lớn, ta chia nó thành nhiều bài toán con cùng dạng với nó ñể có thể giải
quyết ñộc lập.

Trong phương án quy hoạch ñộng, nguyên lý này càng ñược thể hiện rõ:
Khi không biết phải giải quyết những bài toán con nào, ta sẽ ñi giải quyết toàn bộ
các bài toán con và lưu trữ những lời giải hay ñáp số của chúng với mục ñích sử
dụng lại theo một sự phối hợp nào ñó ñể giải quyết những bài toán tổng quát hơn.
ðồ án tốt nghiệp Bài toán chia cắt vật liệu

GVHD: ðỗ Như An Trang 9
Ðó chính là ñiểm khác nhau giữa quy hoạch ñộng và phép phân giải ñệ quy
và cũng là nội dung phương pháp quy hoạch ñộng:

 Phép phân giải ñệ quy bắt ñầu từ bài toán lớn phân ra thành nhiều bài
toán con và ñi giải từng bài toán con ñó. Việc giải từng bài toán con lại ñưa
về phép phân ra tiếp thành nhiều bài toán nhỏ hơn và lại ñi giải các bài toán
nhỏ hơn ñó bất kể nó ñã ñược giải hay chưa.

 Quy hoạch ñộng bắt ñầu từ việc giải tất cả các bài toán nhỏ nhất (bài toán
cơ sở) ñể từ ñó từng bước giải quyết nhưng bài toán lớn hơn, cho tới khi
giải ñược bài toán lớn nhất (bài toán ban ñầu).

Bài toán giải theo phương pháp quy hoạch ñộng gọi là bài toán quy

hoạch ñộng.

Công thức phối hợp nghiệm của các bài toán con ñể có nghiệm của bài toán
lớn gọi là công thức truy toán (hồi) của quy hoạch ñộng.

Tập các bài toán có ngay lời giải ñể từ ñó giải quyết các bài toán lớn hơn
gọi là cơ sở quy hoạch ñộng.

Không gian lưu trữ lời giải các bài toán con ñể tìm cách phối hợp chúng gọi
là bảng phương án của quy hoạch ñộng.

Lĩnh vực áp dụng của Quy hoạch ñộng rất rộng: các quá trình kỹ thuật công
nghiệp, tổ chức sản xuất, kế hoạch hoá kinh tế, các vấn ñề khác nhau của vật lý,
sinh vật và quân sự.

3.1.1.1. Phương pháp phương trình truy toán và các nguyên tắc cơ bản của
quy hoạch ñộng

3.1.1.1.1. Bài toán phân phối một chiều và phương pháp phương trình truy toán

a). Bài toán phân phối

Trong thực tế có nhiều tài nguyên khác nhau: nhân công, tiền, máy, nhiên
liệu… Mỗi tài nguyên có thể sử dụng theo nhiều cách và cho nhiều hiệu quả khác
nhau. Vấn ñề ñặt ra là cần phân phối tài nguyên ñó thế nào ñể hiệu quả sử dụng
tổng cộng là lớn nhất.
ðồ án tốt nghiệp Bài toán chia cắt vật liệu

GVHD: ðỗ Như An Trang 10
Ta xét quá trình phân phối một tài nguyên. Có một tài nguyên trữ lượng a.

Có N cách sử dụng. Nếu sử dụng x
i
ñơn vị theo cách thử i (i = 1, 2…N) thì sẽ
ñược hiệu quả ño bằng hàm
)(
ii
x
ϕ
. Hãy quy ra số ñơn vị x
i
cần dùng theo mỗi
cách i ñể tổng hiệu quả là lớn nhất.

Mô hình bài toán có dạng:

Max
=

=
N
i
ii
x
1
)(
ϕ
max R(x
1
, x
2

,…, x
n
) (1.1)






=≥
=

=
)3.1(N1,i ,0
(1.2)
N
1i
x
ax
i

x
i

)(
ii
x
ϕ
thường ñược biểu hiện bởi những ñơn vị ño khác nhau :
chẳng hạn x

i
là nhiên liệu thì
)(
ii
x
ϕ
là tốc ñộ ; x
i
là tiền thì
)(
ii
x
ϕ
là máy, ñộ tin
cậy. ðộ lớn của hiệu quả phụ thuộc vào số lượng tài nguyên sử dụng (a) và vào
quá trình ñược chọn lựa (N).

b). Phương pháp phương trình truy toán (hồi)

ðể nghiên cứu bài toán trên, ta lồng nó vào một họ các quá trình phân phối
nào ñó. Thay cho một bài toán với số lượng tài nguyên a cho trước và số cách sử
dụng N cố ñịnh, ta xét một họ các bài toán như vậy, trong ñó a và N thay ñổi, tức
là ta chuyển quá trình tĩnh thành ñộng.

Vì cực ñại của hàm R(x
1
, x
2
, x
N

) chỉ phụ thuộc vào a và N, ta gọi trị tối ưu
của bài toán là f
N
(a) thì

f
N
(a) = max R(x
1
, x
2
, x
N
)

Trong ñó x
i
thoả mãn (1.2) và (1.3). Khi N thay ñổi ta hãy tìm mối liên hệ
giữa các hàm f
N
(a). Vì ở ñây ta biết ngay f
1
(a) =
)(
1
a
ϕ
nên có thể nói rõ hơn là:
biết
)(

1
a
ϕ
với a thay ñổi, hãy tìm mối liên hệ giữa f
2
và f
1
,…, f
N
và f
N-1
?

Giả sử x
N
: 0
ax
N
≤≤
là lượng tài nguyên quyết ñịnh ñối với quá trình thứ N.
Khi ñó bất kỳ x
N
như thế nào, số lượng còn lại a-x
N
sẽ ñược sử dụng ñể sao cho
nhận ñược thu nhập tối ưu của N-1 quá trình theo ñịnh nghĩa là f
N-1
(a-x
N
) nên sự

quyết ñịnh x
N
cho quá trình thứ N ñi ñến thu nhập tổng cộng ñối với N quá trình:
ðồ án tốt nghiệp Bài toán chia cắt vật liệu

GVHD: ðỗ Như An Trang 11


+)(
NN
x
ϕ
f
N-1
(a-x
N
)

Phương trình truy toán là:

f
N
(a) = max R(x
1
, x
2
,…, x
N
)=








=≥
=

=
Nix
a
N
i
,1,0
1


= max [ max R(x
1
, x
2
,…, x
N
)] =

ax
N
≤≤0









−=≥
−=


=
1,1,0
1
1
Nix
xa
N
i
N

= max [
+)(
NN
x
ϕ
max


=

1
1
)(
N
i
ii
x
ϕ
]

ax
N
≤≤
0









−=≥
−=


=
1,1,0
1

1
Nix
xa
N
i
N


Ta suy ra

f
N
(a) = max {
)()(
1 NNNN
xafx −+

ϕ
}, N=2, 3, ; 0
ax
N
≤≤


Như vậy ta ñã ñược bài toán cực trị của N biến về N bài toán cực trị 1 biến
và phương trình (1.4) gọi là phương trình truy toán (hồi) của quy hoạch ñộng. ðó
là ý cơ bản của phương pháp quy hoạch ñộng giải bài toán cực trị bằng phương
pháp truy toán.

Biết f

1
(a) =
)(
1
a
ϕ
, dựa vào phương trình truy toán (1.4) ta tìm ra ñược f
2
(a), sau
ñó lại thay f
2
(a) vào (1.4) ta tìm ñược f
3
(a) cứ như vậy cho tới khi tìm ñược f
N
(a).

Cơ sở của việc làm này là nguyên tắc tối ưu tổng quát mà ta xét trong mục
1.2 sau ñây.


ðồ án tốt nghiệp Bài toán chia cắt vật liệu

GVHD: ðỗ Như An Trang 12
3.1.1.1.2. Các nguyên tắc cơ bản của quy hoạch ñộng

(1). Nguyên tắc ñánh số các giai ñoạn từ dưới lên

ðối với giai ñoạn cuối có thể làm cho nó tốt nhất mà không lo hậu quả.
Khi ñó giai ñoạn này trở nên ổn ñịnh và ta có thể xét giai ñoạn ở trước

nó và cứ tiếp tục cho tới lúc ta ñi ñược tới giai ñoạn ñầu của quá trình.

(2). Nguyên tắc thông số hoá bài toán

Ở giai ñoạn sát giai ñoạn cuối cùng, ta chưa biết kết quả nên ta phải ñặt
giả thiết cho giai ñoạn này rồi ứng với giả thiết ñó ta tìm ñiều khiển tối
ưu cho giai ñoạn cuối cùng. Ở các bước khác, tình hình cũng diễn ra như
vậy. Do ñó, quá trình ñiều khiển tối ưu sẽ phụ thuộc vào các thông số
ñặc trưng cho kết quả ở bước trước.

(3). Nguyên tắc lồng

Lồng bài toán ban ñầu vào một bài toán rộng hơn hay một họ các bài
toán, và do ñó bài toán ban ñầu là một trường hợp riêng của họ bài
toán này. Họ bài toán này nhờ có các thông số nên ta giải ñược, ta sẽ thử
kết quả của bài toán với các thông số khác nhau cho tới một lúc ñược
thông số ứng với bài toán xuất phát thì dừng lại.

(4). Nguyên tắc tối ưu Bellman

Dáng ñiệu tối ưu có tính chất là: dù trạng thái ban ñầu và ñiều khiển ban
ñầu có dạnh như thế nào thì ñiều khiển tiếp theo cũng là tối ưu ñối với
trạng thái thu ñược trong kết quả tác ñộng nhựng ñiều khiển ban ñầu.








ðồ án tốt nghiệp Bài toán chia cắt vật liệu

GVHD: ðỗ Như An Trang 13
3.1.1.2. Quá trình nhiều giai ñoạn và phương trình hàm

3.1.1.2.1. Quá trình nhiều giai ñoạn

Xét một quá trình gồm n giai ñoạn và bắt ñầu ñánh số từ giai ñoạn cuối.

ðể xác ñịnh một quá trình n giai ñoạn cần 6 yếu tố:

1. Véctơ trạng thái

Giả sử véctơ trạng thái sản phẩm tham gia vào quá trình ở giai ñoạn (n) chính
là trạng thái ban ñầu của quá trình là P(n) = (P
1
(n),…, P
s
(n)).
Khi giai ñoạn n kết thúc ta nhận ñược véctơ trạng thái
P(n-1) = (P
1
(n-1),…, P
s
(n-1)).
Có thể gọi trạng thái ban ñầu của giai ñoạn n-1

2. Véctơ ñiều khiển

ðối với giai ñoạn n, trạng thái thu ñược P(n-1) không chỉ phụ thuộc vào trạng

thái ban ñầu P(n) mà còn phụ thuộc vào véctơ ñiều khiển.
q(n) = (q
1
(n),…, q
r
(n))
Hệ véctơ (q(n), q(n-1),…, q(1)), gọi là một chiến lược.

3. Phương trình của quá trình

Nếu P(k) và q(F) ñã xác ñịnh và chọn thì ta thu ñược trạng thái xác ñịnh P(k-
1). Có mối quan hệ hàm.
P(k-1) = T[P(K), q(K)]; k = 1 N



n 2 k 1




q(n)

q(k)

q(2)

q(1)

P(n)


P(n-1)
P(k)

P(k-1) P(2)

P(1)

P(0)

ðồ án tốt nghiệp Bài toán chia cắt vật liệu

GVHD: ðỗ Như An Trang 14
4. Ràng buộc của quá trình

Ngoài phương trình trên P(k) và q(k) còn phải thoả các ràng buộc của quá trình:
R
1
(P(n),…, P(0); q(n),…, q(1))

0; i = 1 m

5. Hàm mục tiêu của quá trình

Ký hiệu hàm mục tiêu của quá trình là:
f (P(n),…, P(0); q(n)…q(1))

Trong nhiều trường hợp hàm mục tiêu có dạng



=
n
k
k
kqkPg
1
))(),((


6. Các thông số của quá trình

Là những hằng số xác ñịnh quá trình. Nếu xác ñịnh chính xác các thông số thì
có thể xác lập ñược mối quan hệ giữa chiến lược tối ưu và quá trình và do ñó
có thể nhận biệt 2 quá trình có cùng một họ hay không? Nếu chúng cùng họ
thì ta có thể dựa trên chiến lược tối ưu của quá trình trên mà suy ra chiến lược
tối ưu của quá trình sau.

3.1.1.2.2. Xây dựng phương trình hàm

Ký hiệu f
k
(P(k)) là thu nhập tối ña của k giai ñoạn, nếu trạng thái vào là
P(k) và dùng chiến lược tối ưu.

Chia quá trình k giai ñoạn ra thành 2 phần: giai ñoạn k và k-1 giai ñoạn
còn lại và giả sử k-1 giai ñoạn còn lại ñược ñiều khiển tối ưu.

Ký hiệu g
k
(P(k), q(k)) là thu nhập ở giai ñoạn k.


Áp dụng nguyên tắc tối ưu ta có thể lập luận như sau.

Dùng ñiều khiển q(k) nào ñó cho giai ñoạn k thì thu thập của k giai ñoạn là

g
k
(P(k), q(k)+ f
k-1
(P(k-1)))
ðồ án tốt nghiệp Bài toán chia cắt vật liệu

GVHD: ðỗ Như An Trang 15
nhưng theo phương trình của quá trình

P(k-1) = T(P(k), q(k))

Vì vậy có thể viết thu thập của cả k giai ñoạn là

g
k
(P(k), q(k)) + f
k-1
[T(P(k), q(k)] (2.1)

Chọn q(k) sao cho ñạt max của (2.1), nhưng max của (2.1) chính là f
k
(P(k)).

Do ñó ta có


f
k
(P(k)) = max
)(kq
{g
k
(P(k)), q(k) + f
k-1
[T(P(k), q(k))]} (2.2)

Phương trình (2.2) gọi là phương trình hàm của quy hoạch ñộng.

Cho f
0
(P(0))

0 thì từ (2.2) ta xác ñịnh ñược f
1
(P(t)), t = 1, 2,… ðến khi ta
nhận ñược f
n
(P(n)) thì bài toán ñược giải xong.

3.1.1.3. Sơ ñồ tính

Việc giải tối ưu bài toán QHð dựa vào phương trình hàm (2.2)
1. Bước 1

Viết phương trình hàm cho trạng thái cuối cùng của quá trình gọi f

1
(P(1))
là giá trị cực ñại của hiệu quả ở bước này.

f
1
(P(1)) = max {g
1
(P(1), q(1) + f
0
(P(0)) }

q(1)

Tìm g
1
(P(1), q(1)) từ bộ rời rạc các giá trị của nó với một số các giá trị xác
ñịnh của P(1) và q(1) từ miền chấp nhận ñược tương ứng. Vì rằng f
0
(P(0)) = 0
(hiệu quả không có nữa vì quá trình ñã kết thúc) nên

f
1
(P(1)) = max g
1
(P(1), q(1))

q(2)



ðồ án tốt nghiệp Bài toán chia cắt vật liệu

GVHD: ðỗ Như An Trang 16
Trong kết quả sau bước ñầu tiên ta biết ñược nghiệm
q
(1) và giá trị tương
ứng của hàm mục tiêu là f
1
(P(1)).

2. Xét bước thứ 2

Gọi f
2
(P(2)) là giá trị cực ñại của hiệu quả trong cả 2 bước 1 và 2 với trạng
thái P(1) ở ñầu bước 2 và với quyết ñịnh q(1). Lúc ñó
f
2
(P(2)) = max {g
2
(P(2), q(2)) + f
1
(P(1))}
q(2)

3. Tiếp tục quá trình tới n

Ta có f
n

(P(n)) là giá trị tối ưu
Lưu ý: việc ký hiệu trạng thái P(k) có thể tùy từng bài toán






















ðồ án tốt nghiệp Bài toán chia cắt vật liệu

GVHD: ðỗ Như An Trang 17
3.1.2. Bài toán xếp ba lô

3.1.2.1. Giới thiệu bài toán xếp ba lô


Bài toán xếp ba lô là một bài toán tối ưu tổ hợp. Bài toán ñược ñặt tên từ
vấn ñề chọn những gì quan trọng có thể nhét vào trong một cái túi (với giới hạn
khối lượng) ñể mang theo trong một chuyến ñi. Các bài toán tương tự thường
xuất hiện trong kinh doanh, toán tổ hợp, lý thuyết ñộ phức tạp tính toán, mật mã
học và toán ứng dụng.

Phát biểu bài toán

Ta có n loại ñồ vật, x
1
tới x
n
. Mỗi ñồ vật x
j
có một giá trị p
j
và một khối lượng w
j
.
Khối lượng tối ña mà ta có thể mang trong ba lô là C.



 Bài xếp ba lô 0-1 hạn chế số ñồ vật mỗi loại là 0 hoặc là 1.
Bài xếp ba lô 0-1 có thể phát biểu bằng toán học như sau:
Cực ñại hóa

=
n

j
jj
xp
1


Sao cho

=

n
j
jj
cxw
1
, x
j
= 0 hoặc 1, j = 1…n

Ví dụ.
Với: p
j
= 0.5, 1, 0.2;
w
j
= 2, 3, 1;
c = 5;
Ta có bài toán xếp ba lô 0-1 như sau:






==
≤++
→++
3 1,j1,or 0
532
max2.05.0
321
321
j
x
xxx
xxx






ðồ án tốt nghiệp Bài toán chia cắt vật liệu

GVHD: ðỗ Như An Trang 18


 Bài xếp ba lô bị chặn hạn chế số ñồ vật thuộc mỗi loại không ñược vượt quá
một lượng nào ñó.
Bài xếp ba lô bị chặn có thể phát biểu bằng toán học như sau:
Cực ñại hóa


=
n
j
jj
xp
1


Sao cho

=

n
j
jj
cxw
1
, 0
,bjx
j
≤≤
j = 1 n
Ví dụ.
Với: p
j
= 0.5, 1, 0.2;
w
j
= 2, 3, 1;

c = 5;

Ta có bài toán xếp ba lô 0-1 như sau:















≤++
→++
53
12
21
5312312
32.0215.0
XS
XS
XS
XSXSXS
MAXXSXSXS



 Bài toán ba lô không bị chặn không có một hạn chế nào về số lượng ñồ vật
mỗi loại

Một trường hợp ñặc biệt của bài toán này nhận ñược nhiều quan tâm, ñó là
bài toán với các tính chất :
 Là một bài toán quyết ñịnh
 Là một bài toán 0-1
 Với mỗi ñồ vật, chi phí bằng giá trị : C = V

Lưu ý rắng, trong trường hơp ñặc biệt này, bài toán tương ñương với:
 Cho một tập các số nguyên, tồn tại hay không một tập con có
tổng ñúng bằng C?

Nếu ñồ vật ñược phép có chi phí âm và C ñược chọn bằng 0, bài toán có dạng:
 Cho trước một tập các số nguyên, tồn tại hay không một tập con
có tổng ñúng bằng 0 ?

ðồ án tốt nghiệp Bài toán chia cắt vật liệu

GVHD: ðỗ Như An Trang 19
3.1.2.1.2. Bài toán xếp ba lô sử dụng Quy hoạch ñộng

ðể giải bài toán chia cắt vậ liệu sử dụng phương pháp sinh cột, chúng ta cần
giải quyết bài con là : Bài toán xếp ba lô. Bài toán này ñược công thức hóa như
sau :
Cực ñại hoá Z =

=

m
i
ii
XSPI
1

Sao cho

=

m
i
ii
LXSW
1

XSi

integer

Trong ñó W
i
là kích thước yêu cầu, PI
i
là giá trị ñối ngẫu, biến XS
i
ñại diện
cho: với kích thước yêu cầu thì một thanh thép nguyên cắt ñược bao nhiều phần
trong từng mẫu, L là chiều dài của thanh thép nguyên.


Một khi bài toán xếp ba lô ñược giải quyết, biến XS
i
ñại diện cho số các
chiều dài theo yêu cầu ñi kèm trong mẩu mới. Nếu giá trị Z<1, vấn ñề ñược giải
quyết, ngược lại, mẫu mới sẽ ñược thêm vào ñể tiếp tục giải bài toán chính.

Trong quy hoạch ñộng, phương pháp mà chúng ta tiếp cận không phải là
bằng trực giác. Mà chúng ta tìm ra cách kết hợp tốt nhất những ñối tượng ñể cho
vào túi bằng với kích thước M.

ðiều này có thể ñược làm rất hiệu quả và ñược chứng minh qua ñoạn
chương trình sau (giả tiết rằng chúng ta có một số hữu hạn các ñồ vật với trọng
lượng và giá trị lần lượt là (size) và (value), thuộc tính trọng lượng và giá trị này
ñược lưu trong một mảng)

for j:=1 to N do {Xét từng ñồ vật}
for i := 1 to M do begin {Ứng với từng kích thước của túi}
if i >= size[j] then
if (cost[i] < cost[i-size[j]] + value[j]) then
begin
cost[i] := cost[i-size[j]] + value[j];
best[i] := j
end;

ðồ án tốt nghiệp Bài toán chia cắt vật liệu

GVHD: ðỗ Như An Trang 20
Cost[i] là giá trị cao nhất có thể ñược lưu trữ trong túi ứng với trọng lượng i,
và ñược khởi tạo giá trị ban ñầu là 0, best[i] là vật cuối cùng ñược xếp thêm vào
và khi ñó kích thước lưu trữ là cực ñại.


ðầu tiên, chỉ xét ñồ vật thứ nhất (j = 1) ñể tìm ra “best”. Sau ñó, chúng ta
tính “best” dựa trên các ñồ vật thứ 1, thứ 2 (sử dụng kết quả của loại 1), và cứ
tiếp tục như vậy.
Việc tính lại giá trị “cost” khi xem xét một ñồ vật mới rất ñơn giản. Chúng
ta có thể tìm ra giá trị (cost) của một vật bằng cách lấy ra những phương án ñã
xét trước ñó. Nếu chúng ta giành ra ñược không gian trống ñủ chổ ñể chứa ñồ vật
mới (cost[i-size[j]) và rằng nếu giá trị thêm vào giá trị của vật mà chúng ta ñang
xem xét ñể ñưa vào lớn hơn giá trị ban ñầu (chỉ với những ñồ vật cũ) thì việc
thay thế các ñồ vật cũ này bằng cái mới là giải pháp tối ưu và yếu tố giá trị (cost)
chứng minh ñiều ñó.
Ví dụ. Một ba lô kích thước M, và 3 loại ñồ vật với kích thước và giá trị ñược
cho ở bảng dưới ñây. Tìm những ñồ vật nào ñể cho vào túi sao cho giá trị ñạt
ñược là cực ñại.

Các ñồ vật ñược cho các kích thước và giá trị như sau:
M = 4

ðồ vật Kích thước Giá trị
1 3 6
2 2 5
3 1 2

1. ðầu tiên, ta xét ñồ vật thứ 1.

Khi túi chỉ có kích thước là 1 hoặc 2 thì ñồ vật thứ 1 này sẽ không bỏ vừa
vào túi. Khi túi có kích thước là 3, túi có thể ñựng vừa 1 ñồ vật thứ 1 và khi ñó
cost[3]<cost[0]+value[1], 1 ñồ vật thứ 1 ñược ñưa vào túi.
Lúc này cost[3] = 6; best[3] = 1. Khi túi có kích thước là 4, cost[4] < cost[1] +
value[1], ứng với kích thước này, ta cũng có 1 vật thứ 1 trong túi và cost[4] = 6;

best[4] = 1

ðồ án tốt nghiệp Bài toán chia cắt vật liệu

GVHD: ðỗ Như An Trang 21
2. Tiếp theo, ta xem xét ñồ vật thứ 2.

Khi túi có kích thước là 1, nó sẽ không ñựng vừa ñồ vật thứ 2 (với kích
thước là 2). Khi túi có kích thước là 2, chúng ta kiểm tra (cost[2] < cost[0] +
value[2]). Trường hợp này rất rõ ràng (vì cost[2] = 0, túi không chứa vừa ñồ vật
thứ 1) vì vậy cost[2] =5, best[2] =2.
Tuy nhiên, khi túi có kích thước là 3, túi có thể chứa vừa ñồ vật thứ 1. Vì vậy
việc kiểm tra cost[3] < cost[1]+value[2] – sai. (nên cost[3] = 6, best[3] = 1)
Khi túi có kích thước 4, chúng ta kiểm tra xem (cost[4]<cost[2]+value[2]). Lúc
này cost[4] = 6, trong khi cost[2] = 5, value[2] = 5, việc kiểm tra là ñúng. ðiều
này có nghĩa là ta phải thay ñổi vật ñã ñưa vào trước ñó bằng ñồ vật thứ 2. Lúc
này, ta có cost[0] = 0, cost[1] = 0, cost[2] = 5, best[2] = 2, cost[3] = 6, best[3] =
1, cost[4] = 10, best[4] = 2.

3. Xét ñồ vật thứ 3

Khi túi có kích thước là 1 thì ñồ vật thứ 3 ñựng vừa vì vậy cost[1] = 2,
best[1] = 3. Khi túi có kích thước là 2, thì (cost[2] < cost[1] + value[3]) không
thỏa yêu cầu (cost[2] = 5, (cost[1] + value[3]) = 5) nên vẫn giữ nguyên giá trị ban
ñầu (cost[2] = 5, best[2] = 2). Khi túi có kích thước là 3, ta có
(cost[3]<cost[2]+value[3]), ñồ vật ñầu tiên là ñồ vật thứ 3, phần kích thước còn
thừa ñủ ñể chứa ñồ vật thứ 2. Vì vậy, cost[3] = 7, best[3] = 3.
Khi vật có kích thước là 4, ñiều kiện cost[4]<cost[3] + value[3] không thỏa mãn
nên vẫn giữ nguyên giá trị ban ñầu (cost[4] = 10, best[4] = 2)


Khi kết thúc tính toán , ta tìm ñược các ñồ vật ñể cho vào túi thông qua biến best

Với ví dụ trên, ta có best[4] = 2, vì vậy ta có ñồ vật thứ 2 trong túi. Best[4-
size[2]] = best[2] = 2, vì vậy ta có thêm một ñồ vật thứ 2 nữa trong túi.

Với túi có trọng lượng M = 4, túi ñạt giá trị cực ñại là 10 khi ñựng 2 ñồ vật thứ 2.





ðồ án tốt nghiệp Bài toán chia cắt vật liệu

GVHD: ðỗ Như An Trang 22
3.1.3. Phương pháp sinh cột

Thuật toán sinh cột là một thuật toán hữu hiệu ñể giải bài toán quy hoạch
tuyến tính

Sẽ rất khó ñể xem xét tất cả các biến bằng thuật toán quy hoạch tuyến tính
bởi ña số các biến ñều không chuẩn và giả ñịnh rằng giá trị 0 tồn tại trong
phương án tối ưu khi ñó chỉ còn một tập con gồm một số biến cần ñược xem xét
khi giải bài toán.

Thuật toán sinh cột ñề ra phương thức giải quyết hiệu quả bài toán chia cắt
vật liệu bằng cách chỉ tạo ra một số biến có tiềm năng ñể giải quyết hàm mục
tiêu, nhờ ñó, tìm ra ñược các biến với giá trị thấp nhất (bài toán sẽ trở về là bài
toán cực tiểu hóa nếu giả ñịnh rằng nó không mất ñi tính chất chung ban ñầu.)

Có hai bài toán ñược ñưa ra giải quyết:


1. Bài toán chính.
Bài toán chính ở ñây là giải quyết bài toán nguyên thủy ban ñầu chỉ với tập
hợp gồm các biến ñược xem xét






∀≥
→=


ibxa
xf
j
jjij
j
j
.
min

x
j
+

Z



2. Bài toán phụ.
Bài toán phụ lại là một bài toán mới ñược sử dụng ñể xác ñịnh các biến mới.
Hàm mục tiêu của bài toán này là: giảm giá trị của của các biến mới ở mức mong
ñợi ứng với biến giá trị ñã ñược cho, và các ràng buộc phải phụ hợp với hàm mục
tiêu hiện hành.







→=


i
ii
i
ii
Lkl
kz max
π

k
i
+

Z

và k

i


trunc(L/L
i
)


ðồ án tốt nghiệp Bài toán chia cắt vật liệu

GVHD: ðỗ Như An Trang 23
Bước1:

Khởi tạo một số mẫu thử

B=
nn
a
a
a
a
0000

0 00
0 00
0 00
33
22
11
BI=

nn
a
a
a
a
/10000

00/100
000/10
0000/1
33
22
11


(a
11
, a
22
, a
33
,…,a
nn
= trunc (L/ l
i
), i=1, 2 , N)

Bước 2:

Tính Pi =


i
ij
BI


Bước 3:
Giải bài toán phụ:






→=


i
ii
i
ii
Lkl
kz max
π

k
i
+

Z


và k
i


trunc(L/L
i
)

(Nghiệm của bài toán chính là mẫu cắt mới thay thế một mẫu cắt cũ nào ñó)

Bước 4:

Tìm reduced cost = (

=
N
j 1
XS
j
* PI
j
)-cost
(cost: giá thành một thanh vật liệu thô)









ðồ án tốt nghiệp Bài toán chia cắt vật liệu

GVHD: ðỗ Như An Trang 24
Bước 5:

Khi reduced cost >0 thi thực hiện
Tính AR
i
=

=
N
j 1
BI
ij
*XS
j

Tính StockusedbyPattern
i
=

=
N
j 1
bj*BI
ij
Xét tỉ số StockusedbyPattern

i
/Ar
i
, với AR
i
>0
Cập nhật lại mẫu k với RMAX = (StockusebyPattern
i
/AR
i
)

min
Cập nhật lại B và BI
Với:
ARINV[i]:= - AR[i]/AR[NR]
ARINV[NR]:= 1/AR[NR]
BI[i,j]:= BI[i,j]+ARINV[i]*BI[NR,j]
BI[NR,j]:= ARINV[NR]*BI[NR,j]
Cập nhật lại
StockusedbyPattern
i
= StockusedbyPattern
id
-RMAX*AR[i]
StockusedbyPattern[NR]:=RMAX
Tính PI
i
=


=
N
j 1
BI
ij

Giải bài toán phụ
Cho ñến khi không thể sinh cột mới (reduced cost=0)















ðồ án tốt nghiệp Bài toán chia cắt vật liệu

GVHD: ðỗ Như An Trang 25
3.2. Giải bài toán chia cắt vật liệu bằng phương pháp sinh cột
Ví dụ.
Chiều dài của một thanh thép nguyên là 100, cần cắt theo mẫu:


Chiều dài yêu cầu Số lượng yêu cầu
45 97
36 610
31 395
14 211

Mục ñích: + Tìm ra phương án cắt tối ưu
+ Tìm số lượng thanh thép nguyên sử dụng ñể ñáp ứng yêu cầu với
mức lãng phí là thấp nhất.
Giải.

1. Khởi tạo mẫu cắt B và nghịch ñảo của B là BI

B =
7000
0300
0020
0002
BI =
1428.0000
033.000
005.00
0005.0


2. Tính PI

PI = (0.5; 0.5; 0.33; 0.1428 )











×