ทำความเข้าใจ Optimization ศาสตร์ที่ใช้แก้ปัญหาเพื่อให้ได้ค่าที่เหมาะสมที่สุด

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

วิธีการกำหนดปัญหาของ Optimization

เพื่อให้ทุกคนเห็นภาพในการกำหนดปัญหาและสมการของ Optimization มากขึ้น เราจะมาดูตัวอย่างจากโจทย์ด้านล่างกัน

ตัวอย่าง ปัญหาการวางแผนบุคลากร (A Staff Planning Problem)
พิจารณาหอผู้ป่วยใน (Hospital Ward) ที่ต้องมีบุคลากรทำงานตลอด 24 ชั่วโมง โดยที่ในแต่ละช่วงเวลาของวันจะต้องการจำนวนบุคลากรที่ทำงานในกะนั้น ๆ แตกต่างกันไป ตามที่แสดงในรูปที่ 1

A picture containing graphical user interface

Description automatically generated
รูปที่ 1 จำนวนความต้องการของบุคลากรที่ทำงานในแต่ละช่วงเวลา [1]
โดย Shift = กะทำงาน, Hours = เวลาทำงาน, Demand = จำนวนคนที่ต้องการในกะนั้น ๆ

ซึ่งบุคลากรแต่ละคนจะทำงาน 8 ชั่วโมงต่อวัน หรือทำงาน 2 กะต่อวัน เนื่องจากทำงาน 1 กะ จะใช้เวลาทำงาน 4 ชั่วโมง เป้าหมายของปัญหานี้ คือ การที่เราสามารถจัดสรรบุคลากรให้สามารถมาทำงานตามความต้องการ (Demand) ของหอผู้ป่วยในได้ โดยใช้บุคลากรสำรองน้อยที่สุด ขั้นตอนแรกในการทำ Optimization คือการกำหนดปัญหาให้อยู่ในรูปแบบสมการทางคณิตศาสตร์ โดยมีองค์ประกอบ 4 ส่วนที่เราต้องกำหนด ดังนี้ 

A picture containing diagram

Description automatically generated

1.ตัวแปรที่ใช้ในการตัดสินใจ (Decision Variables)    
คือ ตัวแปรที่เราจะใช้เพื่อพิจารณาหรือตัดสินใจ กล่าวคือ เป็นตัวแปรที่ใช้แทนค่าของคำตอบ ในปัญหาที่เราสนใจ สามารถเขียนในรูปแบบ  x⃗  = (x1x2, …, xn)  ซึ่งจากโจทย์การวางแผนบุคลากร เราสามารถกำหนดตัวแปรที่ใช้ในการตัดสินใจได้ดังนี้
Decision variable:     xj = จำนวนบุคลากรที่มีช่วงเข้าทำงานแรกคือ กะ j โดยที่ j = 1, 2, . . ., 6
ซึ่งโดยการกำหนดค่า xj เราต้องพิจารณาพร้อมกับเงื่อนไขที่โจทย์กำหนดด้วยว่า บุคลากรแต่ละคนจะต้องทำงาน 8 ชั่วโมงต่อวัน หรือต้องทำงาน 2 กะ (shift) ต่อวัน เพราะทำงาน 1 กะ จะใช้เวลาทำงาน 4 ชั่วโมง ดังนั้นคนที่เริ่มเข้างานในกะที่ 1 ก็จะต้องทำงานต่อเนื่องไปถึงกะที่ 2 เพื่อให้ครบชั่วโมงทำงานต่อวัน ในขณะเดียวกันก็หมายความว่า จำนวนบุคลากรที่ทำงานในกะที่ 1 (shift 1) ทั้งหมด จะมาจากคนที่เริ่มทำงานในกะที่ 6 แต่ทำต่อเนื่องมาจนถึงกะที่ 1 รวมกับคนที่เริ่มเข้าทำงานในกะที่ 1เป็นกะแรก ซึ่งหมายถึง จำนวนบุคลากรที่ทำงานใน Shift 1 =  x6 + x1 นั่นเอง 
นอกจากนี้ เวลาหาค่า xj  จะต้องตรงตามอีกเงื่อนไขด้วยว่า จำนวนบุคลากรทั้งหมดที่ทำงานในกะนั้น จะต้องมากกว่าหรือเท่ากับจำนวนพนักงานที่ต้องการ (Demand) ในกะนั้น ด้วย ยกตัวอย่าง

ตารางที่ 1 แสดงตัวอย่างวิธีการกำหนดค่า  xj ที่เป็น Solution ของโจทย์ปัญหานี้ จะแสดงในตารางที่ 1 
ตารางที่ 1 แสดงตัวอย่าง Solution ที่ได้จากการกำหนดตัวแปร xj เป็นค่าต่าง ๆ

โจทย์Shift 1 
(กะที่ 1, j=1)
Shift 2 
(กะที่ 2, j=2)
Shift 3 
(กะที่ 3, j=3)
Shift 4 
(กะที่ 4, j=4)
Shift 5 
(กะที่ 5, j=5)
Shift 6 
(กะที่ 6, j=6)
Hours (ชั่วโมงทำงาน)0-44-88-1212-1616-2020-24
Demand(จำนวนบุคลากรที่ต้องการในกะนั้น)810121086
Solution 1 กรณี Xj = (8,2,10,0,8,0)
จำนวนบุคลากรที่เข้าทำงานกะ j เป็นกะแรกX1 = 8X2 = 2X3= 10X4 = 0X5= 8X6 = 0
จำนวนบุคลากรทั้งหมดที่ทำงานในกะ jX6+X1 = 8X1+X2 = 10X2+X3 = 12X3+X4 = 10X4+X5 = 8X5+X6 = 8
Solution 2 กรณี Xj = (8,4,8,2,6,0)
จำนวนบุคลากรที่เข้าทำงานกะ j เป็นกะแรกX1 = 8X2 = 4X3= 8X4 = 2X5= 6X6 = 0
จำนวนบุคลากรทั้งหมดที่ทำงานในกะ jX6+X1 = 8X1+X2 = 12X2+X3 = 12X3+X4 = 10X4+X5 = 8X5+X6 = 6
Solution 3 กรณี Xj = (2,8,4,6,4,6)
จำนวนบุคลากรที่เข้าทำงานกะ j เป็นกะแรกX1 = 2 X2 = 8 X3= 4X4 = 6X5= 4X6 = 6
จำนวนบุคลากรทั้งหมดที่ทำงานในกะ jX6+X1 = 8X1+X2 = 10X2+X3 = 12X3+X4 = 10X4+X5 = 10X5+X6 = 10

2.ฟังก์ชันเป้าหมาย (Objective Function)
คือ ฟังก์ชันของตัวแปรตัดสินใจ f(x⃗) ที่เราต้องการจะ Maximize หรือ Minimize  ยกตัวอย่างของ Minimization Problem เช่น เราต้องการหาจำนวนชิ้นส่วนที่ใช้ในการผลิต ที่ทำให้โรงงานใช้ต้นทุนน้อยที่สุด เป็นต้นฃ

ซึ่งในโจทย์ปัญหาการวางแผนบุคลากรนั้น Objective Function ของเรา คือ เราต้องการ Minimize จำนวนบุคลากรที่ต้องใช้เพื่อสำรองการเข้างาน ซึ่งสามารถเขียนเป็น สมการได้ดังนี้
Chart, diagram

Description automatically generated

จากสมการด้านบน คือ เราจะต้องหาค่า xj แต่ละตัว ที่ทำให้ผลรวมของ x1 +x2 +….+x6   ได้ค่าน้อยที่สุดนั่นเอง

3.ขอบเขต (Bounds)
คือ ช่วงของตัวแปรที่ใช้ในการตัดสินใจ เช่น lbi ≤ xi ≤ ubi, i = 1..n  โดยที่ lbi = Lower Bound of xi และ ubi = Upper Bound of xi กล่าวคือ เป็นการกำหนดขอบเขตของค่าที่ Decision Variables สามารถเป็นไปได้ เรียกอีกอย่างว่า พื้นที่การค้นหา (Search Space) โดยเราสามารถกำหนดขอบเขตล่าง (Lower Bound) หรือขอบเขตบน (Upper Bound) ของ Decision Variable แต่ละตัวได้ แต่ถ้าเราไม่ระบุขอบเขต ค่าที่จะนำไปคำนวณก็จะเป็น – Infinity และ +Infinity หรือไม่มีขอบเขตนั่นเอง 

ซึ่งในโจทย์ปัญหาการวางแผนบุคลากรนี้เราจะกำหนด Bounds ได้ดังนี้
Graphical user interface

Description automatically generated with medium confidence

จากสมการด้านบนหมายความว่า ค่า xj แต่ละตัวที่เราต้องการหา จะต้องมีค่ามากกว่าหรือเท่ากับ 0 เท่านั้น

4.ข้อจำกัด (Constraints)
คือ ขอบเขตของคำตอบ กล่าวคือ เป็นการกำหนดข้อจำกัดว่าคำตอบที่ได้ต้องอยู่ในขอบเขตที่กำหนด ตามเงื่อนไขของปัญหา ตัวอย่างเช่น  g1(x⃗ ) ≤ b1  ที่หมายถึง จากค่า Decision Variables x⃗ x ที่ได้ เมื่อนำไปคำนวณกับสมการที่เป็น Constraints แล้ว จะต้องมีค่าผลลัพธ์น้อยกว่าหรือเท่ากับค่า b1  ยกตัวอย่างเช่น โจทย์ปัญหาการซื้อผลไม้ ที่มีข้อจำกัด (Constraints) คือ ห้ามซื้อผลไม้แต่ละชนิดเกินจำนวนเงินที่กำหนด 100 บาท ซึ่งจะเขียนสมการได้ในรูปแบบ 3X1 + 4x2 100  บาท โดยที่ 3 = ราคาผลไม้ x1 และ 4 = ราคาผลไม้ x2 เป็นต้น 

ซึ่งในปัญหาการวางแผนบุคลากรนี้จะมี Constraints คือ จะต้องมีจำนวนบุคลากรที่เข้างานในกะนั้นมากกว่าหรือเท่ากับจำนวน Demand ที่โรงพยาบาลต้องการ โดยโจทย์ได้กำหนดให้บุคลากรแต่ละคนจะต้องทำงาน 8 ชั่วโมงต่อวัน หรือทำงาน 2 กะต่อวัน เนื่องจาก 1 กะจะมีชั่วโมงทำงาน 4 ชั่วโมง ดังนั้นเราจะสามารถเขียน Constraints เป็นสมการได้ดังนี้

Text, letter

Description automatically generated

จากสมการด้านบน  x6+x1 ≥ 8 หมายความว่า ในกะที่ 1 (last shift :1 )  จะต้องมีจำนวนบุคลากรที่เข้าทำงานกะที่ 6 (คนทำงานกะที่ 6 จะออกเวรตอนกะที่ 1) กับบุคลากรที่เข้ามาทำงานในกะที่ 1 รวมกัน ต้องมากกว่าหรือเท่ากับ 8 คน ตาม Demand ที่โรงพยาบาลต้องการ ในขณะเดียวกัน สมการ x1+x2 ≥ 10 ก็หมายความว่า ในกะที่ 2 ต้อง(last shift :2 )   จะต้องมีจำนวนบุคลากรที่เข้าทำงานกะที่ 1 (คนทำงานกะที่ 1 จะออกเวรตอนกะที่ 2) กับบุคลากรที่เข้ามาทำงานในกะที่ 2 รวมกัน ต้องมากกว่าหรือเท่ากับ 10 คน เป็นต้น

จากการกำหนด 4 ส่วนด้านบน  จะทำให้เราได้สมการเพื่อหาค่า Optimization ของปัญหาการวางแผนบุคลากรนี้ ดังที่แสดงด้านล่าง

Table

Description automatically generated

ประเภทของ Optimization problem
จากตัวอย่างด้านบน เราได้พูดถึงวิธีการกำหนดปัญหาและสมการของ Optimization Problem กันไปแล้ว         ในส่วนนี้เราจะมาพูดถึงวิธีการที่เราสามารถใช้เพื่อจำแนกประเภทของ Optimization Problem กัน ซึ่งจริง ๆ แล้ววิธีการที่ใช้ในการจำแนกนั้นมีหลายรูปแบบ ขึ้นอยู่กับว่าเราสนใจที่มุมมองไหน แต่ในบทความนี้ จะยกตัวอย่างวิธีการจำแนกประเภทของ Optimization Problem  ดังนี้
Continuous Optimization versus Discrete Optimization
เป็นการจำแนกชนิดของ Optimization โดยพิจารณาจากชนิดของตัวแปรที่ใช้ในการตัดสินใจ ว่าเป็นแบบต่อเนื่องกัน (Continuous)  หรือแบบไม่ต่อเนื่องกัน (Discrete) ตัวอย่างของ Continuous Optimization เช่น ปัญหาการเพิ่มพื้นที่สวนให้ได้มากที่สุด ที่จะได้คำตอบเป็นขนาดความกว้างและยาวของสวน โดยคำตอบอาจจะเป็นจำนวนเต็มหรือทศนิยมก็ได้ ส่วนตัวอย่างของ Discrete Optimization เช่น ปัญหาการเดินทางของเซลส์แมน (Travelling Salesman problem :TSP) ที่ได้คำตอบเป็นลำดับของการเดินทาง เป็นต้น
Unconstrained Optimization versus Constrained Optimization 
เป็นการจำแนกชนิดของ Optimization โดยพิจารณาจากการกำหนด Constraints Constrained  โดย Unconstrained Optimization คือปัญหาที่ไม่มีการกำหนด Constraints เลย ส่วน Constrained Optimization คือปัญหาที่มีการกำหนด constraints อย่างน้อย 1 Constraints
Single Objective Function versus Multiple Objective Functions
เป็นการจำแนกโดยพิจารณาจาก จำนวน Objective Function โดย Single Objective Function คือ Optimization Problem ที่มีเป้าหมายเพียงหนึ่งอย่าง เช่น ปัญหาการวางแผนบุคลากรจากตัวอย่างด้านบน ส่วน Multiple Objective Functions คือ Optimization Problem ที่มีเป้าหมายมากกว่า 1 อย่าง ตัวอย่างเช่น โจทย์ที่ต้องการ Maximize ปริมาณสารอาหาร ในขณะที่ต้อง Minimize ค่าใช้จ่ายในการซื้ออาหาร เป็นต้น 
Linear Programming Problem versus Quadratic Programming
เป็นการจำแนกโดยพิจารณาลักษณะสมการ โดย Linear Programming Problem คือปัญหาที่มี Objective และ Constraints เป็นแบบ Linear Function ส่วน Quadratic Programming คือปัญหาที่มี Objective เป็น Quadratic Function ของตัวแปรตัดสินใจ และมี Constraints เป็นแบบ Linear Function

Graphical user interface, text, application

Description automatically generated

รูปที่ 2 การแบ่งประเภทของ Optimization problem

นอกจากการแบ่ง Optimization ตามลักษณะของปัญหาแล้ว เรายังสามารถแบ่งตามเทคนิคที่ใช้ในการทำ Optimization ได้ ตามที่แสดงในรูปที่ 23
Diagram

Description automatically generated

รูปที่ 23 การแบ่งประเภทของ Optimization ตามวิธีการ [4]

สำหรับวิธีการแบบ Classicals เช่น Linear Programming, Nonlinear Programming, Successive Quadratic Programming algorithm, Dynamic and Integer Programming  เป็นต้น ซึ่งวิธีการเหล่านี้จะเหมาะกับการนำไปใช้ในการแก้ปัญหาที่ไม่ซับซ้อนมาก แต่เมื่อปัญหามีความซับซ้อนมากขึ้น (Complex Optimization Problems) และเริ่มมีความไม่แน่นอนมาสู่ของระบบ วิธีการที่ถูกพัฒนาขึ้นเพื่อแก้ไขปัญหาดังกล่าว นั่นคือวิธีการแบบ Metaheuristics ที่ได้แรงบันดาลใจมาจากการคัดเลือกโดยธรรมชาติ (Natural Selection) และการปรับตัวทางสังคมของสิ่งมีชีวิต (Social Adaptation)  

Metaheuristics จะแบ่งออกเป็น 2 ประเภทคร่าว ๆ คือ Trajectory-Based และ Population-Based Methods ซึ่งความแตกต่างระหว่าง 2 วิธีการนี้คือ Tentative Solutions ที่ใช้ในแต่ละขั้นตอนของ Algorithm โดย Trajectory-Based Method (เช่น Hill Climbing, Tabu Search, Simulated Annealing และ Explorative Local Search Methods) จะเริ่มจาก Single Initial Solution และในแต่ละขั้นตอนของการ Search ค่า Current Solution จะถูกแทนที่โดย Solution อื่นที่ใกล้เคียงกัน ในขณะที่ Population-Based Methods จะใช้เซตของ Solutions (Population oOf Solutions) ในการเริ่มต้น โดยที่จะ  Initial Population แบบสุ่มขึ้นมาก่อน จากนั้นในแต่ละรอบที่คำนวณ แต่ละสมาชิกใน Population จะถูกแทนที่ด้วยค่าอื่นที่สร้างขึ้นมาใหม่จากอัลกอริทึมที่ทำให้ได้ผลลัพธ์ที่ดีขึ้น โดย Population-Based Methods นี้ จะจำแนกออกเป็น 2 รูปแบบหลัก ๆ คือ Evolutionary Algorithm ที่ได้รับแรงบันดาลใจจากการวิวัฒนาการของธรรมชาติในการทำงาน เช่น Genetic Algorithm , Immune Algorithm ฯลฯ และรูปแบบที่ 2 Swarm Intelligence ที่ได้รับแรงบันดาลใจจากความฉลาดของฝูงในการทำงาน เช่น Particle Swarm Optimization , Ant Colony Optimization ฯลฯ ซึ่งทั้ง 2 วิธีก็มีความเหมาะสมกับปัญหาที่แตกต่างกัน ขึ้นอยู่กับโจทย์และเป้าหมายในแต่ละงานด้วย

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

References

[1] N. Andreasson, A. Evgrafov and M. Patriksson, An Introduction to Optimization: Foundations and Fundamental Algorithms, 2005.
[2] “Types of Optimization Problems,” neos guide, [Online]. Available: https://neos-guide.org/optimization-tree. [Accessed 30 October 2021].
[3] “Optimization Characteristics,” analytica, [Online]. Available: http://wiki.analytica.com/Optimization_Characteristics. [Accessed 30 October 2021].
[4] S. d. León-Aldaco, H. Calleja and J. Aguayo, “Metaheuristic Optimization Methods Applied to Power Converters: A Review,” IEEE Transactions on Power Electronics, 2015.
[5] K. K. Vardhini and T. Sitamahalakshmi, “A Review on Nature-based Swarm Intelligence OptimizationTechniques and its Current Research Directions,” Indian Journal of Science and Technology, vol. 9, 2016.


By :

/

Share :


บทความอื่นๆที่น่าสนใจ

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

Privacy Preferences

คุณสามารถเลือกการตั้งค่าคุกกี้โดยเปิด/ปิด คุกกี้ในแต่ละประเภทได้ตามความต้องการ ยกเว้น คุกกี้ที่จำเป็น

Allow All
Manage Consent Preferences
  • Always Active

Save