Contact

Follow

  • medium-logo-black-transparent
  • Black Twitter Icon

66 95-460-8830

©2017 by Coraline

Please reload

Recent Posts

ทำความรู้จัก Optimization: ตอนที่ 3

February 10, 2018

 

กลับมาอีกครั้งกับ Optimization ค่ะ ครั้งที่แล้ว เราได้ลองขึ้น Mathematical Model กันแล้ว และคิดว่าหลายๆ ท่านคงเห็นภาพแล้วว่า อะไรคือ Decision Variable, Objective Function และ Constraints ซึ่งเมื่อเรามีตัวแปรหลายตัว ทำให้การวาดกราฟหาจุดตัดไม่ตอบโจทย์อีกต่อไป วันนี้จะมานำเสนอวิธีการแก้ Optimization ด้วย Microsoft Excel กันค่ะ

 

ก่อนอื่น ขอย้อนกลับไปที่โจทย์เดิมของเราก่อนนะคะ

น้องพลอยต้องการวางแผนปริมาณสารอาหารต่อวันให้เพียงพอตามสารอาหารที่คุณหมอแนะนำ โดยต้องการมีค่าใช้จ่ายน้อยที่สุด

(Ref: ทำความรู้จัก Optimization: ตอนที่ 2 https://goo.gl/RHMV8L)

ในโจทย์นี้ Decision Variable คือ

 

 

ซึ่ง Mathematical Model ของโจทย์นี้ คือ

 

 

ต่อมา เรามาทำการแก้โจทย์ด้วย Microsoft Excel ด้วยกันค่ะ

ขั้นตอนมีดังนี้

 

ขั้นตอนที่ 1: เปิด Excel > เลือก File > Options > Add-ins ตรงล่างสุดจะมีช่อง Manage ให้เลือก Excel Add-ins แล้วกด Go

ขั้นตอนที่ 2: จะมีหน้าต่าง Add-ins ขึ้นมาให้เลือก Solver Add-ins ดังภาพ

 

ขั้นตอนที่ 3: ตรงช่อง Data จะมี Solver ปรากฎขึ้นขวาสุดตรงแถบ Analyze

 

 

 

ขั้นตอนที่ 4: กลับมาที่โจทย์ของเรา ให้ใส่รายละเอียดของโจทย์ โดยแบ่งเป็น Decision Variable, Constraints และ Objective Function ดังภาพ

 สำหรับช่องที่ว่างเอาไว้ ให้เว้นเอาไว้ก่อนนะคะ

 

**หมายเหตุ สำหรับโจทย์นี้อยากให้กรอกคล้ายๆ กันไปก่อนค่ะ เพราะช่อง Cell ต่างๆ ของ Excel มีผลต่อการคำนวณ เช่น ในที่นี้ B2 คือ 400 เป็นต้น

ขั้นตอนที่ 5: กรอกสมการลงในช่อง Constraints (B14-B17) และ Objective Function (B20) ตาม Mathematical Model

ตัวอย่างเช่น ปริมาณแคลอรี่ขั้นต่ำ ซึ่งคือผลรวมของจำนวนเมนูแต่ละชนิดคูณกับแคลอรี่ของแต่ละเมนู วิธีการกรอกสมการใน Excel ทำได้ 2 วิธี คือ

  1. =A11*B2+B11*C2+C11*D2+D11*E2

  2. =SUMPRODUCT(A11:D11,B2:E2)

ดังภาพ

 

เช่นเดียวกันกับ Objective Function ซึ่งคือผลรวมของจำนวนจานแต่ละเมนูคูณกับราคาแต่ละเมนู จะขึ้นเลข 0 มาทุกช่องที่เรากรอกสมการ นั้นเพราะ เรายังไม่มี Decision Variable ในช่อง A11 – D11 นั้นเองค่ะ

 

ขั้นตอนที่ 6: คราวนี้ถึงเวลาที่เราจะมาใช้ Solver กันแล้ว สิ่งที่เราต้องกรอก คือ

  1. Set Objective: เลือกช่อง B20 นั้นคือสมการ Objective Function ที่เรากำหนดเอาไว้

  2. To: หมายถึง เราต้องการให้ค่า Objective Function นั้นเป็นค่ามากที่สุด น้อยที่สุด หรือมาค่าเข้าสู่ตัวเลขใด ซึ่งในโจทย์นี้คือ น้อยที่สุด ให้เลือก Min

  3. By Changing Variable Cells: คือ ช่องของ Decision Variables ซึ่งเป็นตัวแปรที่เราต้องการให้โปรแกรมเลือกจุดที่เหมาะสมที่สุดให้เรา เราจึงปล่อยว่างเอาไว้ นั้นคือ A11-D11 นั้นเอง

  4. Subject to the Constraints: ให้เราเลือกเซลล์ที่เรากรอกสมการ Constraint เอาไว้ โดยที่ในสมการ Constraints นี้จะมีตัวแปล Decision Variables ผูกเข้าไว้อยู่ด้วย ในที่นี้ คือ ปริมาณแคลอรี่ขั้นต่ำ, ปริมาณโปรตีนขั้นต่ำ, ปริมาณคาร์โบไฮเดรตขั้นต่ำ, ปริมาณไขมันขั้นต่ำ (คำว่าขั้นต่ำ หรืออย่างน้อย คือ ต้องมากกว่าค่าใดค่าหนึ่ง) และ Decision Variable ทุกตัวต้องเป็นจำนวนเต็ม (คือ 0, 1, 2, 3 ไปเรื่อยๆ เท่านั้น จะเป็นทศนิยมไม่ได้)

โจทย์นี้ เป็นเป็นสมการประเภทเชิงเส้นหรือ Linear ดังนั้น Select a Solving Method: จึงเป็น Simplex LP ได้ จากนั้นก็กด Solve ค่ะ

 

 

 

ขั้นตอนที่ 7: จะได้คำตอบดังภาพนี้

 

 

ซึ่งจะเห็นได้ว่า เราได้ Decision Variable แล้ว นั้นคือ 0, 3, 1, 0 หรือ คือการเลือกเมนูที่ 2 จำนวน 3 จาน  และเมนูที่ 3 จำนวน 1 จาน โดยที่ทุก Constraints เป็นไปตามเงื่อนไขทั้งสิ้น นั้นคือ ต้องมากกว่าปริมาณที่กำหนด และมีราคารวมทั้งสิ้น 900 บาท ซึ่งเป็นงบประมาณที่น้อยที่สุด

 

อย่างไรก็ตาม โจทย์ของน้องพลอยนั้น ถือว่าเป็นโจทย์ที่มิได้มีความซับซ้อนมากนัก โดยโจทย์นี้มีสมการข้อจำกัดต่างๆ แบบเชิงเส้น หรือ Linear จึงสามารถแก้โจทย์นี้ได้โดยใช้ Microsoft Excel สำหรับโจทย์อื่นๆ เช่น เมื่อมีตัวแปรมากขึ้น หรือ Model มีความซันซ้อนมากขึ้น เช่นมีความ Dynamic ซึ่งการตัดสินใจมีความเกี่ยวข้องกันกับเวลาที่เปลี่ยนผ่าน จำเป็นต้องใช้โปรแกรมคำนวณอื่นๆ มาช่วยในการแก้ปัญหา เช่น

  • AMPL – modeling language for large-scale linear, mixed integer and nonlinear optimization.

  • CPLEX – integer, linear and quadratic programming.

  • FortSP – stochastic programming.

  • GAMS – General Algebraic Modeling System.

  • LINDO - (Linear, Interactive, and Discrete Optimizer) a software package for linear programming, integer programming, nonlinear programming, stochastic programming, and global optimization. The "What's Best!" Excel add-in performs linear, integer, and nonlinear optimization using LINDO.

  • MATLAB – linear, integer, quadratic, and nonlinear problems with Optimization Toolbox; multiple maxima, multiple minima, and non-smooth optimization problems; estimation and optimization of model parameters.

  • Mathematica – large-scale multivariate constrained and unconstrained, linear and nonlinear, continuous and integer optimization.

  • XPRESS – integer, linear and quadratic and nonlinear programming.

 

อ้างอิง: https://en.wikipedia.org/wiki/List_of_optimization_software

 

แนวทางการเลือกใช้เครื่องมือ ขึ้นอยู่กับลักษณะของโจทย์ เช่น Linear Programing, Quadratic programming,   Dynamic programming, Integer programming, Stochastic programming เป็นต้น

 

สิ่งที่สำคัญที่สุดในการทำ Optimization มิใช่การใช้เครื่องมือ แต่คือการตั้งเป้าหมายการทำโจทย์ (Objective Function), การเลือกตัวแปรที่ต้องตัดสินใน (Decision Variable) และเขียนสมการข้อจำกัดต่างๆ (Constraints) และเลือกรูปแบบ Programming ให้ถูกต้อง บางโจทย์อาจมีความจำเป็นต้อง Relax หรือมองข้ามข้อจำกัดบางประการ เพื่อให้สามารถตัดสินใจต่อได้

 

Optimization จะว่ายากก็คงยาก จะว่าง่ายก็คงไม่ง่ายขนาดนั้น อยู่ที่ความตั้งใจ มุมมองการวางสมการของนักคิด ซึ่งเชื่อว่าOptimization เป็นศาสตร์หนึ่งที่กำลังจะถูกนำมาใช้งานมากขึ้นในโลกยุค Digital ที่ต้องการความรวดเร็วในการทำงาน เพื่อให้การตัดสินใจดำเนินธุรกิจต่างๆ ชัดเจน กระชับ เหมาะสม และสมดุลที่สุด จึงเรียกได้ว่า เป็นศาสตร์หนึ่งที่ไม่ควรมองข้ามอย่างยิ่ง

 

#BigData

#DataScience

#Optimization

#ProductivityImprovement

#Coraline ให้คำปรึกษาการทำ Data Science and Data Modeling เพื่อเพิ่มศักยภาพของธุรกิจ

 

Share on Facebook
Share on Twitter
Please reload

Please reload