1 / 29

259201 Computer Programming for Engineers

259201 Computer Programming for Engineers. Week 8 Engineering Problem#1. ปัญหาด้านการจัดการสินค้าคงคลัง (Inventory Problem). การผลิต (Production) คือ การแปลงสภาพของวัตถุดิบ ด้วยกระบวนการต่างๆ เพื่อให้ได้มาซึ่งสินค้าหรือผลิตภัณฑ์ที่ตรงตามความต้องการของลูกค้า โดยอาศัยทรัพยากรต่างๆในระบบการผลิต

Download Presentation

259201 Computer Programming for Engineers

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 259201Computer Programming for Engineers Week 8 Engineering Problem#1

  2. ปัญหาด้านการจัดการสินค้าคงคลัง (Inventory Problem) • การผลิต (Production) คือ การแปลงสภาพของวัตถุดิบ ด้วยกระบวนการต่างๆ เพื่อให้ได้มาซึ่งสินค้าหรือผลิตภัณฑ์ที่ตรงตามความต้องการของลูกค้า โดยอาศัยทรัพยากรต่างๆในระบบการผลิต • วัตถุดิบ จึงเป็นปัจจัยสำคัญของระบบการผลิตในภาคอุตสาหกรรม และเป็นส่วนหนึ่งในการกำหนดราคาของสินค้า • ดังนั้น การจัดการเพื่อลดต้นทุนของการจัดการวัตถุดิบ จึงเป็นอีกทางเลือกหนึ่งในการเพิ่มโอกาสในการทำกำไรให้แก่องค์กร

  3. ต้นทุนในการจัดการสินค้าคงคลังต้นทุนในการจัดการสินค้าคงคลัง • เราสามารถแบ่งต้นทุนในการจัดการสินค้าคงคลัง ออกเป็น 3 ประเภทหลักๆ ได้แก่ • ต้นทุนราคาของวัตถุดิบ (บาท/ชิ้น) • ต้นทุนในการสั่งซื้อแต่ละครั้ง (บาท/ครั้ง) เช่น ต้นทุนการขนส่ง เป็นต้น • ต้นทุนในการเก็บรักษาวัตถุดิบ (บาท/ชิ้น/ปี) เช่น ต้นทุนค่าเช่าพื้นที่เก็บสินค้า, เงินเดือนของพนักงานที่ดูแลคลังสินค้า เป็นต้น หน่วยของต้นทุนในการเก็บรักษาวัตถุดิบ อาจเป็น บาท/ชิ้น/เดือน หรือ บาท/ชิ้น/วัน ก็ได้ขึ้นอยู่กับความเหมาะสมของการหมุนเวียนวัตถุดิบในคลัง Material Cost Ordering Cost Holding Cost

  4. ต้นทุนในการจัดการสินค้าคงคลังต้นทุนในการจัดการสินค้าคงคลัง • ร้านขายก๋วยเตี๋ยว วิเคราะห์ต้นทุนที่เกิดขึ้นของลูกชิ้นหมู พบว่า ในการซื้อและเก็บรักษาลูกชิ้นหมูของที่ร้าน มีต้นทุนต่างๆ ดังนี้ • ต้นทุนค่าลูกชิ้นหมู กิโลกรัมละ 140 บาท • ในการซื้อลูกชิ้นหมูแต่ละครั้ง เสียค่าน้ำมันรถ 15 บาท/ครั้ง • ตู้เย็นที่ใช้ในการเก็บลูกชิ้น กินไฟเฉลี่ยวันละ 25 บาท และสามารถเก็บลูกชิ้นได้สูงสุด 100 กิโลกรัม คิดเป็นค่าไฟ = 25/100 = 0.25 บาท/กก./วัน • เจ้าของร้านวิเคราะห์ต้นทุนลูกชิ้นหมู ได้ดังนี้ • Material Cost = ค่าลูกชิ้นหมู = 140 บาท/กิโลกรัม • Ordering Cost = ค่าน้ำมันในการซื้อลูกชิ้นแต่ละครั้ง = 15 บาท / ครั้ง • Holding Cost = ค่าไฟตู้เย็นที่ใช้เก็บลูกชิ้น = 0.25 บาท / กก. / วัน

  5. ต้นทุนในการจัดการสินค้าคงคลังต้นทุนในการจัดการสินค้าคงคลัง • เจ้าของร้านพบว่า โดยเฉลี่ยแล้วใน 1 เดือน จะต้องใช้ลูกชิ้นหมูในการทำก๋วยเตี๋ยว 60 กิโลกรัม เจ้าของร้านจะซื้อลูกชิ้นหมูครั้งละกี่กิโลกรัม? และควรซื้อเดือนละกี่ครั้ง? จึงจะทำให้ต้นทุนต่ำที่สุด • หากกำหนดให้ จำนวนลูกชิ้นหมูที่อยู่ในตู้เย็นโดยเฉลี่ยแล้ว มีจำนวนเท่ากับ ครึ่งหนึ่งของการสั่งซื้อแต่ละครั้ง • ซื้อครั้งเดียว ครั้งละ 60 กิโลกรัม? • ซื้อ 2 ครั้ง ครั้งละ 30 กิโลกรัม ? • ซื้อ 3 ครั้ง ครั้งละ 20 กิโลกรัม? • ซื้อ 4 ครั้ง ครั้งละ 15 กิโลกรัม? การสั่งซื้อแบบไหนที่จะทำให้ต้นทุนต่ำที่สุด??? ......

  6. ต้นทุนในการจัดการสินค้าคงคลังต้นทุนในการจัดการสินค้าคงคลัง • เจ้าของร้านจึงได้ ใช้โปรแกรม MATLAB ชื่อ meatball.m ในการคำนวณค่าใช้จ่ายที่เกิดขึ้น ดังนี้ N = input('Number of Ordering (order/month): '); Q = input('Quantity per order (unit/order): '); M = input('Input material cost (baht/unit): '); O = input('Input ordering cost (baht/order): '); H = input('Input holding cost (baht/unit/day): '); MC = Q*N*M; OC = N*O; HC = Q/2*H*30; TC = MC+OC+HC; fprintf('Total Cost is: %.0f baht/month \n',TC)

  7. ต้นทุนในการจัดการสินค้าคงคลังต้นทุนในการจัดการสินค้าคงคลัง • เจ้าของร้านทำการ Trial and error ใส่จำนวนครั้ง และปริมาณการซื้อแต่ละครั้ง ได้ผลลัพธ์ ดังนี้ Minimum cost

  8. ต้นทุนในการจัดการสินค้าคงคลังต้นทุนในการจัดการสินค้าคงคลัง • จะมีวิธีใดบ้าง ที่เจ้าของร้าน ไม่ต้องเสียเวลาทดลองสุ่มค่าตัวเลขใส่ลงไปเอง? • โปรแกรมสามารถหาคำตอบที่เป็นต้นทุนที่ต่ำที่สุด ได้อย่างไร??? • สังเกตุจำนวนการสั่งซื้อ และปริมาณการสั่งซื้อต่อครั้ง ที่สัมพันธ์กับต้นทุน

  9. ต้นทุนในการจัดการสินค้าคงคลังต้นทุนในการจัดการสินค้าคงคลัง จุดที่ต้นทุนต่ำที่สุดจากสถานการณ์ทั้งหมดที่ทดสอบ หมายเหตุ: เนื่องจากต้นทุนค่า วัตถุดิบ มีค่าเท่ากันหมดในทุกกรณี จึงไม่ได้นำมาพิจารณาในการเขียนกราฟ

  10. ต้นทุนในการจัดการสินค้าคงคลังต้นทุนในการจัดการสินค้าคงคลัง เจ้าของร้าน จึงทดลองเปลี่ยนปริมาณการสั่งซื้อต่อครั้งไปเรื่อยๆ ตั้งแต่ 1 kg – 60 kg และเขียนกราฟ จุดที่ต้นทุนต่ำที่สุดจากสถานการณ์ทั้งหมดที่ทดสอบ

  11. ต้นทุนในการจัดการสินค้าคงคลังต้นทุนในการจัดการสินค้าคงคลัง • เจ้าของร้านได้พัฒนาโปรแกรม จากโปรแกรมเดิมที่มีอยู่ โดยให้โปรแกรมเพิ่มจำนวนการสั่งซื้อลูกชิ้นหมูทีละ 1 kg เพื่อคำนวณหาต้นทุนที่เกิดขึ้นทั้งหมด แล้วเลือกปริมาณการสั่งซื้อที่ทำให้ต้นทุนต่ำที่สุด • เจ้าของร้านก๋วยเตี๋ยว ควรออกแบบให้โปรแกรมทำงานอย่างไรบ้าง??? • เมื่อต้องการผลลัพธ์ของโปรแกรม ดังนี้

  12. ต้นทุนในการจัดการสินค้าคงคลังต้นทุนในการจัดการสินค้าคงคลัง • OutputQ = ปริมาณในการซื้อลูกชิ้นต่อครั้ง (kg/order)N = จำนวนครั้งในการซื้อลูกชิ้นต่อเดือน (order/month)TC = ต้นทุนรวมในการจัดซื้อจัดเก็บลูกชิ้น (baht/month) • InputD = ปริมาณลูกชิ้นที่ต้องการใช้ตลอดทั้งเดือน = 60 kg/monthM = ต้นทุนลูกชิ้นต่อกิโลกรัม = 140 baht/kgO = ต้นทุนในการซื้อลูกชิ้นต่อครั้ง = 15 baht/orderH = ต้นทุนในการจัดเก็บลูกชิ้น (โดยเฉลี่ยมีลูกชิ้นอยู่ในตู้เย็น Q/2) = 0.25 baht.kg/day หรือ = 0.25baht/kg/day * 30 day/month = 7.5 baht/month

  13. ต้นทุนในการจัดการสินค้าคงคลังต้นทุนในการจัดการสินค้าคงคลัง วิธีที่ 1: • ให้โปรแกรมคำนวณต้นทุนกรณีที่สั่งซื้อลูกชิ้นหมู ตั้งแต่ 1 kg – 60 kg และเก็บค่าต้นทุน ปริมาณสั่งซื้อ และจำนวนการสั่งซื้อ ที่ต่ำที่สุดไว้ • สรุปปริมาณสั่งซื้อ จำนวนครั้งในการสั่งซื้อ และต้นทุนที่ต่ำที่สุด

  14. แนวความคิดของวิธีที่ 1 Annual Cost หาต้นทุนที่เกิดขึ้นในทุกๆ จุด แล้วเปรียบเทียบว่าเป็นค่าต่ำสุดหรือไม่ minTC Total Cost Curve TC(1) TC(2) Holding Cost Curve TC(3) ...... ...... ...... Order (Setup) Cost Curve Order Quantity Optimal Order Quantity (Q*)

  15. แนวความคิดของวิธีที่ 1 D = input('Input demand of material (unit/month): '); M = input('Input material cost (baht/unit): '); O = input('Input ordering cost (baht/order): '); H = input('Input holding cost (baht/unit/day): '); minTC = 100000; for i = 1:D Q = i; N = D/Q; MC = Q*N*M; OC = N*O; HC = Q/2*H*30; TC = MC+OC+HC; if TC < minTC minTC = TC; Qo = Q; %Qoคือ ปริมาณการสั่งซื้อที่ทำให้เกิดต้นทุนต่ำที่สุด No = N; %No คือ จำนวนครั้งในการซื้อของที่ทำให้เกิดต้นทุนต่ำที่สุด TCo = TC; % TCoคือ ต้นทุนที่ต่ำที่สุดที่เกิดขึ้น end end fprintf('The best quantity is: %.2f kg/order \n',Qo) fprintf('Number of order is: %.2f order/month \n',No) fprintf('Total Cost is: %.0f baht/month \n',TCo)

  16. ต้นทุนในการจัดการสินค้าคงคลังต้นทุนในการจัดการสินค้าคงคลัง วิธีที่ 2: • ให้โปรแกรมคำนวณต้นทุนกรณีที่สั่งซื้อลูกชิ้นหมู เริ่มจาก 1 kg • โปรแกรมคำนวณต้นทุนที่เกิดขึ้น จากปริมาณการสั่งซื้อนั้นๆ • โปรแกรมทำการเปรียบเทียบ ว่าต้นทุนที่เกิดขึ้นต่ำกว่าปริมาณการสั่งซื้อก่อนหน้านั้นหรือไม่หากต้นทุนที่เกิดขึ้นต่ำกว่าปริมาณสั่งซื้อก่อนหน้า ให้รันโปรแกรมต่อไปหากต้นทุนที่เกิดขึ้นสูงกว่า ปริมาณการสั่งซื้อก่อนหน้านั้น แสดงว่าปริมาณการสั่งซื้อก่อนหน้านี้ เป็นปริมาณการสั่งซื้อที่ต่ำที่สุดแล้ว ให้โปรแกรมออกจากลูป • สรุปปริมาณการสั่งซื้อที่ต่ำที่สุด จำนวนครั้งในการสั่งซื้อ และต้นทุนที่ต่ำที่สุด

  17. แนวความคิดของวิธีที่ 2 Annual Cost Total Cost เมื่อเทียบกับปริมาณการสั่งซื้อก่อนหน้า เริ่มมีค่ามากขึ้น แสดงว่า TC (i-1) มีค่าต่ำสุด Total Cost Curve TC(1) TC(i) TC(2) TC(i-1) TC(3) Holding Cost Curve ...... โปรแกรมออกจากลูป และไม่รันในส่วนนี้ต่อ Order (Setup) Cost Curve Order Quantity Optimal Order Quantity (Q*)

  18. แนวความคิดของวิธีที่ 2 D = input('Input demand of material (unit/month): '); M = input('Input material cost (baht/unit): '); O = input('Input ordering cost (baht/order): '); H = input('Input holding cost (baht/unit/day): '); for i = 1:D Q = i; N = D/Q; MC = Q*N*M; OC = N*O; HC = Q/2*H*30; TC(i) = MC+OC+HC; if i >1 if TC(i)> TC (i-1) Qo = i-1; %Qoคือ ปริมาณการสั่งซื้อที่ทำให้เกิดต้นทุนต่ำที่สุด No = D/(i-1); %No คือ จำนวนครั้งในการซื้อของที่ทำให้เกิดต้นทุนต่ำที่สุด TCo = TC(i-1); % TCoคือ ต้นทุนที่ต่ำที่สุดที่เกิดขึ้น break end end end disp('---------------------------------------------------') fprintf('The best quantity is: %.2f kg/order \n',Qo) fprintf('Number of order is: %.2f order/month \n',No) fprintf('Total Cost is: %.2f baht/month \n',TCo) disp('===================================================') ข้อดี ของวิธีที่ 2 คือ เมื่อเจอคำตอบแล้ว โปรแกรมจะออกจากลูปทันที ไม่จำเป็นต้องรันจนครบทุกรอบ

  19. เปรียบเทียบผลลัพธ์จากวิธีคิดที่ 1 และ 2 • จากการเปรียบเทียบ พบว่า • การซื้อลูกชิ้นครั้ง 15 หรือ 16 kg ทำให้เกิดต้นทุนเท่ากัน คือ 8,516.25 บาท • นั่นแสดงว่า เจ้าของร้านจะเลือกซื้อครั้งละ 15 หรือ 16 kg ก็ไม่ต่างกัน • พิจารณาจำนวนครั้งในการสั่งซื้อ4 ครั้ง/เดือน = ซื้อทุกๆ 7.5 วัน3.75 ครั้ง/เดือน = ซื้อทุกๆ 8 วัน • ดังนั้น เจ้าของร้านจะเลือกทางเลือกใดก็ได้ ต้นทุนที่เกิดขึ้นเท่ากัน

  20. ตัวอย่างที่ 1: Inventory Problem • บริษัทผลิตเฟอร์นิเจอร์ ต้องการคำนวณหาปริมาณการสั่งซื้อ ในการสั่งซื้อวัสดุของการผลิตโคมไฟ ที่ทำให้เกิดต้นทุนในการสั่งซื้อ และการจัดเก็บวัสดุน้อยที่สุด ซึ่งค่าใช้จ่ายต่างๆ ของวัสดุในการผลิตโคมไฟ ได้แก่ • ราคาวัตถุดิบที่ใช้ทำโคมไฟ = 120 บาท/ชิ้น • ค่าใช้จ่ายในการสั่งซื้อ = 160 บาท/ครั้ง • ค่าใช้จ่ายในการเก็บรักษา = 40 บาท/ชิ้น/ปี • หากความต้องการของลูกค้าเท่ากับ 6,000 ชิ้น/ปี บริษัทควรสั่งซื้อปีละกี่ครั้ง ครั้งละกี่ชิ้น และทำให้เกิดต้นทุนเท่าใด

  21. ตัวอย่างที่ 1: Inventory Problem • นักศึกษาสามารถแก้ไข/ดัดแปลง จากโปรแกรม meatball2.m หรือ meatball3.m • จะต้องมีการแก้ไขโปรแกรมที่บรรทัดใดบ้าง??? หากต้องการผลลัพธ์ ดังนี้

  22. ตัวอย่างที่ 2: Advanced Inventory Problem • จากตัวอย่างที่ 1 หากผู้ผลิตวัตถุดิบ จัดส่งวัตถุดิบให้เป็นกล่อง โดย 1 กล่อง บรรจุ จำนวนวัตถุดิบ 1 โหล • ดังนั้น ปริมาณการสั่งซื้อที่ซื้อจริง จะไม่เท่ากับปริมาณการสั่งซื้อที่ดีที่สุดที่คำนวณได้ • เช่น ถ้าปริมาณการสั่งซื้อที่ดีที่สุด = 18 ชิ้น (อยู่ระหว่าง 1 โหล และ 2 โหล)จะต้องพิจารณาว่า ซื้อ 12 ชิ้น หรือ 24 ชิ้น ที่จะทำให้ต้นทุนต่ำกว่ากัน 12 ชิ้น 12 ชิ้น จำนวนที่ซื้อได้ (Upper case) เปรียบเทียบต้นทุน ** 18 ชิ้น ** ปริมาณการสั่งซื้อที่ดีที่สุด 12 ชิ้น จำนวนที่ซื้อได้ (Lower case)

  23. ตัวอย่างที่ 2: Advanced Inventory Problem • ดังนั้น เมื่อคำนวณปริมาณการสั่งซื้อที่ดีที่สุดได้แล้ว จะต้องปัดให้เป็นจำนวนที่บรรจุในกล่องได้พอดี (บรรจุกล่องละ 12 ชิ้น) • ตรวจสอบเงื่อนไข ว่าจำนวนที่คำนวณได้หาร 12 ลงตัวหรือไม่ • mod(Qo,12) • คำนวณต้นทุนกรณี Lower Case • LBox = floor(Qo/12); • LQ = 12*LBox; • LN = D/LQ; • LTC = (LQ*LN*M)+(LN*O)+(LQ/2*H); คำสั่ง mod(x,y) ใช้ในการตรวจสอบว่า x หารด้วย y ลงตัวหรือไม่ ถ้าหารลงตัว ผลลัพธ์ของ mod จะมีค่าเท่ากับ 0 คำสั่ง floor ใช้ในการปัดเศษของสมาชิกของอาร์เรย์ลง ปริมาณการสั่งซื้อด้าน Lower จำนวนครั้งในการสั่งซื้อ ด้าน Lower ต้นทุนรวมในการสั่งซื้อ ด้าน Lower Material cost Ordering cost Holding cost

  24. ตัวอย่างที่ 2: Advanced Inventory Problem • คำนวณต้นทุนกรณี Upper Case • UBox = ceil(Qo/12); • UQ = 12*UBox; • UN = D/UQ; • UTC = (UQ*UN*M)+(UN*O)+(UQ/2*H); • จากนั้นทำการเปรียบเทียบ LTC และ UTC ว่าต้นทุนด้านใดน้อยกว่า • เลือกทางเลือกที่ทำให้เกิดต้นทุนต่ำกว่า • สรุปและประมวลผล คำสั่ง ceil ใช้ในการปัดเศษของสมาชิกของอาร์เรย์ขึ้น ปริมาณการสั่งซื้อด้าน Upper จำนวนครั้งในการสั่งซื้อ ด้าน Upper ต้นทุนรวมในการสั่งซื้อ ด้าน Lower Material cost Ordering cost Holding cost

  25. ผลลัพธ์จากตัวอย่างที่ 2 • ให้นักศึกษาทดลองเขียนโปรแกรม MATLAB ของตัวอย่างนี้

  26. Q & A

  27. เฉลย ตัวอย่างที่ 1 (lamp.m) D = input('Input demand of material (unit/year): '); M = input('Input material cost (baht/unit): '); O = input('Input ordering cost (baht/order): '); H = input('Input holding cost (baht/year): '); for i = 1:D Q = i; N = D/Q; MC = Q*N*M; OC = N*O; HC = Q/2*H; TC(i) = MC+OC+HC; if i >1 if TC(i)> TC (i-1) Qo = i-1; %Qoคือ ปริมาณการสั่งซื้อที่ทำให้เกิดต้นทุนต่ำที่สุด No = D/(i-1); %No คือ จำนวนครั้งในการซื้อของที่ทำให้เกิดต้นทุนต่ำที่สุด TCo = TC(i-1); % TCoคือ ต้นทุนที่ต่ำที่สุดที่เกิดขึ้น MCo = Qo*No*M; OCo = No*O; HCo = Qo/2*H; break end end end disp('---------------------------------------------------') fprintf('The best quantity is: %.2f units/order \n',Qo) fprintf('Number of order is: %.2f orders/year \n',No) fprintf('Total Cost is: %.2f baht/year \n',TCo) fprintf('\t Total material cost is: %.2f baht/year\n',MCo) fprintf('\t Total ordering cost is: %.2f baht/year\n',OCo) fprintf('\t Total holding cost is: %.2f baht/year\n',HCo) disp('===================================================')

  28. เฉลย ตัวอย่างที่ 2 (lamp2.m) ส่วนที่ 1/2 D = input('Input demand of material (unit/year): '); M = input('Input material cost (baht/unit): '); O = input('Input ordering cost (baht/order): '); H = input('Input holding cost (baht/year): '); for i = 1:D Q = i; N = D/Q; MC = Q*N*M; OC = N*O; HC = Q/2*H; TC(i) = MC+OC+HC; if i >1 if TC(i)> TC (i-1) Qo = i-1; %Qoคือ ปริมาณการสั่งซื้อที่ทำให้เกิดต้นทุนต่ำที่สุด No = D/(i-1); %No คือ จำนวนครั้งในการซื้อของที่ทำให้เกิดต้นทุนต่ำที่สุด if mod(Qo,12) == 0 TCo = TC(i-1); MCo = Qo*No*M; OCo = No*O; HCo = Qo/2*H; else %คำนวณด้าน Lower case LBox = floor(Qo/12); LQ = 12*LBox; LN = D/LQ; LTC = (LQ*LN*M)+(LN*O)+(LQ/2*H); %คำนวณด้าน Upper case UBox = ceil(Qo/12); UQ = 12*UBox; UN = D/UQ; UTC = (UQ*UN*M)+(UN*O)+(UQ/2*H); ตรวจสอบว่า Qoหารด้วย 12 ลงตัวหรือไม่ คำนวณต้นทุนกรณี Lower case

  29. เฉลย ตัวอย่างที่ 2 (lamp2.m) ส่วนที่ 2/2 %เปรียบเทียบต้นทุน LTC และ UTC if LTC < UTC Qo = LQ; Box = LBox; No = LN; TCo = LTC; MCo = LQ*LN*M; OCo = LN*O; HCo = LQ/2*H; else Qo = UQ; Box = UBox; No = UN; TCo = UTC; MCo = UQ*LN*M; OCo = UN*O; HCo = UQ/2*H; end end break end end end disp('---------------------------------------------------') fprintf('The best quantity is: %.2f units/order or %.2f boxes/order \n',Qo,Box) fprintf('Number of order is: %.2f orders/year \n',No) fprintf('Total Cost is: %.2f baht/year \n',TCo) fprintf('\t Total material cost is: %.2f baht/year\n',MCo) fprintf('\t Total ordering cost is: %.2f baht/year\n',OCo) fprintf('\t Total holding cost is: %.2f baht/year\n',HCo) disp('===================================================‘) เปรียบเทียบต้นทุน กรณี Lower และ Upper case

More Related