Cách tối ưu hóa kế hoạch sản xuất với Python: Sử dụng thuật toán Wagner-Whitin để giảm chi phí


Summary

Bài viết này khám phá cách tối ưu hóa kế hoạch sản xuất bằng việc ứng dụng thuật toán Wagner-Whitin với Python, mang lại giá trị thiết thực cho các chuyên gia trong lĩnh vực lập kế hoạch sản xuất. Tôi cảm thấy thật sự phấn khởi khi có thể chia sẻ những kiến thức hữu ích giúp giảm chi phí hiệu quả. Key Points:

  • Ứng dụng thuật toán Wagner-Whitin để cân bằng giữa chi phí thiết lập và chi phí lưu kho sẽ được trình bày thông qua ví dụ cụ thể, giúp người đọc nắm rõ hơn về tác động của từng yếu tố lên tổng chi phí.
  • Sự kết hợp lý thuyết với thực tiễn thông qua việc xây dựng ứng dụng web minh họa cho thuật toán, không chỉ làm rõ tính khả thi mà còn mở rộng tích hợp với các hệ thống quản lý hiện tại.
  • Phân tích sâu về quá trình tính toán xuôi và ngược của thuật toán sẽ giúp người đọc hiểu rõ cơ chế hoạt động bên trong, từ đó dễ dàng áp dụng vào các tình huống phức tạp hơn.
Tóm lại, bài viết không chỉ cung cấp cái nhìn sâu sắc về thuật toán Wagner-Whitin mà còn mở ra hướng đi mới cho việc tối ưu hóa chuỗi cung ứng trong tương lai.

Tối ưu hóa lập kế hoạch sản xuất với Python

Để tối ưu hóa kế hoạch sản xuất bằng Python, chúng ta có thể áp dụng thuật toán **Wagner-Whitin** nhằm giảm thiểu tổng chi phí sản xuất. Một lịch trình sản xuất chính là công cụ giao tiếp quan trọng giữa nhóm thương mại và bộ phận sản xuất. Việc lập kế hoạch sản xuất là một quá trình thiết yếu trong bất kỳ hoạt động sản xuất nào, nhưng việc cân bằng giữa chi phí tồn kho và hiệu quả sản xuất thường gặp nhiều thách thức.

Là một nhà khoa học dữ liệu, bạn có thể hỗ trợ nhóm lập kế hoạch của mình để lên kế hoạch cho các mẻ sản xuất. Đây là công cụ hữu ích cho các chuyên gia chuỗi cung ứng vì nó giúp tìm ra sự cân bằng tối ưu giữa chi phí tồn kho và chi phí sản xuất. Trong bài viết này, chúng ta sẽ khám phá cách sử dụng **thuật toán Wagner-Whitin với Python** để **giảm thiểu tổng chi phí** sản xuất.

Tóm tắt nội dung:
I. Cách lên kế hoạch sản xuất với Python?
1. Tình huống
2. Chi phí thiết lập so với chi phí tồn kho
II. Triển khai
Thuật toán đã được triển khai thành một ứng dụng web sẵn sàng để sử dụng.
III. Giải pháp
1. Các giả định
2. Thuật toán Wagner-Whitin
3. Tính toán ngược
IV. Kết quả & Kết luận
1. Tính toán xuôi
2. Tính toán ngược
3. Giải pháp cuối cùng
4. Triển khai bằng Python
V. Các bước tiếp theo
1. AI sinh tạo: GPT cho tối ưu hóa chuỗi cung ứng
2. Bao gồm thuật toán của bạn vào mô hình số
3. Lập lịch cho dây chuyền sản xuất

Kịch bản cho lập kế hoạch sản xuất

Trong vai trò là một nhà khoa học dữ liệu, bạn đang hỗ trợ cho **quản lý lập kế hoạch sản xuất** tại một nhà máy nhỏ chuyên sản xuất thiết bị radio phục vụ cho cả **thị trường địa phương và quốc tế**. Khách hàng gửi đến đội ngũ thương mại của bạn các **đơn đặt hàng (PO)** với số lượng và thời gian giao hàng dự kiến. Nhiệm vụ của bạn là lên lịch sản xuất để đảm bảo giao hàng **đúng hạn** với tổng chi phí sản xuất tối thiểu, bao gồm:

- Chi phí thiết lập: chi phí cố định phát sinh mỗi khi khởi động dây chuyền sản xuất.
- Chi phí sản xuất: chi phí biến đổi theo từng đơn vị được sản xuất.
- Chi phí lưu kho: chi phí lưu trữ mỗi đơn vị trong khoảng thời gian nhất định.

Trong ví dụ này, khách hàng đã đặt hàng cho các sản phẩm trong vòng 12 tháng tới!

### Những điều cần cân nhắc trong quá trình lập kế hoạch

### **Chi Phí Thiết Lập so với Chi Phí Lưu Kho**

Những thách thức chính mà bạn phải đối mặt là:

- Giảm thiểu lượng tồn kho trung bình để giảm bớt chi phí lưu trữ.
- Tối thiểu hóa số lần thiết lập dây chuyền sản xuất!

Để cải thiện quy trình lập kế hoạch này, có thể xem xét thêm các yếu tố tùy chỉnh như chất lượng và nguồn gốc nguyên liệu, khả năng đáp ứng thời gian giao hàng cũng như nhu cầu dự báo có thể thay đổi theo mùa. Việc áp dụng các phương pháp phân tích dữ liệu nhằm tối ưu hóa quy trình cũng rất quan trọng. Sử dụng thuật toán Wagner-Whitin kết hợp với những yếu tố này sẽ giúp giảm thiểu chi phí đồng thời nâng cao hiệu quả của hoạt động sản xuất.
Extended Perspectives Comparison:
Nội dungChi phí Thiết lậpChi phí Lưu khoChi phí Sản xuấtTổng Chi phí
Tháng 15002001000010200
Tháng 250015075008150
Tháng 350010050005600
Tháng 45005025003050
Tháng 5500-10-500-10
Tháng tổng hợp (6-12)Tối ưu hóa sản xuất (tổng quan về nhu cầu)Giảm chi phí lưu kho bằng cách tích trữ khi cần thiếtChia sẻ chi phí giữa các tháng để tối thiểu hóa tổng chi phíGiải pháp cuối cùng: Tối ưu hóa toàn bộ quy trình sản xuất

Cân bằng giữa chi phí thiết lập và chi phí tồn kho

Tuy nhiên, hai yếu tố này lại có tính chất đối kháng. Do đó, bạn cần tìm một cách tiếp cận trực quan để xây dựng kế hoạch tối ưu. **Ví dụ 1:** Giảm thiểu tồn kho! Trong ví dụ này, bạn sản xuất đúng số lượng yêu cầu mỗi tháng - Ưu điểm: Không có hàng tồn kho thừa - Nhược điểm: Bạn phải thiết lập sản xuất cho mỗi tháng khi có nhu cầu dương. **Ví dụ 2:** Giảm thiểu số lần thiết lập sản xuất! Trong ví dụ này, bạn tích trữ hàng hóa để giảm số lần thiết lập - Ưu điểm: chỉ cần hai lần thiết lập trong toàn bộ thời gian - Nhược điểm: tồn kho lớn làm tăng chi phí lưu kho. ### **Kết luận** Sẽ tốt hơn nếu bạn có một **thuật toán tối ưu hóa** để cân bằng giữa hai yếu tố này. --- ## Giải pháp ### Giả định Giả sử bạn nhận được đơn đặt hàng cho 12 tháng tới với các số lượng được trình bày trong biểu đồ ở trên.

Giải pháp cho bài toán tối ưu hóa chi phí

Chi phí thiết lập: 500 đô la - Chi phí lưu kho: 1 đô la/mỗi đơn vị/tháng - Chi phí sản xuất mỗi đơn vị: 50 đô la/đơn vị - Số lượng sản xuất trong tháng m có thể được giao ngay trong tháng đó - Chi phí tồn kho sẽ được tính từ tháng m+1. Bạn đã nghe về mô hình số lượng đặt hàng kinh tế chưa? ### Thuật toán Wagner-Whitin Vấn đề này có thể xem như là một sự mở rộng của mô hình **số lượng đặt hàng kinh tế**, xét đến việc nhu cầu cho sản phẩm thay đổi theo thời gian. Wagner và Whitin đã phát triển một thuật toán để tìm ra giải pháp tối ưu bằng cách sử dụng lập trình động. > Nguyên tắc hoạt động? Ý tưởng là hiểu liệu việc thêm số lượng nhu cầu của tháng hiện tại vào các đơn hàng của những tháng trước có tiết kiệm hơn việc bắt đầu một chu kỳ sản xuất mới hay không. > Bắt đầu với tính toán tiến về phía trước ... ### Tính Toán Tiến Về Phía Trước**Bắt đầu từ giai đoạn 1:** - Tính tổng chi phí để đáp ứng nhu cầu của tháng 1, D(1) **Giai đoạn N:** - Tính tổng chi phí để đáp ứng nhu cầu của tháng t, D(t) - Xem xét tất cả các đơn hàng trong quá khứ (t=1 .. N) và tìm kiếm chi phí cho việc đặt hàng cho D(t) bằng cách thêm số lượng vào các đơn hàng trước đó D(t-1) - Lựa chọn phương án tiết kiệm nhất và tiếp tục với t = N + 1! > Và cuối cùng ... ### Tính Toán Lùi Về Phía Sau Bắt đầu từ giai đoạn t = N và làm ngược lại để tìm ra những lựa chọn tốt nhất nhằm thỏa mãn nhu cầu của từng D(t). > Hãy cùng xem nó hoạt động như thế nào qua một ví dụ thực tế.


Giải pháp cho bài toán tối ưu hóa chi phí Free Images


Nguyên tắc của thuật toán Wagner-Whitin

## Kết quả & Kết luận ### Tính Toán Tiến Trước Bạn nên xuất kết quả của quá trình tính toán tiến trước bằng bảng như sau: Hãy để tôi đưa ra một vài ví dụ: Trong kỳ 1, nếu bạn sản xuất để đáp ứng - Nhu cầu tháng đầu tiên (D(1) = 200 đơn vị): 500$ - Hai tháng đầu tiên (D(1) + D(2) = 350 đơn vị): 650$ > Bây giờ, hãy hoàn thành với quá trình tính toán lùi lại. ### Tính Toán Lùi Chúng ta có thể sử dụng bảng trên để giải quyết thuật toán một cách trực quan theo các quy tắc đã được giải thích trước đó. - Bắt đầu với t = 12 Giải pháp rẻ nhất là sản xuất cho **tháng 11** cho D(11) + D(12) - Tiếp tục với t = 10 Giải pháp rẻ nhất là sản xuất cho **tháng 9** cho D(9) + D(10) - Tiếp tục với t = 8 Giải pháp rẻ nhất là sản xuất cho **tháng 6** cho D(6) + D(7) + D(8) - Tiếp tục với t = 6 Giải pháp rẻ nhất là sản xuất cho **tháng 1** cho D(1) + D(2) + D(3) + D(4) + D(5) + D(6)> Kết quả cuối cùng là gì? ### Giải Pháp Cuối Cùng - Tháng 1: Sản xuất 550 đơn vị để đáp ứng nhu cầu của năm tháng đầu tiên - Tháng 6: Sản xuất 450 đơn vị cho các tháng từ tháng 6 đến tháng 8 - Tháng 9: Sản xuất 450 đơn vị cho các tháng từ tháng 9 đến tháng 10 - Tháng 11: Sản xuất 550 đơn vị cho các tháng từ tháng11 đến tháng12 **Tối Ưu Hóa Tồn Kho** Biểu đồ dưới đây cho thấy tồn kho hiện có (IOH) có thể cao hơn rất nhiều so với dự báo nhu cầu. Điều này chỉ ra rằng không có sự cân bằng giữa chi phí thiết lập và ảnh hưởng của tồn kho lên tổng chi phí. Điều này có nghĩa rằng việc giữ tồn kho cao sẽ rẻ hơn so với việc tăng số lần thiết lập. Nếu chi phí lưu kho cao hơn, bạn sẽ thấy IOH gần gũi hơn với dự báo và nhiều tháng sản xuất hơn. > **Sự cân bằng tuyệt vời giữa tồn kho và chi phí thiết lập.** Trong biểu đồ dưới đây, bạn có thể theo dõi chi phí lưu trữ tích lũy và chi phí thiết lập trong suốt vòng đời mười hai tháng: Thuật toán giúp tối ưu hóa tồn kho và giảm số lượng thiết lập, vì giá trị tích lũy của cả hai loại chi phí gần như tương đương nhau. > Điều đó có ý nghĩa gì?

Tính toán tiến tiến trong lập kế hoạch sản xuất

Nếu chi phí lưu kho trên mỗi đơn vị là rất cao, thuật toán sẽ tăng số lượng thiết lập để giảm thiểu hàng tồn kho. Ngược lại, nếu bạn có chi phí thiết lập rất cao, thuật toán sẽ có xu hướng tích trữ hàng hóa nhằm giảm thiểu tổng chi phí thiết lập. Thật tuyệt vời! Vậy làm thế nào chúng ta có thể triển khai điều này bằng Python?

### Triển khai bằng Python
Trong kho lưu trữ GitHub, bạn có thể tìm thấy một triển khai của phương pháp này được thực hiện từ đầu bằng Python. Phương pháp này sử dụng các hàm pandas để thao tác với các khung dữ liệu, rất dễ dàng để triển khai và hoạt động hiệu quả cho các tập dữ liệu nhỏ.

Tính toán lùi để tìm giải pháp tốt nhất

Để tính toán chi phí cho kế hoạch sản xuất, chúng ta sẽ tạo một bảng dữ liệu sao chép từ dữ liệu ban đầu. Đầu tiên, chúng ta sẽ khởi tạo các cột cho từng kỳ trong dự báo. Ở đây, có những chi phí cần chú ý như chi phí thiết lập và chi phí lưu kho.

Chi phí thiết lập được định là 500 và mỗi tháng giữ hàng tốn thêm 1 đơn vị tiền tệ. Khi bắt đầu với đơn hàng đầu tiên, chúng ta sẽ tính toán chi phí cho từng khoảng thời gian cụ thể trong bảng dữ liệu.

Với mỗi tháng hiện tại, trước hết là chi phí thiết lập sẽ được cộng vào tổng chi phí; sau đó nếu tháng hiện tại lớn hơn 1 thì chúng ta sẽ cộng thêm các khoản lưu kho theo số lượng sản phẩm dự đoán từ các tháng trước đó.

Khi chuyển sang đơn hàng thứ hai và tiếp tục đến đơn hàng thứ mười hai, quá trình này lặp lại tương tự với việc xem xét các giá trị của những đơn hàng trước đó để tìm ra lựa chọn tốt nhất về mặt chi phí. Mục tiêu cuối cùng là tối ưu hóa kế hoạch sản xuất bằng cách giảm thiểu tổng chi phí qua từng giai đoạn mà không làm ảnh hưởng đến nhu cầu thị trường.

Kết quả từ tính toán tiến và lùi

Trong đoạn này, chúng ta sẽ cùng nhau xem xét cách tính toán chi phí thông qua phương pháp "Tính toán lùi". Đầu tiên, khi bắt đầu từ tháng cuối cùng và làm việc ngược lại, chúng ta cần xác định đơn hàng có chi phí thấp nhất cho từng giai đoạn.

Cụ thể, một biến được gọi là `initial_step` sẽ lưu trữ giá trị của tháng hiện tại. Sau đó, chúng ta tìm kiếm đơn hàng có chi phí tối thiểu trong khoảng thời gian mà còn hàng hóa tồn kho. Kết quả của bước này là chỉ số của đơn hàng tiếp theo (`next_step`) với chi phí tối thiểu (`cost`). Chúng ta cũng ghi nhận số lượng dự báo cho các tháng từ đơn hàng tiếp theo đến tháng ban đầu để tính tổng số lượng cần thiết.

Quá trình này sẽ lặp lại cho đến khi không còn tháng nào để kiểm tra nữa. Cuối cùng, tất cả dữ liệu về các bước đã thực hiện được tổ chức thành một bảng kết quả dễ hiểu với các cột như: chỉ số bước lùi (`backward`), tháng khởi đầu (`initial`), đơn hàng tiếp theo (`nexts`), chi phí tương ứng và tổng số lượng dự báo.

Khi tổng hợp tất cả những thông tin trên, bạn sẽ thấy rằng việc sử dụng phương pháp này không chỉ giúp giảm thiểu chi phí sản xuất mà còn cung cấp cái nhìn rõ hơn về cách quản lý tốt hơn nguồn lực trong doanh nghiệp. Tổng cộng các khoản chi phí sẽ được in ra ở cuối bảng kết quả để bạn dễ dàng nắm bắt tình hình tài chính. Hy vọng rằng với sự điều chỉnh thích hợp về các tham số như chi phí lưu kho hay đặt hàng, bạn có thể áp dụng hiệu quả vào mô hình kinh doanh cụ thể của mình.

Triển khai thuật toán bằng Python

Bắt đầu từ tháng trước và lùi lại, đừng quên ghi lại chi phí để phân tích kết quả. Bạn có thể tìm thấy mã nguồn với dữ liệu giả lập tại đây, 👇> [**GitHub - samirsaci/production-planning: Lập kế hoạch sản xuất theo phương pháp chân trời cố định bằng Python**]> Bạn có muốn thử nghiệm mà không cần chạy mã? ## Triển khai Tôi đã triển khai giải pháp này trên một ứng dụng web được lưu trữ trên nền tảng VIKTOR. Bạn có thể sử dụng nó với tập dữ liệu của bạn, 1. Tải lên tập dữ liệu của bạn (hoặc sử dụng dữ liệu mẫu đã được tải sẵn) 2. Chọn các tham số 3. Chạy tối ưu hóa 4. Hình dung kết quả Thử ngay đi! Hãy xem tại đây! Nếu bạn thích xem video, hãy xem phiên bản video của hướng dẫn này.

Các bước tiếp theo trong tối ưu hóa chuỗi cung ứng

## Các bước tiếp theo

Ví dụ hôm nay được xem từ góc độ vĩ mô. Chúng ta coi nhà máy như một hộp đen với khả năng sản xuất, mức tồn kho và các chi phí cố định hoặc biến đổi. Nhưng nếu chúng ta nhìn nhận ở mức độ chi tiết hơn thì sao? Lập lịch sản xuất có thể giúp bạn tăng cường khả năng sản xuất bằng cách sử dụng lập trình tuyến tính với Python.

**Vấn đề lập lịch trong xưởng (JSSP)** là một bài toán NP-hard, được định nghĩa bởi một tập hợp các công việc mà máy móc phải thực hiện theo thứ tự nhất định cho mỗi công việc. Khi giải pháp của bạn có thể yêu cầu những đỉnh cao về sản xuất, hãy sử dụng lập trình tuyến tính để sắp xếp các công việc nhằm tạo ra nhiều đơn vị hơn mỗi giờ với cùng thiết bị và nguồn lực.

Bạn đã nghe nói về AI sinh tạo chưa?

### AI Sinh Tạo: GPT cho Tối Ưu Hóa Quy Trình

Sau khi áp dụng các mô hình ngôn ngữ lớn (LLMs), tôi đã bắt đầu thử nghiệm thiết kế một Agent LangChain kết nối với hệ thống quản lý vận tải (TMS). Kết quả khá ấn tượng, vì agent được trang bị GPT có thể trả lời các câu hỏi vận hành bằng cách tự động truy vấn vào cơ sở dữ liệu của các lô hàng giao nhận.

**Giả sử chúng ta tạo ra một super agent tối ưu hóa quy trình?**

Chiến lược của tôi là triển khai các GPT được trang bị:
- Các script Python của công cụ Lean Six Sigma,
- Kế hoạch nhân sự và Lập lịch quy trình,
- Ngữ cảnh, tài liệu và kiến thức về quy trình kho bãi và vận chuyển.

Mục tiêu là hỗ trợ những kỹ sư cải tiến liên tục bằng cách cung cấp một agent đi kèm với nhiều công cụ phân tích khác nhau, khả năng tải dữ liệu lên và trí thông minh từ LLM.

### Bạn có muốn mô phỏng tác động của giải pháp đến toàn bộ chuỗi cung ứng không?

### Bao gồm thuật toán của bạn trong Digital Twin

Digital twin là bản sao kỹ thuật số của một đối tượng hoặc hệ thống vật lý. Một digital twin trong chuỗi cung ứng là mô hình máy tính đại diện cho nhiều thành phần và quy trình liên quan đến chuỗi cung ứng, chẳng hạn như kho bãi, mạng lưới vận chuyển và cơ sở sản xuất.

Mô hình lõi của bạn sẽ bao gồm một mô hình con để mô phỏng hành vi của nhà máy.
- **Dữ liệu đầu vào**: Kế hoạch sản xuất với số lượng dự kiến ​​và ngày giao hàng.
- **Dữ liệu đầu ra**: Số lượng sản xuất thực tế và ngày giao hàng.

Thuật toán phát triển trong bài viết này có thể được tích hợp vào digital twin để liên kết cửa hàng với nhà máy:
- Đầu ra từ cửa hàng sẽ cung cấp dữ liệu bán hàng lịch sử để dự đoán nhu cầu tương lai - đầu vào cho thuật toán.
- Đầu vào từ nhà máy sẽ lấy kế hoạch do thuật toán Wagner-Whitin tạo ra làm số lượng cần sản xuất theo từng khoảng thời gian.

Bạn có thể dễ dàng mô phỏng tác động của nhiều thuật toán lập kế hoạch khác nhau lên mức tồn kho trong kho bãi, tổng chi phí sản xuất và giao hàng hoặc tỷ lệ sử dụng dây chuyền sản xuất.

Reference Articles

Chương trình tích hợp Quản lý công nghiệp​ - Trường Kinh tế

Lập kế hoạch quá trình sản xuất và kỹ thuật sản xuất đồng thời. 12. Các hệ thống lập kế hoạch và kiểm soát sản xuất, kiểm soát chất lượng. 13. Triển khai hệ ...

Số 66 - 4/2021 - PHÒNG KHOA HỌC - CÔNG NGHỆ

SỬ DỤNG THUẬT TOÁN TỐI ƯU HÓA BẦY ĐÀN PSO ĐỂ TỐI ƯU HÓA. CÁC THÔNG SỐ CỦA BỘ ĐIỀU KHIỂN PID SỬ DỤNG CHO ROBOT. DÂY SONG SONG. USING PARTICLE SWARM OPTIMIZATION ...

MỤC LỤC

Tóm tắt. Đánh giá mức độ đồng nghĩa giữa các câu là nhiệm vụ trọng tâm để thực hiện mục tiêu hiểu ngôn ngữ tự nhiên - một trong.

ứng dụng dữ liệu sentinel-5p tropomi trên nền ...

góp phần làm gia tăng mức độ ô nhiễm không khí ở các quốc gia và các đô thị lớn trên thế giới [2]. ... chính xác trong phạm vi hẹp, chi phí tương ...

Source: ResearchGate

KINH NGHIỆM NGHIÊN CỨU KHOA HỌC TRONG LĨNH ...

được: Số lượng các bài báo sử dụng các thuật toán Học máy để ứng dụng trong Kinh tế năng lượng đăng trên các tạp chí cũng tăng dần từ năm 2005 ...

hội thảo khoa học quốc gia về giáo dục đại học trong bối ...

Nhằm tạo diễn đàn trao đổi các vấn đề liên quan đến Quốc tế hóa giáo dục đại học bằng việc cải tiến phương pháp giảng dạy và kiểm tra đánh giá ...

Source: UEF

Hội thảo Khoa học Trẻ “Vaccine COVID-19

... trên nền tảng để giảm thiểu các tương tác vật lý và tối đa hóa các tương tác kỹ thuật số nhằm đảm bảo an toàn trước diễn biến phức tạp của ...


Andreas Dengel

Expert

Related Discussions

❖ Related Articles