34
Bài toán dự trữ Mục tiêu của bài toán Nhằm đưa ra các quyết định đúng đắn hỗ trợ cho các doanh nghiệp trong một số các trường hợp sau: (1). Nếu chúng ta đang thực hiện một chiến lược dự trữ nào đó mà chi phí đặt hàng (hay chi phí cố định) quá cao so với chi phí dự trữ thì cần tăng khối lượng hàng đặt mỗi lần, ngược lại cần giảm hàng đặt mỗi lần. (2). Xác định qui mô kho cần thiết tại mỗi điểm dữ trữ tối ưu (3). Xác định lượng vốn cần thiết cho chu kỳ dự trữ và tiêu thụ (4). Sự thay đổi tổng cầu, giá hàng (5). .................. Một số khái niệm cơ bản cần thiết Sau đây là một vài khái niệm cơ bản cần thiết để có thể mô hình hoá bài toán thực tế dưới dạng bài toán dự trữ: 1 - Hàng hoá: là đối tượng cần dự trữ cho hoạt động kinh tế, xã hội nào đó 2 - Nhu cầu: là khối lượng hàng cần thiết và sẽ tiêu thụ trong khoảng thời gian T (giả thiết rằng T=1). Nhu cầu thông thường là một biến ngẫu nhiên có qui luật phân phối xác suất nào đó.

Bai toan du tru

Embed Size (px)

Citation preview

Page 1: Bai toan du tru

Bài toán dự trữ

Mục tiêu của bài toán

Nhằm đưa ra các quyết định đúng đắn hỗ trợ cho các doanh nghiệp trong một số

các trường hợp sau:

(1). Nếu chúng ta đang thực hiện một chiến lược dự trữ nào đó mà chi phí đặt

hàng (hay chi phí cố định) quá cao so với chi phí dự trữ thì cần tăng khối lượng hàng đặt

mỗi lần, ngược lại cần giảm hàng đặt mỗi lần.

(2). Xác định qui mô kho cần thiết tại mỗi điểm dữ trữ tối ưu

(3). Xác định lượng vốn cần thiết cho chu kỳ dự trữ và tiêu thụ

(4). Sự thay đổi tổng cầu, giá hàng

(5). ..................

Một số khái niệm cơ bản cần thiết

Sau đây là một vài khái niệm cơ bản cần thiết để có thể mô hình

hoá bài toán thực tế dưới dạng bài toán dự trữ:

1 - Hàng hoá: là đối tượng cần dự trữ cho hoạt động kinh tế, xã

hội nào đó

2 - Nhu cầu: là khối lượng hàng cần thiết và sẽ tiêu thụ trong

khoảng thời gian T (giả thiết rằng T=1). Nhu cầu thông thường là một

biến ngẫu nhiên có qui luật phân phối xác suất nào đó.

3 - Cung cấp: là khả năng cung cấp hàng cho quá trình dự trữ và

tiêu thụ. Trong các trường hợp cụ thể cách thức cung cấp có thể khác

nhau: Cung cấp theo đợt tập trung, cường độ lớn; cung cấp đều đặn

trong khoảng thời gian..

4 - Thời gian đặt hàng: là khoảng thời gian bắt đầu đặt hàng

đến khi hàng bắt đầu được dự trữ và tiêu thụ. Khoảng thời gian này

cũng có thể là một biến ngẫu nhiên.

5 - Chu kỳ dự trữ tiêu thụ: là phần thời gian dự trữ và tiêu thụ

khối lượng hàng của một lần đặt hàng.

Page 2: Bai toan du tru

6 - Điểm đặt hàng: là mức hàng còn dự trữ khi cần bắt đầu đặt

hàng cho chu kỳ sau đó.

7 - Các chi phí: trong các mô hình sẽ xem xét ở đề tài này ta

quan tâm đến các loại chi phí sau:

a - Chi phí mua hàng hay giá hàng được tính bằng chi phí trực

tiếp cho một đơn vị hàng về đến kho (giá hàng, chi phí vận

chuyển ,bốc xếp,...).

b - Chi phí đặt hàng là chi phí cố định cho 1 lần đặt hàng bao

gồm chi phí giao dịch, chi phí cho các nghiệp vụ khác.

c - Chi phí dự trữ hay chi phí kho: chi phí này tính cho 1 đơn vị

hàng cần bảo quản trong 1 đơn vị thời gian, thông thường nó được tính

tỷ lệ với giá hàng qua 1 hệ số gọi là hệ số chi phí dự trữ ( hay hệ số bảo

quản).

d - Chi phí do không đảm bảo nhu cầu: là thiệt hại khi thiếu 1 đơn

vị hàng trong 1 đơn vị thời gian.

e - Chi phí phát sinh do thừa hàng ( so với nhu cầu thực tế ):

khoản chi phí phát sinh khi chúng ta dự trữ quá mức cần thiết. Thí dụ:

tổn thất do vốn bị ứ đọng do hàng bị hư hỏng...

Một số dạng bài toán quản lý dự trữ

+ Mô hình dự trữ với việc tiêu thụ đều, bổ sung tức thời

Mô tả bài toán: Giả sử nhu cầu một loại hàng trong thời kỳ T là Q đơn vị. Việc

tiêu thụ hàng là đều đặn và thời gian bổ sung hàng vào kho không đáng kể (tức thời). Chi

phí cho mỗi lần đặt hàng là A, giá đơn vị hàng là C, hệ số chi phí dự trữ là I, Thời gian

đặt hàng là T0. Hãy xác định số lần đặt hàng và lượng hàng đặt mỗi lần sao cho tổng chi

phí bé nhất.

+ Mô hình dự trữ tiêu thụ đều, bổ sung dần dần

Mô tả bài toán: Giả sử nhu cầu một loại hàng trong thời kỳ T là Q đơn vị. Việc

tiêu thụ hàng là đều đặn và thời gian bổ sung hàng vào kho được tiến hành với cường độ

không đổi K đơn vị trong thời gian T. Ta giả thiết rằng K>>Q vì nếu K Q thì không

cần đặt vấn đề dự trữ. Chi phí cho mỗi lần đặt hàng là A, giá đơn vị hàng là C, hệ số chi

Page 3: Bai toan du tru

phí dự trữ là I, Thời gian đặt hàng là T0 . Hãy xác định số lần đặt hàng và lượng hàng đặt

mỗi lần sao cho tổng chi phí bé nhất.

+ Mô hình dữ liệu nhiều mức giá ( giá hàng thay đổi theo số lượng đặt mua mỗi

lần).

Mô tả bài toán: Trong các mô hình trên, ta giả thiết giá của mỗi đơn vị hàng

không đổi. Thực tế do nhiều lý do khác nhau, giá hàng có thể thay đổi theo qui mô của lô

hàng mua mỗi lần, chẳng hạn người ta có thể chia các mức giá thành: giá bán lẻ, giá bán

buôn cấp 1, cấp 2, hay giá theo đơn đặt hàng có ứng vốn. Nói cách tổng quát là giá mỗi

đơn vị hàng có thể thay đổi theo số lượng hàng đặt mỗi lần.

Qui trình xử lý bài toán

Bài toán được thực hiện với qui trình dưới đây. Bài toán có thể về quản lý dự trữ

có thể có rất nhiều các mức giá khác nhau, tuỳ vào từng bài cụ thể mà chúng ta có thể

nhập các mức giá khác nhau => cho ra các kết quả khác nhau. Nhưng về cơ bản để giải

quyết bài toán này chúng ta cần có các thông số vào tổng quát sau:

a. Mô hình quản lý dự trữ với việc tiêu thụ đều, bổ sung tức thời (Mô hình WILSON)

Mô tả bài toán

Giả sử nhu cầu một loại hàng trong thời kỳ T(T=1) là Q đơn vị. Việc tiờu thụ hàng

là đều đặn và thời gian bổ sung hàng vào kho khụng đỏng kể (tức thời). Chi phí cho mỗi

lần đặt hàng là A, giỏ đơn vị hàng là C, hệ số chi phí dự trữ là I, thời gian đặt hàng là T0.

Hóy xỏc định số lần đặt hàng và lượng hàng đặt mỗi lần sao cho tổng chi phí là bộ nhất.

Đầu vào:

1. Tổng nhu cầu

2. Chi phí đặt hàng

3. Hệ số chi phí dự trữ

4. Thời gian đặt hàng

5. Số mức giá

6. Nhập các mức giá

7 ...

Qui trình xử lý

Chương trình máy tính

Kết quả:

1. Chi phí cực tiểu

2. Lượng đặt hàng tối ưu (duy nhất)

3. Số lần đặt hàng

4. Điểm đặt hàng

5 ...

Page 4: Bai toan du tru

Thiết lập mô hình

Giả sử ta chia T thành n chu kỳ dự trữ và tiờu thụ. Trong mỗi chu kỳ i đặt mua

lượng hàng tương ứng là qi . Ta cú sơ đồ biểu thị số lượng hàng trong kho như sau:

q1 q2

t1 t2 (Sơ đồ kho) T=1

Sơ đồ trên thể hiện cường độ tiêu thụ đều, đường biểu diễn lượng dự trữ tuyến

tính theo thời gian. Mỗi chu kỳ nhập một lượng hàng q i, tiêu thụ đến hết chu kỳ thì phải

có hàng bổ sung vào dự trữ, Như vậy không xảy ra thiếu, thừa dự trữ do đó cũng không

phát sinh các chi phí tương ứng.

Trong mỗi chu kỳ ti lượng hàng dự trữ trung bình là qi/2 phát sinh chi phí dự trữ

tương ứng qitiIC/2; chi phí đặt hàng là nA; ngoài ra tổng số tiền mua hàng là CQ.

Vậy tổng chi phí là:

CQn

1i 2i

qi

ICtnAn),

iF(t

(1)

Vì qui luật tiêu thụ đều nên dễ dàng suy ra t i=qi/Q với i . Như vậy ta có:

CQn

1i 2Q

2iICq

nAn),iF(q

(2)

Qn

1i iq

Với n xác định, ta có thể thấy F(q) bé nhất khi qi=q=Q/n với i , tức là lượng hàng

đặt mua mỗi lần đều bằng q.

Thật vậy, lập hàm f(qi)=F(qi)- iq(λ Q)

điểm dừng của f(qi) là qi=Q/n. Dễ dàng nhận thấy đây là điểm cực tiểu toàn bộ của f(qi).

Page 5: Bai toan du tru

Tóm lại, việc tìm cực tiểu hàm F(ti,n) qui về tìm cực tiểu hàm:

CQ2

ICqq

AQF(q)

Vì CQ không đổi ta chỉ cần tìm q làm cực tiểu hàm:

2ICq

qAQD(q) (3)

Lời giải

Vì D(q) là tổng của hai số hạng dương có tích không đổi (AQIC/2), theo hệ quả

của bất đẳng thức côsi, D(q) nhỏ nhất khi AQ/q=ICq/2. Giải phương trình này đối với q ,

ta có:

Lượng hàng đặt tối ưu mỗi lần: IC

2AQ*q (4)

và D(q*)= 2AQIC=2AQ/q* + ICq* (5)

F(q*)= CQ2AQIC (6)

hay có thể tính: F(q*) =CQ+2AQ/q*=ICq*+CQ

Số lần đặt hàng tối ưu n*=Q/q*.

Chu kỳ dự trữ, tiêu thụ: t*=1/n*.

Điểm đặt hàng: việc xác định điểm đặt hàng sẽ đơn giản nếu như thời gian đặt

hàng T0 <t*, nhưng trong thực tế có thể T0 t* như vậy cần đặt hàng trước một hay một

số chu kỳ. Lượng hàng trong kho lúc cần đặt hàng (điểm đặt hàng ) chính là lượng hàng

tiêu thụ trong khoảng thời gian được xác định theo công thức sau:

[T0 - t*.int(T0/t*)]

Ta quan sát hai sơ đồ kho sau:

sơ đồ 1 sơ đồ 2

Page 6: Bai toan du tru

B* B*

------ ----- --------------------

T0 T0 T0

B*=T0Q B*=(T0 - 2t*)Q

Trong sơ đồ 1 điểm đặt hàng được tính lượng hàng tiêu thụ trong thời gian đặt

hàng T0; còn trong sơ đồ 2 cần đặt hàng trước đó hai chu kỳ, vì vậy điểm đặt hàng B* tính

bằng lượng tiêu thụ trong khoảng thời gian bằng phần dư của T0 sau khi trừ đi 2 lần t*, tức

là: =T0-2t*.

Trong trường hợp tổng quát ta có thể tính điểm đặt hàng B* theo công thức sau:

B*=Q[T0-t*.int(T0/t*)]; int(T0/t) là phần nguyên của T0/t.

Ta có thể mô tả hàm D(q) và lời giải trên đồ thị sau:

AQ/q

ICq/2

q’ q* q’’

Ta thấy q* là hoành độ điểm giao của hai đồ thị AQ/q và ICq/2 và

AQ/q > ICq/2 với q<q*

AQ/q < ICq/2 với q>q*

Phân tích kết quả

Với kết quả trên ta có thể có một số phân tích sơ bộ sau:

+ Điểm q* trên đồ thị cho thấy rằng nếu ta đang thực hiện một chiến lược lưu trữ

nào đó mà chi phí đặt hàng (hay chi phí cố định) quá cao so với chi phí dự trữ (q’ chẳng

Page 7: Bai toan du tru

hạn) thì cần tăng khối lượng hàng đặt mỗi lần, ngược lại, nếu ở tình trạng q’’ thì cần giảm

khối lượng hàng đặt mỗi lần.

+ Công thức tính q* giúp ta xác định qui mô kho cần thiết tại điểm lưu trữ tối ưu.

+ Công thức tính F(q*) cho phép xác định lượng vốn cần thiết cho chu kỳ dự trữ

và tiêu thụ:

IC

AQCA

IC

AQ

Q

CQAQIC

n

qFK

22

2)2(

*

*)(*

+ Sự thay đổi một vài yếu tố (phân tích tĩnh)

Các tham số cơ bản trong mô hình có thể ngoại sinh hoá như các biến. Với sự thay

đổi của các biến này chiến lược dự trữ tối ưu cũng có những thay đổi nhất định. Tuy

nhiên, trong thực tế cần chú ý rằng không phải mọi tham số đều có thể ngoại sinh hoá

mặc dù về mặt toán học chúng ta luôn có khả năng ngoại sinh hoá tất cả các tham số.

Người ta chỉ xét sự thay đổi của những tham số làm thay đổi điều kiện dự trữ thông

thường nhất.

- Trước tiên ta xét sự thay đổi tổng nhu cầu Q tác động đến qui kho và vốn:

Nếu Q’=ỏQ(ỏ>0) thì: q’*= *

2q

IC

QA

Như vậy, qui mô kho cần thiết không tỷ lệ với Q, mà thay đổi với hệ số căn bậc

hai.

Tổng quát, từ công thức (4) ta thấy tại điểm tối ưu q*=q(A, Q, I, C) và dễ dàng

thấy hàm q khả vi theo tất cả các biến (với các biến nhận giá trị dương).

Vậy:

AdQdII

AQdC

C

AQQdA

AQICdq (

2

1(8)

Công thức này, cho phép xác định biến động của q* (có thể xem là qui mô kho)

theo các yếu tố trong mô hình.

Tương tự trong trường hợp đơn giản khi nhu cầu tăng ta có:

Page 8: Bai toan du tru

Vốn IC

AQCA

IC

QACAK

22

22'*

- Sự thay đổi của giá hàng: Trong trường hợp chủ hàng đặt mốc qui mô lô hàng

mua để hạ giá nhằm khuyến mại hành vi dự trữ sẽ thay đổi như thế nào?

Giả sử có mốc q0 với q ≥ q0 thì giá hàng hạ ồ, (0< ồ <1) ;

tức là c’=c(1- ồ)

Ta có đồ thị sau:

N(q*,C)

N(q’1,C’)

q’ q’1 Smax

+ Khi q0>q*

Nếu *10 qq thì đặt hàng với khối lượng: (*)1

**'

qq

Trong trường hợp ngược lại, cần so sánh F(q*) và F(q0) để xác định lượng hàng

đặt mua tối ưu.

+ Khi q0≤q*: cần thay đổi chiến lược đặt hàng để nhận được ưu đãi, khuyến mại,

điểm tối ưu có thể tính theo công thức (*).

Tổng quát, ta có thể mô tả sự biến đổi của K*=K(A, Q, I, C) nhờ biểu thức sau:

dII

AQICdC

AQIC

AQdQ

AQIC

ACdA

AQIC

QCdK

2

2

22)

22(

+ Vấn đề xác định chi phí dự trữ và lời giải của bài toán:

Page 9: Bai toan du tru

Chúng ta đã xác định chi phí dự trữ trong mô hình cổ điển có thể thiếu tính thực

tế. Chúng ta có thể tính chi phí dự trữ được đơn vị hoá theo mỗi đơn vị hàng đều có

chung lời giải theo công thức:

0

2*

C

AQq (4’)

Trong đó: C0 là chi phí dự trữ tính cho mỗi đơn vị hàng được dự trữ trong một đơn

vị thời gian. Chẳng hạn, chi phí dự trữ bao gồm hai phần: Chi phí cố định cho mỗi đơn vị

hàng và chi phí do ứ đọng vốn tính theo giá hàng với hệ số là tỷ lệ lãi tiền gửi hay tiền

vay.

Xây dựng chương trình với mô hình Wilson

* Đầu vào:

- Tổng cầu một loại hàng Q

- Đơn giá hàng C

- Chi phí cho mỗi lần đặt hàng A

- Hệ số chi phí dự trữ I

- Thời gian đặt hàng T0

* Đầu ra:

- Lượng hàng đặt tối ưu mỗi làn q*

- Tổng chi phí bé nhất F(q*)

- Số lần đặt hàng tỗi ưu n*

- Chu kỳ dự trữ ,tiêu thụ t*

- Điểm đặt hàng tối ưu B*

* Đoạn chương trình mô phỏng thuật toán bằng ngôn ngữ VB:

Private Sub Command1_Click()

Dim Q1 As Currency

Dim n As Currency

Dim t1 As Currency

Dim b As Currency

Page 10: Bai toan du tru

Dim Q As Currency

Dim c As Currency

Dim i As Currency

Dim A As Currency

Dim T As Currency

Dim F As Currency

If IsNumeric(txtT) And IsNumeric(txtQ) And IsNumeric(txtI) And IsNumeric(txtA) And

IsNumeric(txtC) Then

T = CCur(txtT) / 365

Q = CCur(txtQ)

c = CCur(txtC)

A = CCur(txtA)

i = CCur(txtI)

Q1 = Sqr((2 * Q * A) / (i * c))

F = i * c * Q1 + Q * c

n = Q / Q1

t1 = 1 / n

b = Q * (T - (t1 * Int(T / t1)))

txtkq = "Lượng hàng đặt mỗi lần làq=" & CStr(Q1) & vbNewLine & "Tổng chi phí bé

nhất F(q*)=" & CStr(F) & vbNewLine & "Thời gian 1 chu kỳ t*=" & CStr(t1) &

"(ngày)" & vbNewLine & "Số chu kỳ trong một năm n*=" & CStr(n) & vbNewLine &

"Điểm đặt hàng B*=" & CStr(b)

Else

MsgBox "du lieu vao sai"

End If

End Sub

Page 11: Bai toan du tru

Thí dụ minh hoạ

Một cửa hàng kinh doanh thép xây dựng tại một khu vực có tổng nhu cầu 200000

tấn/năm, việc tiêu thụ là đều đặn trong năm, thời gian nhập hàng không đáng kể. Cửa

hàng mua thép từ một nguồn không hạn chế về số lượng. Chi phí cho một lần đặt hàng là

400$, giá một tấn là 240$, hệ số chi phí bảo quản là 0,05. Thời gian từ lúc đặt hàng đến

khi có hàng vào kho là 2 tháng. Xác định các chỉ số cơ bản trong dự trữ và tiêu thụ của

cửa hàng.

Dựa vào bài toán tổng quát trên chúng ta có thể giải bài toán này bằng chương

trình mô phỏng sau đây:

Mô hình dự trữ tiêu thụ đều, bổ sung dần dần

Một trong những tình huống khá phổ biến trong thực tế sản xuất và kinh doanh là

việc bổ sung hàng không tức thời, người ta có thể vừa sản xuất vừa tiêu thụ hay vừa nhập

hàng vừa tiêu thụ. Ở đây, chúng ta xét trường hợp cường độ cung cấp lớn hơn lớn hơn

Page 12: Bai toan du tru

đáng kể so với cường độ tiêu thụ, vì nếu cường độ cung cấp bằng cường độ tiêu thụ thì

không cần đặt vấn đề dự trữ.

Mô tả bài toán

Giả sử nhu cầu một loại hàng trong thời kỳ T là Q đơn vị. Việc tiêu thụ hàng là

đều đặn và thời gian bổ sung hàng vào kho được tiến hành với cường độ không đổi K đơn

vị trong thời gian T=1. Ta giả thiết rằng K>>Q vì nếu K<=Q thì không cần đặt vấn đề dự

trữ. Chi phí cho mỗi lần đặt hàng là A, giá đơn vị hàng là C, hệ số chi phí dự trữ là I, thời

gian đặt hàng là T0. Hãy xác định số lần đặt hàng và lượng hàng đặt mỗi lần sao cho chi

phí bé nhất.

Thiết lập mô hình

Tương tự như mô hình trên, ta có thể có lượng hàng đặt mỗi lần bằng nhau và

bằng q, số lần đặt hàng sẽ là n=Q/q. Vì Q<<K nên trong mỗi chu kỳ dự trữ, tiêu thụ t, có

hai khoảng thời gian ts- thời gian có bổ sung hàng vào kho; tr- thời gian chỉ tiến hành tiêu

thụ.

Nếu gọi lượng hàng tối đa trong kho là S, ta có trong thời gian T=1 nếu nhập hàng

liên tục thì lượng hàng dư là K-Q; trong thời gian ts lượng hàng dư là S, vậy S/ts=(K-Q)/T

hay S=ts(K-Q).

Mặt khác trong thời gian ts lượng hàng nhập được là q, nên q/ts=K/T hay ts=q/K.

Từ đó ta có :

S=q(K-Q)/K =q(1-Q/K)

Và có sơ đồ biểu thị số lượng hàng dự trữ trong kho như sau:

S S=q(1-Q/K)

ts tr T=1

t = ts + tr

Page 13: Bai toan du tru

Hàm tổng chi phí là:

CQ)KQ(1

2qIC

qAQF(q) (1)

(Mức dự trữ trung bình được tính bằng S/2 và S = q(1-Q/K)

Nếu đặt I’=I(1-Q/K) ta có hàm chi phí của mô hình Wilson trong đó thay thế I

bằng I’ và dễ dàng có lời giả tương tự.

3.3.3 Lời giải

Lượng hàng đặt tối ưu mỗi lần : )KQIC(1

2AQq*

(2)

Và )KQ2AQIC(1D(q*) (3)

CQ)KQ2AQIC(1F(q*) (4)

Số lần đặt hàng tối ưu : n* = Q/q*.

Chu kỳ dự trữ , tiêu thụ : t*=1/n*.

Điểm đặt hàng trong trường hợp này cần phân biệt mức B* khi đang làm đầy kho

và khi đang làm vơi kho.

Trước tiên ta tính: B= Q[T0-t*.int(T0/t*)].

Nếu B S*=q*(1-Q/K) thì B*=B đặt hàng khi đang làm vơi kho.

Nếu B > S* thì B*=(K-Q)(t*-B/Q) đặt hàng khi đang làm đầy kho.

3.3.4 Phân tích lời giải

Các phân tích trong mô hình Wilson hoàn toàn có thể sử dụng cho mô hình dự trữ

tiêu thụ đều, bổ sung dần dần. Một số bài toán mở rộng có thể ứng dụng được nếu ta tiến

hành thay thế hệ số I bằng I’.

+ Xấp xỉ bởi mô hình Wilson và huỷ bỏ dự trữ

Page 14: Bai toan du tru

Rõ ràng tỷ lệ Q/K là hoàn toàn xác định, vì vậy sự sai khác của lời giải trong mô

hình này so với mô hình Wilson phụ thuộc vào giá trị Q/K. Nếu Q/K ≈ 0 thì thực chất mô

hình trở thành mô hình bổ sung tức thời. Ngược lại, khi Q/K ≈ 1 thì coi như không có dự

trữ.

Mô hình dự trữ này phù hợp với quá trình tổ chức sản xuất – tiêu thụ hơn là quá

trình kinh doanh thương mại. Trong ta có thể xem K là năng lực sản xuất một mặt hàng

chính, Q là nhu cầu, A là chi phí chuẩn bị 1 đợt sản xuất, C là chi phí trực tiếp cho sản

xuất 1 đơn vị hàng, T0 là thời gian chuẩn bị sản xuất.

+ Bài toán với khối lượng hàng không qua kho

So với mô hình Wilson thì tổng chi phí trong mô hình này nhỏ hơn, nguyên nhân

là có 1 khối lượng hàng có thể xem là không phải qua kho trong mỗi chu kỳ, do đó giảm

được chi phí dự trữ. Có thể xác định số lượng đó tại chiến lược tối ưu như sau:

R=(q*-S*)=q*-q*(1-Q/K) =q*Q/K

Với số chu kỳ là Q/q* và với T=1 tổng lượng hàng không qua kho là: R*=Q2/K.

R* cũng là một chỉ tiêu để đánh giá một khía cạnh của chiến lược dự trữ đang tồn

tại. Trong thực tế, R* không phụ thuộc các chi phí, nó chỉ phụ thuộc K và Q. Vì vậy nếu

doanh nghiệp thực hiện một chiến lược dự trữ q, mà lượng hàng không qua kho lớn hơn

R* tức là nhu cầu lớn hơn mức dự báo hoặc khả năng sản xuất giảm, ngược lại khi lượng

hàng không qua kho bé hơn R* thì nhu cầu lớn hơn mức dự báo hoặc khả năng sản xuất.

Có hai tình huống đơn giản là:

- Vấn đề dự báo và điều chỉnh tổng nhu cầu: Q

- Vấn đề đánh giá năng lực thực tế của đơn vị: K

+ Tổng nhu cầu Q: Khi tiến hành lập kế hoạch tác nghiệp cho một thời kỳ T,

chúng ta dự trên nhiều nguồn thông tin để xác định tổng nhu cầu Q cho một doanh

nghiệp, một khu vực,... Không thể và cũng không có đủ khả năng xác định chính xác Q.

Chúng ta có thể căn cứ vào tình hình dự trữ - tiêu thụ của một phần thời gian để hiệu

chỉnh tham số này.

Page 15: Bai toan du tru

1. Giả sử trong thời gian T = 1 ta đã dự báo một nhu cầu Q đều đặn. Bằng năng

lực cung cấp K, sau thời gian T ta xác định được lượng hàng không qua kho R1 (hoặc

tương ứng là lượng hàng qua kho R2 = K-R1). Như vậy lượng hàng không qua kho R1

chính là lượng hàng thực tế tiêu thụ trong thời gian T= . Nhu cầu thực tế sẽ là

Q’=R1/.

2. Lời giải trong tình huống đơn giản nói trên có thể không thực tế, do doanh

nghiệp luôn có một chiến lược theo chu kỳ. Vì vậy chỉ sau một chu kỳ hay cả năm người

ta mới có khả năng đánh giá lại thị trường.

Sau đây ta xét trường hợp thời gian sản xuất ban đầu làm cơ sở đánh giá là 1 chu

kỳ:

Trong 1 chu kỳ, giả sử ta sản xuất lượng hàng q, nếu nhu cầu cả năm là Q, lượng

hàng qua kho là S=q(1-Q/K). Giả sử lượng hàng qua kho thực tế là S’ khác S và thời gian

sản xuất của chu kỳ này là ts0, như vậy ta có thể thay q=ts

0K. Nhu cầu thực tế Q’ nhận

được từ phương trình S’=ts0K(1-Q’/K).

Nghiệm phương trình này là: Q’=K-S’/ts0

3. Trường hợp đơn giản nhất, cơ sở đánh giá là một năm sản xuất và tiêu thụ. Như

đã nói ở trên lượng hàng không qua kho lý thuyết là R*=Q2/K, nếu lượng hàng không qua

kho thực tế là R’ khác R* ta có thể xác định lại Q’ nhờ công thức sau: KSQ ''

+ Khả năng sản xuất K: Hoàn toàn như trên, bài toán đánh giá lại khả năng sản

xuất cũng có thể phân chia thành 3 trường hợp tương tự. Tuy nhiên, ta cần chú ý rằng

đánh giá lại khả năng cung cấp thường chỉ có ý nghĩa khi bản thân doanh nghiệp không

tự sản xuất, hàng hoá nhận được từ một hay một số nguồn cung khác.

3.3.5 Xây dựng chương trình

* Đầu vào:

- Tổng công xuất K

- Tổng cầu một loại hàng Q

- Đơn giá hàng C

- Chi phí cho mỗi lần đặt hàng A

- Hệ số chi phí dự trữ I

Page 16: Bai toan du tru

- Thời gian đặt hàng T0

* Đầu ra của bài toán là:

- Lượng hàng đặt tối ưu mỗi làn q*

- Tổng chi phí bé nhất F(q*)

- Lượng hàng cực đại trong kho S*

- Số lần đặt hàng tỗi ưu n*

- Chu kỳ dự trữ ,tiêu thụ t*

- Điểm đặt hàng tối ưu B*

* Đoạn chương trình mô phỏng thuật toán bằng ngôn ngữ VB

Private Sub Command1_Click()

Dim k As Currency

Dim Q1 As Currency

Dim n As Currency

Dim t1 As Currency

Dim b As Currency

Dim Q As Currency

Dim c As Currency

Dim i As Currency

Dim A As Currency

Dim T As Currency

Dim F As Currency

Dim s As Currency

If IsNumeric(txtT) And IsNumeric(txtQ) And IsNumeric(txtI) And IsNumeric(txtA) And

IsNumeric(txtC) Then

k = CCur(txtK)

T = CCur(txtT) / 365

Page 17: Bai toan du tru

Q = CCur(txtQ)

c = CCur(txtC)

A = CCur(txtA)

i = CCur(txtI)

Q1 = Sqr(2 * Q * A / (i * c * (1 - Q / k)))

F = Sqr(2 * A * Q * i * c * (1 - Q / k)) + c * Q

n = Q / Q1

t1 = 1 / n

s = Q1 * (1 - Q / k)

b = Q * (T - (t1 * Int(T / t1)))

If b > s Then

b = (k - Q) * (t1 - b / Q)

End If

txtkq = " Lượng hàng đặt mỗi lần là :q*=" & CStr(Q1) & vbNewLine & "Tổng chi phí bé

nhất F(q*)=" & CStr(F) & vbNewLine & "Lượng hàng cực đại trong kho S*=" & CStr(s)

& vbNewLine & " Thời gian 1 chu kỳ t*=" & CStr(CInt(t1 * 365)) & " (ngay)" &

vbNewLine & " Số chu kỳ trong 1 năm n*=" & CStr(n) & vbNewLine & "Điểm đặt hàng

B*=" & CStr(b)

Else

MsgBox "Dữ liệu vào sai hãy nhập lại"

End If

End Sub

3.3.6 Thí dụ minh họa

Một cơ sở sản xuất xăm lốp xe hơi có công suất thiết bị 2000000 bộ/năm, nhu cầu

tiêu thụ 1400000 bộ/năm. Chi phí cho 1 lần chuẩn bị sản xuất là 400$, chi phí sản xuất

mỗi bộ 140$. Chi phí bảo quản có hệ số 0.01. Thời gian chuẩn bị 1 đợt sản xuất 45 ngày.

Hãy phân chia nhu cầu trên thành các đợt sản xuất sao cho tổng chi phí bé nhất.

Page 18: Bai toan du tru

Dựa vào bài toán tổng quát trên chúng ta có thể giải bài toán này bằng chương

trình mô phỏng sau đây:

3.4 Mô hình dự trữ trong trường hợp giá hàng thay đổi theo số lượng đặt hàng mỗi lần (Mô hình dự trữ nhiều mức giá)

Trong các mô hình trên, ta giả thiết giá cuả mỗi đơn vị hàng không đổi. Thực tế do

nhiều lý do khác nhau, giá hàng có thể thay đổi theo qui mô của lô hàng mua mỗi lần,

chẳng hạn người ta có thể chia các mức giá thành: giá bán lẻ, giá bán buôn câp 1, giá bán

buôn cấp 2, hay giá theo đơn đặt hàng có ứng vốn....Nói một cách tổng quát là giá mỗi

đơn vị hàng có thể thay đổi theo số lượng hàng đặt mỗi lần.

3.4.1 Mô tả bài toán

Nhu cầu một loại hàng trong thời gian T là Q đơn vị. Chi phí cho mỗi lần đặt hàng

là A, hệ số chi phí dự trữ là I, giá hàng thay đổi theo số lượng mua mỗi lần:

Nếu q < s1 giá c1

Page 19: Bai toan du tru

s1 q<s2 giá c2

s2 q<s3 giá c3

-----------------------

s k-1 q<sk giá ck

------------------------

sn-1 q giá cn

Trong đó : s1 < s2 < ..... < sn-1 ta gọi si (i=1,2,....,n) là các mốc thay đổi giá; có thể xem như

s0=0 và sn=+ ; và c1> c2>..... >cn.

3.4.2 Thiết lập mô hình

Để đơn giản cho việc tìm lời giải ta giả thiết thời gian bổ sung hàng không đáng

kể (bổ sung tức thời).

Đặt QiC2q

iICq

AQ(q)iF

Đây chính là hàm tổng chi phí nếu mua hàng với giá ci.

ta có:

F1(q) khi q (0,s1)

F2(q) khi q (s1,s2)

Fq)= ------------------------

Fn-1(q) khi q (sn-2,sn-1)

Fn(q) khi q (sn-1,sn)

3.4.3 Lời giải

Theo giả thiết ta có: F1(q)>F2(q)>.....>Fn-1(q) với mọi giá trị q>0.

Gọi qi* là điểm cực tiểu hàm Fi(q) ta có:

iIC

2AQ*iq (1)

do Ci giảm nên ta luôn có: qi* > qi-1*

Page 20: Bai toan du tru

Mặt khác Fi(qi*) = CiQ+2AQ/qi* < Fi-1(qi-1*) = Ci-1Q+2AQ/qi-1*;

F1(q)

F2(q)

F3(q)

0 q1* s1 q2* q3* s2 q

Với các đặc điểm trên ta có thể mô tả thoật toán tìm giá trị tối ưu q* như sau:

a) Trường hợp hai mức giá

- Tính 2IC

2AQ*2q

+ Nếu q2* s1 thì lượng hàng đặt tối ưu q*=q2*. Ta có thể mô tả trên đồ thị:

F F1

F2

s1 q2* q

+ Nếu q2*< s1 tính Q2C2

1s2IC

1sAQ)1(s2F

(Đây là chi phí bé nhất của hàm tổng chi phí với q s1)

- Tính 1IC

2AQ*1q Q1C12AQIC1F *)1(q

Có 3 trường hợp có thể xảy ra như sau:

Page 21: Bai toan du tru

Nếu F2(s1)<F1(q1*) thì q*=s1

Nếu F2(s1)>F1(q1*) thì q*=q1*

Nếu F2(s1)=F1(q1*) thì q*=q1* hoặc q*=s1

Chúng ta có thể mô tả các trường trên đồ thị:

Trường hợp 1: F2(s1)<F1(q1*) thì q*=s1

F F1

F1(q1*) F2

F2(s1)

q1* q2* s1 q

Trường hợp 2: F2(s1)>F1(q1*) thì q*=q1*

F

F1

F2(s1) F2

F1(q1*)

q1* q2* s1 q

Trường hợp 3: q*=s1=q1*

F

F1

F2

F1(q1*)

q1* q2* s1 q

Page 22: Bai toan du tru

b) Trường hợp tổng quát (n mức giá)

Thuật toán: Ta xét từ hàm Fn(q) để tìm giá trị nhỏ nhất của hàm F(q) trong

khoảng [sn-1,+ ), nếu giá trị đó đạt tại điểm cực trị thì ta nhận được giá trị q*=qn* là giá

trị tại đó F(q) nhỏ nhất toàn bộ (với q<+ );

Ngược lại, ta lấy giá trị hàm Fn(sn-1) làm giá trị nhỏ nhất địa phương.

Xét khoảng (sn-2,sn-1) để tìm giá trị nhỏ nhất của F(q) biểu hiện bởi giá trị nhỏ nhất

của hàm Fn-1(q) trong khoảng này; so sánh với giá trị nhỏ nhất này ở khoảng trước.

Như vậy ta tìm được q* khi nhận được giá trị đầu tiên qi* [si-1,si).

Cụ thể là :

+ Tính qn*:

- Nếu qn*≥ sn-1 thì q*=qn* giá trị nhỏ nhất của F(q) là: F(qn*).

- Nếu qn*<sn-1, tính Fn(sn-1) và

+ Tính qn-1*,

- Nếu qn-1*≥ sn-2 thì tính Fn-1(qn-1*) và so sánh giá trị này với Fn(sn-1), giá trị nhỏ

nhất tương cho biết lượng q* tối ưu.

- Nếu qn-1*<sn-2, tính Fn-1(sn-2) và

+ Tính qn-2,

- Nếu qn-2*≥ sn-3 thì tính Fn-2(qn-2*) và so sánh giá trị này với Fn-1(sn-2) và Fn(sn-1),

giá trị nhỏ nhất tương cho biết lượng q* tối ưu.

- Nếu qn-2*<sn-3, tính Fn-2(sn-3) ....

Tiếp tục thuật toán này cho đến khi nhận được q i* [si-1,si) và tìm được lượng đặt

hàng tối ưu q*

Cũng có thể thực hiện thuật toán một cách máy móc nhưng đơn giản khi số mức

giá quá lớn như sau:

Tính các giá trị qk* với k=n, n-1, n-2,.... cho đến khi nhận được giá trị qi* thoả

mãn điều kiện qi* [si-1,si).

Page 23: Bai toan du tru

Tính {Fk(sk-1) với s>i} và Fi(qi*).

Tìm Min{Fk(sk-1) với s>i; Fi(qi*)}.

Điểm đạt giá trị nhỏ nhất chính là điểm cực tiểu của hàm F(q)

3.4.4 Xây dựng chương trình

* Đầu vào:

- Tổng cầu một loại hàng Q

- Số đơn giá D

- Đơn giá hàng Ci

- Lượng hàng đặt Si

- Chi phí cho mỗi lần đặt hàng A

- Hệ số chi phí dự trữ I

- Thời gian đặt hàng T0

* Đầu ra:

- Lượng hàng đặt tối ưu mỗi làn q*

- Tổng chi phí bé nhất F(q*)

- Số lần đặt hàng tỗi ưu n*

- Chu kỳ dự trữ, tiêu thụ t*

- Điểm đặt hàng tối ưu B*

* Đoạn chương trình mô phỏng thuật toán bằng ngôn ngữ VB

Private Sub Command1_Click()

Dim n As Currency

Dim t1 As Currency

Dim b As Currency

Dim qu As Currency

Page 24: Bai toan du tru

Dim i As Integer

Dim A As Currency

Dim T As Currency

Dim F As Currency

Dim Q1 As Currency

Dim I1 As Currency

Dim Q(100) As Currency

Dim Fs(100) As Currency

Dim Fq(100) As Currency

Dim k As Boolean

If IsNumeric(txtT) And IsNumeric(txtQ) And IsNumeric(txtD) And IsNumeric(txts) And

IsNumeric(txtI) And IsNumeric(txts) And IsNumeric(txtD) And IsNumeric(txtA) And

IsNumeric(txtC) Then

T = CCur((txtT) / 365)

Q1 = CCur(txtQ)

A = CCur(txtA)

I1 = CCur(txtI)

For i = 1 To CInt(txtD)

Q(i) = Sqr(2 * A * Q1 / (I1 * c(i)))

Fq(i) = Sqr(2 * A * Q1 * I1 * c(i)) + c(i) * Q1

Next

i = CInt(txtD)

If Q(i) >= s(i - 1) Then

qu = Q(CInt(txtD))

F = Fq(CInt(txtD))

Else

Page 25: Bai toan du tru

Do

i = i - 1

If Q(i) < s(i) And Q(i) > s(i - 1) Then

k = True

End If

Loop While i > 1 And k = False

Fs(i) = A * Q1 / s(i) + (I1 * c(i + 1) * s(i)) / 2 + c(i + 1) * Q1

If Fq(i) < Fs(i) Then

F = Fq(i)

qu = Q(i)

Else

F = Fs(i)

qu = s(i)

End If

End If

n = Q1 / qu

t1 = 1 / n

b = Q1 * (T - t1 * Int(T / t1))

txtkq = "Lượng hàng đặt mỗi lần là q=" & CStr(qu) & vbNewLine & "Tổng chi phí

bé nhất F(q*)=" & CStr(F) & vbNewLine & "Thời gian 1 chu kỳ t*=" & CStr(CInt(t1 *

365)) & " (ngày)" & vbNewLine & "Số chu kỳ trong một năm n*=" & CStr(n) &

vbNewLine & "Điểm đặt hàng B*=" & CStr(b)

Else

MsgBox ("Dư liệu nhập sai hãy nhập lại")

End If

End Sub

Page 26: Bai toan du tru

3.4.5 Thí dụ minh hoạ

Một công ty kinh doanh một loại bóng điện, tổng lượng hàng có khả năng tiêu thụ

là 10000 thùng/năm. Chi phí cho 1 lần đặt mua là 20$; hệ số chi phí bảo quản là 10%,

cường độ bán đều đặn. Thời gian nhập kho không đáng kể. Nếu mỗi lần đặt mua từ 2000

thùng trở lên thì giá 1 thùng là 120$, ngược lại giá 1 thùng là 120,5$. Xác định lượng

hàng mua mỗi lần sao cho tổng chi phí nhỏ nhất; tính thời gian 1 chu kỳ dự trữ và tiêu

thụ, tính điểm đặt hàng tương ứng.