มีวิธีการจำลองที่ไม่ใช่ Monte Carlo หรือไม่? วิธีการจำลองทั้งหมดเกี่ยวข้องกับการแทนที่ตัวเลขสุ่มในฟังก์ชันเพื่อค้นหาช่วงของค่าสำหรับฟังก์ชัน ดังนั้นวิธีการจำลองทั้งหมดในสาระสำคัญของวิธี Monte Carlo คืออะไร?
มีวิธีการจำลองที่ไม่ใช่ Monte Carlo หรือไม่? วิธีการจำลองทั้งหมดเกี่ยวข้องกับการแทนที่ตัวเลขสุ่มในฟังก์ชันเพื่อค้นหาช่วงของค่าสำหรับฟังก์ชัน ดังนั้นวิธีการจำลองทั้งหมดในสาระสำคัญของวิธี Monte Carlo คืออะไร?
คำตอบ:
มีการจำลองที่ไม่ใช่ Monte Carlo โดยพื้นฐานแล้ววิธีการมอนติคาร์โลทั้งหมดใช้กฎ (อ่อนแอ) ของคนจำนวนมาก: ค่าเฉลี่ยมาบรรจบกับความคาดหวัง
จากนั้นก็มีวิธี Quasi Monte Carlo สิ่งเหล่านี้ถูกจำลองด้วยการสุ่มตัวเลขและช่องว่างที่เท่ากันเพื่อให้เกิดการลู่เข้าที่เร็วขึ้น
การจำลองที่ไม่ใช่ Monte Carlo นั้นถูกใช้ในการคำนวณพลศาสตร์ของไหล เป็นการง่ายที่จะสร้างแบบจำลองพลศาสตร์ของของไหลบน "ไมโครสเกล" ของส่วนเดียวของของไหล ส่วนเหล่านี้มีความเร็วความดันและขนาดเริ่มต้นและได้รับผลกระทบจากกองกำลังจากส่วนที่อยู่ใกล้เคียงหรือจากวัตถุที่เป็นของแข็ง แบบจำลองคำนวณพฤติกรรมทั้งหมดของของไหลโดยการคำนวณส่วนทั้งหมดและการโต้ตอบ การทำสิ่งนี้อย่างมีประสิทธิภาพทำให้นี่เป็นวิทยาศาสตร์ ไม่จำเป็นต้องมีตัวเลขสุ่ม
ในอุตุนิยมวิทยาหรือการวิจัยสภาพภูมิอากาศสิ่งต่าง ๆ จะทำในทำนองเดียวกัน แต่ตอนนี้ไม่ทราบค่าเริ่มต้น: คุณมีข้อมูลอุตุนิยมวิทยาในบางจุดที่มีการวัด ต้องมีข้อมูลจำนวนมาก
เนื่องจากปัญหาที่ซับซ้อนเหล่านี้มักจะไม่ต่อเนื่องในข้อมูลที่ป้อนเข้าคุณจึงทำการจำลองด้วยการคาดเดาที่แตกต่างกัน ผลลัพธ์สุดท้ายจะถูกเลือกในผลลัพธ์ที่พบบ่อยที่สุด นี่เป็นวิธีการจำลองการพยากรณ์อากาศในหลักการ
วิธีมอนติคาร์โลเป็นวิธีแรกที่ใช้การจำลองด้วยคอมพิวเตอร์สำหรับปัญหาทางสถิติ ได้รับการพัฒนาโดย John von Neumann, Stanisław Ulam และทีมงาน Nicholas Metropolis จากห้องปฏิบัติการ Los Alamos ที่ทำงานในโครงการแมนฮัตตันในช่วงสงครามโลกครั้งที่สอง มันถูกอธิบายครั้งแรกในปี 1949 โดย Metropolis & Ulamและมันเป็นครั้งแรกที่ชื่อปรากฏในการพิมพ์ เป็นไปได้เพราะนักวิทยาศาสตร์ที่ค้นพบว่ามันยังสามารถใช้หนึ่งในคอมพิวเตอร์เครื่องแรกที่พวกเขากำลังทำงานอยู่ ในงานของพวกเขาพวกเขาใช้วิธีการ Monte Carlo สำหรับการจำลองปัญหาทางกายภาพและแนวคิดก็คือคุณสามารถจำลองปัญหาที่ซับซ้อนด้วยการสุ่มตัวอย่างตัวอย่างบางส่วนของกระบวนการนี้ มีบทความที่น่าสนใจมากมายเกี่ยวกับประวัติศาสตร์ของ Monte Carlo เช่นโดยMetropolis ตัวเองหรือบางคนเมื่อเร็ว ๆ นี้เช่นโดยโรเบิร์ตและ Casella
ดังนั้น "Monte Carlo" จึงเป็นชื่อของวิธีแรกที่อธิบายไว้เพื่อจุดประสงค์ในการจำลองด้วยคอมพิวเตอร์เพื่อแก้ปัญหาทางสถิติ จากนั้นชื่อก็กลายเป็นชื่อทั่วไปสำหรับทั้งครอบครัวของวิธีการจำลองและเป็นที่นิยมใช้ในแบบนี้
มีวิธีการจำลองที่ถือว่าไม่ใช่มอนติคาร์โลแต่ในขณะที่มอนติคาร์โลเป็นครั้งแรกที่ใช้คอมพิวเตอร์จำลองมันเป็นเรื่องธรรมดาที่ "คอมพิวเตอร์จำลอง" และ "มอนติคาร์โล" ใช้แทนกันได้
มีคำจำกัดความที่แตกต่างกันว่า "การจำลอง" คืออะไร
3 a: การลอกเลียนแบบของการทำงานของระบบหรือกระบวนการหนึ่งโดยใช้การทำงานของอีกระบบข: การตรวจสอบปัญหามักไม่ได้รับการทดลองโดยตรงโดยใช้อุปกรณ์จำลอง
พจนานุกรมเคมบริดจ์ :
ทำหรือทำสิ่งที่มีพฤติกรรมหรือดูเหมือนของจริง แต่ไม่ใช่ของจริง
การเลียนแบบการทำงานของกระบวนการหรือระบบในโลกแห่งความเป็นจริงในช่วงเวลาหนึ่ง
สิ่งที่การจำลองต้องการทำงานคือความสามารถในการเลียนแบบระบบหรือกระบวนการบางอย่าง นี้ไม่จำเป็นต้องมีแบบแผนใด ๆ ที่เกี่ยวข้อง (เช่นเดียวกับ Monte Carlo) แต่ถ้าเป็นไปได้ทั้งหมดจะถูกทดสอบแล้วขั้นตอนค่อนข้างค้นหาหมดจดหรือทั่วไปและปัญหาการเพิ่มประสิทธิภาพ หากองค์ประกอบแบบสุ่มมีส่วนเกี่ยวข้องและใช้คอมพิวเตอร์ในการรันแบบจำลองของบางรุ่นการจำลองนี้จะคล้ายกับจิตวิญญาณของวิธีมอนติคาร์โลเริ่มต้น (เช่น Metropolis และ Ulam, 1949) มีการกล่าวถึงองค์ประกอบแบบสุ่มซึ่งเป็นส่วนสำคัญของการจำลองเช่นโดย Ross (2006, Simulation). เอลส์) อย่างไรก็ตามคำตอบสำหรับคำถามนั้นขึ้นอยู่กับคำจำกัดความของการจำลองที่คุณสมมติ ตัวอย่างเช่นหากคุณสมมติว่าอัลกอริธึมที่กำหนดขึ้นซึ่งใช้การเพิ่มประสิทธิภาพหรือการค้นหาที่ละเอียดถี่ถ้วนเป็นเรื่องจริงแล้วเราจำเป็นต้องพิจารณาอัลกอริธึมที่หลากหลายเพื่อจำลองสถานการณ์และทำให้นิยามของการจำลองต่อพร่ามัวมาก
แท้จริงทุกขั้นตอนทางสถิติใช้แบบจำลองหรือการประมาณค่าความเป็นจริงนั่นคือ "ลอง" และประเมินผล สิ่งนี้สอดคล้องกับคำจำกัดความของการจำลองพจนานุกรม อย่างไรก็ตามเราไม่ได้พิจารณาสถิติทั้งหมดว่าเป็นแบบจำลอง คำถามและการสนทนาดูเหมือนจะเกิดขึ้นจากการขาดคำจำกัดความที่แม่นยำของ "การจำลอง" Monte Carlo น่าจะเป็นตัวอย่างของการจำลองแบบอย่าง (และแรก) อย่างไรก็ตามถ้าเราพิจารณาคำจำกัดความทั่วไปของการจำลองแล้ววิธีการที่ไม่ใช่ Monte Carlo จำนวนมากตกอยู่ในคำจำกัดความ ดังนั้นจึงมีการจำลองที่ไม่ใช่มอนติคาร์โล แต่วิธีการจำลองที่ชัดเจนทั้งหมดนั้นคล้ายคลึงกับจิตวิญญาณของมอนติคาร์โลเกี่ยวข้องกับมันในทางใดทางหนึ่งหรือได้รับแรงบันดาลใจจากมัน นั่นคือเหตุผลที่มักใช้ "Monte Carlo" เป็นคำพ้องสำหรับ "การจำลอง"
วิธีการจำลองทั้งหมดเกี่ยวข้องกับการแทนที่ตัวเลขสุ่มในฟังก์ชันเพื่อค้นหาช่วงของค่าสำหรับฟังก์ชัน
ฉันไม่เคยได้ยินคำจำกัดความของการจำลอง ตัวอย่างเช่นบทความของ Wikipedia เกี่ยวกับการจำลองและการจำลองด้วยคอมพิวเตอร์พูดถึงคำต่างๆเช่นการสุ่มและสุ่มสุ่มตัวอย่างสั้น ๆ เท่านั้น
ตัวอย่างง่ายๆของการจำลองที่ไม่เกี่ยวข้องกับการสุ่มดังนั้นจึงไม่ชัดเจนว่าการจำลองแบบมอนติคาร์โลจะเป็นดังต่อไปนี้:
ฉันต้องการจำลองพฤติกรรมของลูกตุ้มแบบง่ายและตั้งสมมติฐานที่ทำให้เข้าใจง่ายบางอย่าง (สายที่ไม่มีมวล, มวลที่ตรงต่อเวลา, ไม่มีแรงเสียดทาน, ไม่มีแรงภายนอกเช่นแรงโคลิโอลิส) จากนั้นฉันก็ได้ลูกตุ้มทางคณิตศาสตร์และสามารถเขียนสมการเชิงอนุพันธ์ที่อธิบายการเคลื่อนที่ของมันได้ จากนั้นฉันสามารถใช้ตัวแก้ปัญหาบางตัวสำหรับสมการเชิงอนุพันธ์เช่นวิธีRunge – Kuttaเพื่อจำลองวิถีของมันสำหรับเงื่อนไขเริ่มต้นที่กำหนด (ฉันยังสามารถโต้แย้งในทางทฤษฎีว่าฉันไม่จำเป็นต้องพิจารณาเงื่อนไขเริ่มต้นเพิ่มเติม)
วิธีนี้ฉันได้รับการจำลองค่อนข้างดีของลูกตุ้มจริงโดยไม่ต้องใช้หมายเลขสุ่ม ดังนั้นนี่ไม่ใช่การจำลอง Monte-Carlo
ในอีกตัวอย่างหนึ่งให้พิจารณาแผนที่โลจิสติกซึ่งเป็นแบบจำลองประชากรอย่างง่ายโดยไม่มีการสุ่ม
ไม่ได้การจำลองอนุภาคภายใต้แรงสามารถทำได้โดยใช้ Runge-Kutta หรืออัลกอริธึมที่กำหนดขึ้นมาอื่น ๆ ซึ่งไม่ใช่มอนติคาร์โล
Monte Carlo ใช้ในการคำนวณอินทิกรัล (คุณสามารถเรียกมันว่าการจำลอง แต่ในที่สุดมันก็แค่คำนวณการประมาณค่าตัวเลขของตัวประมาณ) อีกครั้งคุณสามารถใช้วิธีกำหนดขึ้นเพื่อทำเช่นนั้น (เช่นกฎสี่เหลี่ยมคางหมู)
ในวงกว้างคุณสามารถแยกอัลกอริทึมเพื่อคำนวณอินทิกรัลในแบบกำหนดขึ้นและไม่กำหนดได้ Monte Carlo เป็นวิธีการที่ไม่สามารถกำหนดได้ Quasi-Monte Carlo เป็นอีกหนึ่ง กฎรูปสี่เหลี่ยมคางหมูเป็นอัลกอริทึมที่กำหนดไว้ล่วงหน้า
ขอผมใช้คำอธิบายที่ง่ายกว่านี้ แบบจำลอง "what-if" คือการจำลอง (แบบกำหนดขึ้นเอง) สมมติว่าคุณมีระบบที่ซับซ้อนเช่นโรงงานแปรรูปวิดเจ็ต คุณต้องการประเมินพารามิเตอร์ประสิทธิภาพบางค่าเช่นราคา คุณสร้างแบบจำลองทางคณิตศาสตร์ของโรงงานแล้วเลือกสมมติฐานต่าง ๆ สำหรับปัจจัยเฉพาะในแบบจำลองเช่นความเร็วที่วิดเจ็ตเคลื่อนที่ผ่านการดำเนินการต่าง ๆ หรือเปอร์เซ็นต์การไหลในทิศทางต่าง ๆ หรือจำนวนวิดเจ็ตที่คุณจะประมวลผล แบบจำลองเป็นการจำลองของโรงงานและสมมติฐานแต่ละชุดจะให้ค่าประมาณของพารามิเตอร์ประสิทธิภาพนั้น
ตอนนี้แนะนำความไม่แน่นอน คุณไม่รู้ว่าอุปสงค์สำหรับวิดเจ็ตจะเป็นอย่างไรในเดือนหน้า แต่คุณต้องประเมินค่าใช้จ่าย ดังนั้นแทนที่จะบอกว่าความต้องการจะเป็น 1,000 วิดเจ็ตคุณประเมินการกระจายความน่าจะเป็นสำหรับความต้องการ จากนั้นคุณสุ่มตัวอย่างค่าความต้องการจากการแจกแจงนั้นและใช้ค่าเหล่านั้นสำหรับการสมมติของคุณ ในขณะที่คุณอยู่ในนั้นคุณสามารถใช้การแจกแจงความน่าจะเป็นสำหรับสมมติฐานอื่น ๆ ได้เช่นกัน คุณใช้แบบจำลองซ้ำแล้วซ้ำอีกเสียบปลั๊กในสมมติฐานที่สุ่มตัวอย่างจากการแจกแจงความน่าจะเป็นต่าง ๆ ผลลัพธ์จะเป็นการกระจายตัวของประมาณการต้นทุน นั่นคือแง่มุมของ Monte Carlo
Monte Carlo เป็น "คุณสมบัติ" หรือ "เครื่องมือ" ที่อยู่ด้านบนของแบบจำลองสถานการณ์ แทนที่จะเป็นการจำลองด้วยชุดข้อสมมติฐานชุดเดียวสำหรับการประมาณค่าเดียวมันทำการรวบรวมแบบจำลองโดยใช้การสุ่มเลือกแบบสุ่ม
ในทฤษฎีเกมโดยเฉพาะวิธีการที่ใช้การสุ่มในแบบจำลองเรียกว่าเทคนิคมอนเตคาร์โล โดยทั่วไปจะใช้เป็นส่วนหนึ่งของMonte Carlo Tree Search (MCTS)ในโปรแกรมที่ทันสมัย
(คำถามเดิมไม่ได้แยกความแตกต่างระหว่าง " monte carlo algorithm " และ " monte carlo method " ซึ่งอาจอธิบายความไม่เห็นด้วยกับคำตอบบางส่วนได้ที่นี่)
ตัวอย่างเช่นในเกมที่กำลังเดินทาง (และเกมอื่น ๆ ทั้งหมดที่ฉันรู้จักในการใช้ MCTS) การจำลองเรียกว่า playouts การเล่นแบบสุ่มใช้กฎชุดที่สุด Light playouts เป็นคำพ้องสำหรับ playouts สุ่มหรือกรองสิ่งที่ไม่ดีที่ตรวจพบได้ง่าย playouts หนักใช้ heuristic เพิ่มเติมเพื่อกรองการเคลื่อนไหวมากขึ้น (โดยวิธีการเล่นมักจะจบเกมดังนั้นการเล่นแต่ละครั้งใช้เวลาโดยประมาณเท่ากัน) แต่ทั้งหมดถูกอ้างถึงเป็นแบบจำลอง "monte carlo"