Tải bản đầy đủ (.docx) (25 trang)

Bài tập lớn Tối Ưu Hóa - bài toán lập kế hoạch sử dụng công cụ Solver trong Excel - DHCNHN HaUI

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 (808.18 KB, 25 trang )

TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
KHOA CÔNG NGHỆ THÔNG TIN


TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI

BÀI TẬP LỚN
MÔN HỌC: TỐI ƯU HÓA
Đề tài: Bài toán lập kế hoạch sản xuất tối ưu
( Lập kế hoạch sản xuất nước rửa tay diệt khuẩn sao cho tổng tiền lãi là
lớn nhất )

Nhóm sinh viên thực hiện:

1. Ánh
2. Nam
3. Thảo
4. Tuấn
5. Vui
6. Yến

Hà Nội, 2020


LỜI NÓI ĐẦU
Trong khoa học máy tính và toán học, bài toán tối ưu hóa là bài toán tìm kiếm lời
giải tốt nhất trong tất cả các lời giải khả thi. Bài toán tối ưu hóa có thể được chia thành hai
loại tùy thuộc vào việc các biến là liên tục hay rời rạc. Bài toán tối ưu hóa với các biến rời
rạc còn được gọi là một bài toán tối ưu hóa tổ hợp. Trong một bài toán tối ưu hóa tổ hợp,
chúng ta tìm kiếm một đối tượng như là một số nguyên, hoán vị hay đồ thị từ một tập
hợp hữu hạn (hoặc có thể là vô hạn đếm được). Bài toán với các biến liên tục bao gồm bài


toán hạn chế và bài toán đa phương thức.
Bài toán lập kế hoạch sản xuất nước rửa tay lấy ý tưởng từ thực tế trước tình hình
dịch Covid-19 đang hoành hành. Việc chăm sóc, vệ sinh cá nhân thường xuyên là vô cùng
thiết yếu và đơn giản nhất để giúp bản thân tránh được dịch bệnh. Để phòng tránh dịch
bệnh, mỗi chúng ta nên tự ý thức đeo khẩu trang khi ở nơi công cộng, hạn chế đến nơi
đông người và rửa tay bằng dung dịch sát khuẩn thường xuyên. Bài toán đặt ra là với
lượng nguyên liệu có sẵn, phải sản xuất như thế nào mà số nguyên liệu cần để sản xuất
nước rửa tay không vượt quá số nguyên liệu có sẵn và tổng tiền lãi thu được phải là cao
nhất.

2


Mục lục

3


I. Giới thiệu bài toán

Trước tình hình dịch Covid-19 rộng rãi, trên thị trường cũng xuất hiện hàng
loạt các cơ sở sản xuất nước rửa tay phục vụ cho người dân trong việc sát khuẩn
phòng chống dịch bệnh. Nước rửa tay hay gel rửa tay khô là 1 loại cồn sát khuẩn có
tác dụng tiêu diệt vi khuẩn. Cái tiện ích của loại sản phẩm này là có thể dùng ở bất
cứ dâu mà không cần nước
Tuy nhiên các chuyên gia khuyên rằng nước rửa tay tuy tiện lợi nhưng không
tiêu diệt được hoàn toàn vi khuẩn và lượng cồn trong nước rửa tay cũng có thể gây
ăn mòn da. Do đó chúng ta không nên có lạm dụng nó thay vào đó nên rửa tay bằng
xà phòng.
Nhiều cơ sở sản xuất vì lợi nhuận mà sản xuất nước rửa tay kém chất lượng. Vì

vậy nhóm chúng em đã tìm hiểu và lập bài toán này để đưa ra giải pháp tối ưu cho
việc sản xuất nước rửa tay sao cho tiết kiệm chi phí sản xuất, phù hợp với tiêu chuẩn
của Bộ Y Tế mà tiền lãi lại hợp lý.
II. Khảo sát dữ liệu

Theo tìm hiểu bọn em thấy rằng, để sản xuất nước rửa tay thì cần 1 số nguyên liệu
chính như:
• Cồn(Etanol)
• Chất diệt khuẩn (Benzalkonium chloride)
• Nước tinh khiết (Deionized water)
• Gel nha đam
Với các nguyên liệu trên, để sản xuất nước rửa tay ta chia các nguyên liệu theo tỷ lệ
sau:





Cồn: 80%
Chất diệt khuẩn: 5%
Nước tinh khiết: 15%( đối với nước rửa tay); 10%(đối với gel rửa tay khô)
Gel nha đam: 10%

III. Xây dựng bài toán

Giả sử cơ sở sản xuất A cần sản xuất 2 sản phẩm là nước rửa tay và gel rửa tay
khô. Để sản xuất 2 loại sản phẩm này cần 4 nguyên liệu chính là: cồn, chất diệt
khuẩn, nước tinh khiết, gel nha đam. Trong kho của cơ sở A có lưu trữ: 200 lít cồn,
4



15 lít chất diệt khuẩn, 30 lít nước tinh khiết, 15 lít gel nha đam. Tiền lãi của nước
rửa tay là 60 triệu, của gel rửa tay là 75 triệu. Chi phí vật tư cần thiết để sản xuất
được cho trong bảng sau:
Sản phẩm
Nước rửa tay

Gel rửa tay khô

Nguyên liêu
Cồn

80

75

Chất diệt khuẩn

5

5

Nước tinh khiết

15

10

Gel nha đam


0

10

Để sản xuất 1 thùng 100 lít nước rửa tay cần:
80L cồn + 5L chất diệt khuẩn + 15L nước tính khiết.
Để sản xuất 1 thùng 100 lít gel rửa tay khô cần:
75L cồn + 5L chất diệt khuẩn + 10L nước tính khiết + 10L gel nha đam.
Gọi:
-

x1 là số thùng “nước rửa tay” cần sản xuất, x1>=0
x2 là số thùng “ gel rửa tay khô” cần sản xuất x2>=0

Khi đó:
-

Số tiền lãi sản xuất “nước rửa tay” là 60*x1;
Số tiền lãi sản xuất “gel rửa tay khô” là 75*x2;
Để tiền lãi lớn nhất thì 60*x1 + 75*x2 đạt giá trị max

Ta viết được hàm mục tiêu như sau:
60*x1 + 75*x2

max

Từ bảng chi phí ở trên ta có các ràng buộc sau:
80*x1 + 75*x2
5*x1 + 5*x2
15*x1 + 10*x2

10*x2

<=200
<=15
<=30
<=15
5


x1 >=0; x2 >=0
IV. Thuật toán để giải bài toán

Để giải quyết bài toán này ta sử dụng thuật toán đơn hình. Trước tiên, chúng ta
cùng tìm hiểu xem thuật toán đơn hình là gì và cách sử dụng nó như thế nào
1. Bài toán quy hoạch tuyến tính tổng quát

Bài toán tổng quát của QHTT có dạng :

Để phân biệt tính chất của các ràng buộc đối với một phương án, ta làm quen với
hai khái niệm : ràng buộc chặt và ràng buộc lỏng.
- Định nghĩa 1: Nếu đối với phương án x mà ràng buộc i thỏa mãn với dấu đẳng
thức, nghĩa là thì ta nói phương án x thỏa mãn chặt ràng buộc. Nếu đối với
phương án x mà ràng buộc i thỏa mãn với dấu bất đẳng thức thực sự, nghĩa là
-

thì ta nói rằng phương án x thỏa mãn lỏng ràng buộc i
Định nghĩa 2: Ta gọi một phương án thỏa mãn chặt n ràng buộc độc lập tuyến
tính là phương án cực biên. Một phương án cực biên thỏa mãn chặt đúng n ràng
buộc gọi là phương án cực biên không suy biến, thỏa mãn chặt hơn n ràng


-

buộc gọi là phương án cực biên suy biến.
Định nghĩa 3: Một phương án mà tại đó hàm mục tiêu đạt cực tiểu ( cực đại )
gọi là phương án tối ưu. Bài toán có ít nhất một phương án tối ưu gọi là bài
toán giải được, bài toán không có phương án hoặc có phương án nhưng hàm
mục tiêu không bị chặn dưới ( trên ) trên tập phương án gọi là không giải được.

Để nhất quán trong lập luận, ta xét bài toán tìm cực tiểu, sau đó ta xét cách đưa bài
toán tìm cực đại về bài toán tìm cực tiểu.

6


Chuyển bài toán tìm cực đại về bài toán tìm cực tiểu: Nếu gặp bài toán tìm max,
tức là :

thì giữ nguyên ràng buộc, ta đưa nó về dạng bài toán tìm min :

2. Dạng chính tắc của bài toán quy hoạch tuyến tính
- Xét bài toán QHTT như sau:

-

Kí hiệu ma trận hàng c= (c1, c2,…,cn )1*n và các ma trận :

-

Ta có bài toán ở dạng ma trận như sau:
f(x)= cx-> min với điều kiện {Ax=b ,x≥0}

và bài toán ở dạng véc tơ như sau: f(x)= cx-> min

-

Đối với bài toán dạng chính tắc ta có một số tính chất và khái niệm quan trọng
của phương án cực biên như sau :

7


Tính chất 1( Nhận dạng phương án cực biên ) : Phương án x của bài toán dạng
chính tắc là cực biên khi và chỉ khi hệ thống các véc tơ {Aj :xj > 0} độc lập tuyến
tính. Với giả thiết hạng[A] = m thì một phương án cực biên không suy biến có đúng
m thành phần dương, suy biến có ít hơn m thành phần dương.
Định nghĩa 4: Ta gọi một hệ m véc tơ {Aj} độc lập tuyến tính bao hàm hệ thống các
véc tơ tương ứng với các thành phần dương của phương án cực biên x là cơ sở của
phương án cực biên ấy, kí hiệu một cách quy ước là J, trong đó
J={ j: Aj nằm trong cơ sở } Một phương án cực biên không suy biến có đúng m
thành phần dương, m véc tơ Aj tương ứng độc lập tuyến tính nên có một cơ sở duy
nhất, đó chính là các véc tơ tương ứng với các thành phần dương: còn đối với
phương án cực biên suy biến thì có nhiều cơ sở khác nhau, phần chung của chúng là
các véc tơ tương ứng với các thành phần dương. Như vậy khi nói phương án cực
biên có cơ sở J, cần hiểu J có 3 nội dung sau:
-

Số phần tử của J: |J|=m
{Aj : j ∈ J }độc lập tuyến tính
{ Aj : j ∈ J }⊃{ Aj : xj ∈ > 0}

Tính chất 2 ( Tính hữu hạn của số phương án cực biên ): Số phương án cực biên

của mọi bài toán quy hoạch tuyến tính đều hữu hạn .
Tính chất 3 ( Sự tồn tại phương án tối ưu ): Nếu bài toán dạng chính tắc có phương
án và hàm mục tiêu bị chặn dưới trên tập phương án thì bài toán có phương án cực
biên tối ưu. Thật vậy, giả sử bài toán có các phương án cực biên là x1, x2, ..., xk
Đặt: f(x1) = Min

f(xi); i = 1,k

Do tập nghiệm ( hay tập phương án của bài toán quy hoạch tuyến tính) của hệ ràng
buộc là một đa diện lồi, cho nên mọi nghiệm (phương án) x đều có thể phân tích
thành:

8


Suy ra:

Vậy x1 chính là phương án cực biên tối ưu.
Đặc biệt : Một lớp quan trọng của các bài toán quy hoạch tuyến tính dạng chính tắc
là bài toán dưới đây gọi là bài toán dạng chuẩn :

Trong đó bi ≥ 0 , (i=1,m) , nghĩa là bài toán dạng chính tắc có vế phải không âm và
mỗi phương trình đều có một biến số với hệ số bằng 1 đồng thời không có trong các
phương trình khác ( gọi là biến cô lập với hệ số bằng 1). Từ hệ phương trình ràng
buộc của bài toán dễ dàng suy ra một phương án:
X0 = (b1, b2, ....., 0, 0, ...., 0)
Đây chính là 1 phương án cực biên xuất phát có hệ cơ sở tương úng là:

9



Các bước giải bài toán chuẩn tắc:
Bước 1: chuyển bi ≥ 0
Bước 2: nếu ràng buộc có dấu bằng “≤” hoặc “≥” chuyển về dấu “=” 4
Bước 3: có bao nhiêu ràng buộc thì có bấy nhiêu vecto đơn vị (sắp xếp thành ma
trân đơn vị)
Cơ sở: Aj
Cực biên xuất phát: xj
Bước 4: tính giá trị:

k=CjZjk -Ck.
k ≥0 (f(x) -> max)
k ≤0 (f(x) -> min)

Thì phương án tối ưu:

k<0 (f(x) -> max) phương án tối ưu

3. Thuật toán đơn hình
3.1 Tư tưởng của thuật toán

Nếu bài toán có phương án thì có phương án cực biên
Nếu bài toán có phương án tối ưu thì cũng có phương án cực biên tối ưu. Số phương
án cực biên là hữu hạn.
Do đó, ta có thể tìm một phương án tối ưu (hay một lời giải của bài toán) trong
tập hợp các phương án cực biên. Tập hợp này là hữu hạn. Vì vậy Dantzig đề xuất
thuật toán đơn hình như sau:
-

Xuất phát từ một phương án cực biên x0. Kiểm tra xem x0 có là phương án tối

ưu hay chưa. Nếu x0 chưa phải là phương án tối ưu thì tìm cách cải tiến nó để
được phương pháp khác là x1 tốt hơn x0 , tức là f(x1 ) < f( x0 ). Qúa trình này
10


lặp lại nhiều lần. Vì số phương án cực biên là hữu hạn nên sau một số hữu hạn
lần lặp ta sẽ tìm thấy phương án cực biên tối ưu.
3.2 Bảng đơn hình
Giả sử x0 với cơ sở J là một phương án cực biên nhưng chưa phải là phương án
tối ưu, khi đó ∀k ∉ J0 sao cho Δk <0 . Giả sử s là một chỉ số trong các chỉ số nói
trên: s ∉ J0 , Δs>0.
Theo thuật toán trên ta cần cải tiến x0 để nhận được một phương án cực biên
mới tốt hơn. Ta sẽ tìm một phương án cực biên mới x1 ứng với cơ sở J1 chỉ khác J
một véc tơ : J1=(J0/r) ∪s , tức là ta đưa véc tơ As vào cơ sở thay cho véc tơ Ar bị
loại ra khỏi cơ sở J. Vì mọi thành phần ngoài cơ sở của một phương án cực biên đều
bằng 0 nên phương án cực biên mới x1 có cơ sở J1=(J0/r) ∪s là:

Trong đó θ là một số dương sẽ được xác định sau sao cho x1 là một phương án cực
biên.
Tìm điều kiện của θ để x1 là một phương án: Để x1 là một phương án thì nó phải
thỏa mãn các điều kiện buộc Ax=b và x ≥ 0.
Ta thấy rằng với mọi θ , ta có:

Vậy với mọi θ thì ràng buộc thứ nhất thỏa mãn. Ta chỉ cần tìm θ sao cho x1 ≥ 0. Có
hai trường hợp xảy ra:
• Trường hợp 1: Nếu zjs ≤ 0 với mọi j ∈J thì x1 ≥ 0 với mọi θ > 0 và x1 là
phương án của bài toán. Nhưng do Δs>0 :

11



Như vậy hàm mục tiêu không bị chặn dưới trên miền ràng buộc. Khi đó bài toán
không có lời giải hữu hạn.
• Trường hợp 2: Nếu ∃ j∉ J0 để zjs > 0, số θ không thể lớn tùy ý, nó phải thỏa
mãn , zjs > 0. Giá trị θ lớn nhất chỉ có thể bằng min

Nếu vượt qua miền đó sẽ có một trong các và x1 sẽ vượt ra khỏi miền ràng
buộc. Giả sử cực tiểu trên đạt tại j = r. Lấy thay vào phương trình trên ta được.

Khi đó ta có :

Từ đó ta có x1 là phương án tốt hơn x0 nếu

Do đó x1 là phương án cực biên và J1 là cơ sở của phương án cực biên x1. Như
vậy x1 là một phương án cực biên của bài toán. ở trên ta đã tìm các thành phần của
phương án cực biên mới x1 cùng với giá trị hàm mục tiêu f(x1 ) thông qua các hệ
số khai triển zjk và các ước lượng trong cơ
sở J1. Như vậy chúng ta cần xác định các đại lượng  1 vàΔ 1 trong cơ sở J1 .
Theo định nghĩa zjk và Δ 1 là các hệ số khai triển của véc tơ Ak tương ứng với cơ
sở J, J1

12


Từ
Ta có :

Thay vào phương trình trên (**):

13



Vì {Aj, j∈J} độc lập tuyến tính nên từ (*) và (**) suy ra:

Bảng đơn hình :

14


Các cột ứng với j∈J sẽ là các véc tơ đơn vị với số 1 trên dòng với chỉ số j. Chú
ý: Đối với bài toán dạng chuẩn, ta có ngay một phương án cực biên
x0=(b1,b2,b3,……,bm,0,0,…..,0) với hệ véc tơ cơ sở tương ứng là A1, A2,….,
Am . Đây là các véc tơ đơn vị nên trong bảng đơn hình xuất phát ta có zjk=ajk
3.3 Thuật toán đơn hình

Bước xuất phát: Tìm một phương án cực biên x0 và cơ sở J0 tương ứng. Tìm các
hệ số khai triển zij và các ước lượng Δk .
Bước 1: Kiểm tra dấu hiệu tối ưu Nếu thì Δk ≤0 ∀ k∉ J0 thì x0 là phương án tối
ưu. Thuật toán kết thúc. Nếu ∃ Δk >0 thì chuyển sang bước 2. 
Bước 2: Kiểm tra dấu hiệu hàm mục tiêu giảm vô hạn: Với mỗi mà k∉ J0 mà Δk >
0 thì kiểm tra các hệ số khai triển zij của cột Ak tương ứng: a. Nếu có một Δk > 0
mà tất cả zij ≤ 0 ∀j ∈ J0 thì kết luận hàm mục tiêu giảm vô hạn trên miền ràng
buộc. Bài toán không có lời giải hữu hạn. Thuật toán kết thúc. b. ∀k ∉ J0 mà Δk
>0 đều tồn tại ít nhất một hệ số zij >0 thì chuyển sang bước 3

15


Bước 3: Xác định cột xoay, dòng xoay, phần tử trục Chọn chỉ số s∉ J0
:Δs=max{ Δk>0,k ∉ J0 }, đánh dấu cột s là cột xoay

-

Tìm chỉ số r đạt min:

Bước 4: Tính các

trong cơ sở mới

theo các công

thức trên. Ghi nhận các kết quả trong một bảng mới. Quay trở lại bước 1. Để nhận
được bảng đơn hình mới từ bảng đơn hình cũ ta làm như sau:
Thay Ar bằng As, cr bằng cs. + Chia các phần tử trên hàng xoay (hàng r) cho
phần tử trục zrs ta được hàng r mới gọi là hàng chuẩn. Mỗi phần tử khác ngoài hàng
xoay trừ đi tích của phần tử cùng hàng với nó trên cột xoay với phần tử cùng cột với
nó trên hàng chuẩn được phần tử cùng vị trí trong bảng đơn hình mới.

V. Công cụ hỗ trợ giải bài toán

Để giải quyết các bài toán QHTT phần mềm Excel cung cấp cho chúng ta một công cụ
khá hữu ích là Solver.
1. Xây dựng bài toán trong excel
Việc xây dựng bài toán trong Excel cũng tương tự như việc xây dựng bài toán khi
chúng ta tiến hành giải thủ công thông thường. Sau khi phân tích đầu bài chúng ta cần
viết được hàm mục tiêu và các ràng buộc của bài toán rồi tiến hành tổ chức dữ liệu vào
bảng tính.
Thiết lập các giá trị trong Excel theo bài toán đề ra
16



Trong đó:
Sản phẩm: SP1, SP2 lần lượt là 2 sản phẩm cần sản xuất: Nước rửa tay và gel rửa tay
khô.
Nguyên liệu: NL1, NL2, NL3, NL4 lần lượt là các nguyên liệu để sản xuất: cồn, chất
diệt khuẩn, nước tinh khiết, gel nha đam.
Vât liệu trong kho: là số vật liệu còn lại trong kho của từng nguyên liệu.
Tiền lãi: tiền lãi được để ra sau khi sản xuất và bán sản phẩm.
Xây dựng bài toán
Gọi:
• x1 là lượng SP1 cần sản xuất, x1>=0
• x2 là lượng SP2 cần sản xuất x2>=0
Khi đó:
• Số tiền lãi sản xuất “nước rửa tay” là 60*x1;
• Số tiền lãi sản xuất “gel rửa tay khô” là 75*x2;
• Để tiền lãi lớn nhất thì 60*x1 + 75*x2 đạt giá trị max
Ta viết được hàm mục tiêu như sau:
60*x1 + 75*x2

max

Từ bảng chi phí ở trên ta có các ràng buộc sau:
80*x1 + 75*x2

<=200

5*x1 + 5*x2

<=15

15*x1 + 10*x2


<=30

10*x2

<=15

x1 >=0; x2 >=0
17


Giả sử để sản xuất mỗi sản phẩm cần sản xuất 1 đơn vị sản phẩm.
Khởi tạo giá trị đầu tiên của x1 và x2 tại ô B8 và C8 là 1.

-

-

Tại các ô D3, D4, D5, D6 là lượng vật liệu để sản xuất 1 đơn vị sản phẩm.
Ví dụ: để sản xuất 1 đơn vị sản phẩm SP1 và SP2 cần 80 NL1 và 80 NL2. Suy
ra, giá trị tại ô D3 là : 80*1 + 80*1 hay B3*B8+C3*C8
Giá trị tại ô D7 là tiền lãi khi bán 1 đơn vị sản phẩm SP1 và SP2.

2. Cài đặt Solver

– Mặc định công cụ Solver không được cài đặt sẵn trong Excel
– Cài đặt công này trong phần Add-ins của Excel
– Các bước cài đặt: (dành cho phiên bản MS Office 2010, với phiên bản MS Office
2003 có thể tìm thấy trong cuốn giáo trình Tin học ứng dụng-HVTC)
+ Khởi động Excel

+ Vào File chọn Options
+ Trong cửa sổ Excel Options ta bấm chọn Add-Ins, sau đó bấm Go…

18


Trong cửa sổ Add-Ins, ta tích chọn Solver Add-in, sau đó bấm chọn OK để tiến hành
cài đặt.

+ Sau khi cài đặt xong sẽ xuất hiện công cụ Solver nằm ở thẻ Data.
19


3. Sử dụng công cụ Solver

Chọn Data -> Solver trên thanh công cụ.

Bảng Solver Parameters

20


Trong đó:
-

Set Objective: Khai báo ô chứa hàm mục tiêu (D7)
To: Chọn Max
By Changing Variable Cells: Ô chứa ẩn( $B$8:$C$8)\

Chọn Add để thiết lập các rang buộc theo bài toán và bảng: Theo đó, cột nguyên liệu

sản xuất sẽ <= Cột nguyên liệu trong kho.

21


22


Kết quả sau khi thêm các rang buộc:

Tại phần Select a Solving Method chọn Simplex LP

23


Bấm Solver để giải và máy sẽ hiện ra cửa sổ Solver Result, ta chọn Keep Solver
Solution để giữ lại kết quả.

Chọn Answer trong phần Report để xem kết quả

Ta được kết quả như sau:

24


4. Kết quả thu được:

Theo như kết quả sau khi sử dụng công cụ Solver ta có: để đạt được lợi nhuận là
172,5 triệu thì cần sản xuất 1 thùng Nước rửa tay và 1,5 thùng nước rửa tay khô.
Sử dụng:

-

192,5L cồn
12,5L chất diệt khuẩn
30L nước tinh khiết
15L gel nha đam.

25


×