Stochastic programming — การโปรแกรมสุ่ม

From Systems analysis Wiki
Jump to navigation Jump to search

การโปรแกรมสุ่ม (อังกฤษ: stochastic programming) — สาขาหนึ่งของการโปรแกรมเชิงคณิตศาสตร์ที่พัฒนาแบบจำลองและวิธีการสำหรับแก้ปัญหาการหาค่าเหมาะที่สุดภายใต้สภาวะความไม่แน่นอน เมื่อพารามิเตอร์บางส่วนของแบบจำลองไม่ทราบค่าที่แน่นอน แต่ถูกแทนด้วยตัวแปรสุ่มที่มีการกระจายความน่าจะเป็นที่ทราบหรือประมาณไว้[1][2]

ต่างจากปัญหาเชิงกำหนดที่ข้อมูลทั้งหมดถือว่าเป็นค่าคงที่ที่กำหนดไว้ การโปรแกรมสุ่มมีเป้าหมายในการหาคำตอบ (หรือนโยบายการตัดสินใจ) ที่เหมาะสมที่สุดในเชิงสถิติบางอย่าง โดยส่วนใหญ่หมายถึงการหาค่าต่ำสุดหรือสูงสุดของค่าคาดหมายทางคณิตศาสตร์ของฟังก์ชันวัตถุประสงค์[1] แนวคิดหลักคือการหานโยบายการตัดสินใจที่ดีที่สุด «โดยเฉลี่ย» สำหรับการเกิดขึ้นที่เป็นไปได้ทั้งหมดของพารามิเตอร์สุ่ม ซึ่งมีความสำคัญอย่างยิ่งสำหรับปัญหาที่มีการตัดสินใจซ้ำ ๆ ในสภาวะที่คล้ายคลึงกัน (เช่น ในการจัดการสินค้าคงคลังหรือระบบพลังงาน)[3]

การกำหนดปัญหาทางคณิตศาสตร์

ในรูปแบบทั่วไป ปัญหาการโปรแกรมสุ่มสามารถกำหนดได้ดังนี้: minxX𝔼[f(x,ξ)] โดยที่:

  • x — เวกเตอร์ของตัวแปรควบคุม (การตัดสินใจ) ที่ต้องกำหนด
  • X — เซตของคำตอบที่ยอมรับได้สำหรับ x ซึ่งกำหนดโดยข้อจำกัดเชิงกำหนด
  • ξ — เวกเตอร์สุ่มที่แทนพารามิเตอร์ที่ไม่แน่นอนของปัญหา (เช่น ความต้องการ ราคา สภาพอากาศ)
  • f(x,ξ) — ฟังก์ชันวัตถุประสงค์ที่มีค่าขึ้นอยู่กับทั้งการตัดสินใจ x และการเกิดขึ้นของเวกเตอร์สุ่ม ξ
  • 𝔼[] — ตัวดำเนินการค่าคาดหมายทางคณิตศาสตร์ที่คำนวณตามการกระจายความน่าจะเป็นของเวกเตอร์ ξ

หลักการสำคัญที่สุดที่เป็นรากฐานของแบบจำลองสุ่มหลายขั้นตอนคือ หลักการไม่คาดการณ์ล่วงหน้า (อังกฤษ: non-anticipativity principle) หลักการนี้ระบุว่าการตัดสินใจที่ทำในขั้นตอนใด ๆ สามารถขึ้นอยู่กับเฉพาะข้อมูลที่มีอยู่ ณ เวลานั้น และไม่สามารถ «มองอนาคต» ได้[2]

ปัญหาสองขั้นตอนพร้อมสิทธิ์ชดเชย

แบบจำลองที่พบบ่อยที่สุดคือ ปัญหาสองขั้นตอนพร้อมสิทธิ์ชดเชย (อังกฤษ: two-stage stochastic program with recourse)[1] กระบวนการตัดสินใจแบ่งออกเป็นสองขั้นตอน:

  1. ขั้นตอนที่หนึ่ง: ตัดสินใจ «ที่นี่และตอนนี้» (here-and-now) — กำหนดเวกเตอร์ x การตัดสินใจนี้ต้องทำก่อนที่จะทราบการเกิดขึ้นที่เจาะจงของเวกเตอร์สุ่ม ξ
  2. ขั้นตอนที่สอง: หลังจากเหตุการณ์สุ่มเกิดขึ้นแล้ว จะมีการตัดสินใจปรับแก้หรือชดเชย (recourse decision) — เวกเตอร์ y(ξ) ที่มุ่งลดผลกระทบด้านลบหรือใช้ประโยชน์จากโอกาสที่เกิดขึ้นจากการผสมผสานระหว่างการตัดสินใจขั้นตอนแรก x และผลลัพธ์ ξ

ในเชิงคณิตศาสตร์ ปัญหาการโปรแกรมเชิงเส้นสุ่มสองขั้นตอนกำหนดดังนี้: minxn1{cTx+𝔼ξ[Q(x,ξ)]} ภายใต้ข้อจำกัดขั้นตอนแรก: Ax=b,x0 ที่นี่ Q(x,ξ) คือ ฟังก์ชันชดเชย (recourse function) ซึ่งแทนค่าเหมาะที่สุดของปัญหาขั้นตอนที่สอง: Q(x,ξ)=minyn2{q(ξ)TyT(ξ)x+Wy=h(ξ),y0} โดยที่ ξ คือเวกเตอร์สุ่มที่ประกอบด้วยพารามิเตอร์ q(ξ),T(ξ) และ h(ξ) ส่วน c,A,b และ W คือพารามิเตอร์เชิงกำหนด[2]

คุณสมบัติและทฤษฎีบทสำคัญ

  • ความนูน: ผลลัพธ์พื้นฐานที่สำคัญของทฤษฎีคือสำหรับปัญหาการโปรแกรมเชิงเส้นสุ่มสองขั้นตอน ฟังก์ชันชดเชยที่คาดหวัง Q(x)=𝔼ξ[Q(x,ξ)] เป็นฟังก์ชันนูน คุณสมบัตินี้มีความสำคัญอย่างยิ่ง เนื่องจากรับประกันว่าปัญหาขั้นตอนแรกโดยรวมเป็นปัญหาการโปรแกรมเชิงนูน ซึ่งมีวิธีการแก้ที่มีประสิทธิภาพและค่าเหมาะที่สุดส่วนกลางตรงกับค่าเหมาะที่สุดส่วนท้องถิ่น[1]
  • สมมูลเชิงกำหนด: หากเวกเตอร์สุ่ม ξ มีการเกิดขึ้นที่เป็นไปได้ (สถานการณ์) จำนวนจำกัด ξ1,,ξK พร้อมความน่าจะเป็น p1,,pK ปัญหาการโปรแกรมสุ่มสามารถกำหนดใหม่เป็นปัญหาการหาค่าเหมาะที่สุดเชิงกำหนดขนาดใหญ่เพียงปัญหาเดียว ในกรณีนี้ ค่าคาดหมายทางคณิตศาสตร์จะถูกแทนที่ด้วยผลรวมถ่วงน้ำหนักสำหรับทุกสถานการณ์ อย่างไรก็ตาม ขนาดของปัญหานี้เพิ่มขึ้นเชิงเส้นตามจำนวนสถานการณ์ ซึ่งทำให้เกิด «คำสาปแห่งมิติ» และทำให้แนวทางดังกล่าวไม่สามารถคำนวณได้จริงเมื่อมีสถานการณ์จำนวนมาก[2]

การเปรียบเทียบกับการหาค่าเหมาะที่สุดแบบโรบัสต์

การโปรแกรมสุ่มเป็นหนึ่งในหลายแนวทางสำหรับการหาค่าเหมาะที่สุดภายใต้สภาวะความไม่แน่นอน ความแตกต่างสำคัญจากการหาค่าเหมาะที่สุดแบบโรบัสต์อยู่ที่วิธีการสร้างแบบจำลองความไม่แน่นอนและเกณฑ์ความเหมาะที่สุด[4]

การเปรียบเทียบแนวทางการหาค่าเหมาะที่สุดภายใต้สภาวะความไม่แน่นอน
เกณฑ์ การหาค่าเหมาะที่สุดเชิงสุ่ม การหาค่าเหมาะที่สุดแบบโรบัสต์
การแทนความไม่แน่นอน พารามิเตอร์เป็นตัวแปรสุ่มที่มีการกระจายความน่าจะเป็นที่ทราบ พารามิเตอร์อยู่ในเซตความไม่แน่นอนที่กำหนด โดยไม่ต้องการการกระจาย
เกณฑ์ความเหมาะที่สุด การหาค่าเหมาะที่สุดของค่าคาดหมายทางคณิตศาสตร์ของฟังก์ชันวัตถุประสงค์ การหาค่าเหมาะที่สุดในสถานการณ์เลวร้ายที่สุด (minimax)
ลักษณะของคำตอบ นโยบายที่เหมาะที่สุด «โดยเฉลี่ย» อาจไม่ยอมรับได้สำหรับสถานการณ์ที่หายาก คำตอบที่รับประกันว่ายอมรับได้สำหรับการเกิดขึ้นทั้งหมด อาจมีความอนุรักษนิยม

ตัวอย่าง

  • ปัญหาผู้ขายหนังสือพิมพ์ (อังกฤษ: newsvendor problem): ปัญหาคลาสสิกของการจัดการสินค้าคงคลัง ที่ผู้ขายต้องตัดสินใจว่าจะสั่งซื้อสินค้าจำนวนเท่าใดโดยไม่ทราบความต้องการในอนาคตที่แน่นอน คำตอบจะสร้างสมดุลระหว่างความเสี่ยงของการขาดทุนจากสินค้าส่วนเกินและความเสี่ยงของกำไรที่สูญเสียจากการขาดแคลน
  • ปัญหาเกษตรกร: เกษตรกรตัดสินใจว่าจะจัดสรรพื้นที่กี่เอเคอร์ให้กับพืชผลต่าง ๆ บนพื้นที่รวม โดยไม่ทราบสภาพอากาศในอนาคตที่ส่งผลต่อผลผลิต หลังจากทราบสภาพอากาศแล้ว เกษตรกรสามารถดำเนินการปรับแก้ได้ (เช่น ขายสินค้าส่วนเกินหรือซื้อผลผลิตที่ขาดแคลนเพิ่มเติมในตลาด)[5]

ดูเพิ่มเติม

  • การโปรแกรมเชิงคณิตศาสตร์
  • การวิจัยการดำเนินงาน
  • การหาค่าเหมาะที่สุดแบบโรบัสต์
  • การโปรแกรมเชิงพลวัต
  • ทฤษฎีการควบคุม

หมายเหตุ

[1] [2] [3] [4] [5] </references>

  1. 1.0 1.1 1.2 1.3 1.4 Shapiro, A., Dentcheva, D., & Ruszczyński, A. (2009). Lectures on Stochastic Programming: Modeling and Theory. Society for Industrial and Applied Mathematics (SIAM).
  2. 2.0 2.1 2.2 2.3 2.4 Birge, J. R., & Louveaux, F. (2011). Introduction to Stochastic Programming (2nd ed.). Springer Science+Business Media.
  3. 3.0 3.1 "Стохастическое программирование". Википедия. [1]
  4. 4.0 4.1 Gorissen, B. L., Yanıkoğlu, İ., & den Hertog, D. (2015). A practical guide to robust optimization. Omega, 53, 124-137.
  5. 5.0 5.1 Bricker, D. L. SLPwR: Farmer Problem. University of Iowa. [2]