เมนูนำทาง
การจำลองการอบเหนียว ตัวอย่างการใช้งานตัวอย่างด้านล่างเป็นการนำขั้นตอนวิธีการจำลองการอบเหนียวมาใช้แก้ปัญหาการเดินทางของพนักงานขาย
tspSA( d[1..n][1..n] ) { tour = initialTour( d ) maxT = T = tourLength(d, tour) while ( T > 0.001 ) ) { N = maxT – T; for (i = 1; i <= N; i++) { newTour = nextTour( minT ) dE = tourLength(d,newTour) - tourLength(d,tour) if (dE < 0 OR random(0,1) < e-dE/kT ){ tour = newTour; } } T *= 0.999 } return tour;}
โดยขั้นตอนวิธีนี้จะรับอาเรย์2มิติที่เป็นเก็บข้อมูลของจุดที่แทนเมืองต่างๆและระยะทางระหว่างเมืองจากนั้นให้สุ่มทางเดินขึ้นมาหนึ่งทางเก็บในตัวแปร tour จากนั้นก็คำนวณหาความยาวของทางเดินนั้นเก็บในตัวแปร maxT กับ T ซึ่ง T แทนอุณหภูมิของระบบเราจะให้ T ที่ได้นั้นถือว่าเป็นอุณหภูมิเริ่มต้นของระบบ จากนั้นก็เข้าวงวนโดยตรวจสอบค่า T และค่า T จะลดลงเรื่อยๆถ้า T ลดลงจน T≤0.001 ก็จะเลิกทำและส่งค่า tour ที่ได้กลับไป โดยในวงวนจะมีค่า N ซึ่งเป็นผลต่างระหว่าง maxT กับ Tจากนั้นจะเข้าสู่วงวน for ซึ่งจะสังเกตได้ว่ายิ่งถ้าค่า T สูงจำนวนรอบทำซ้ำจะน้อยแต่ถ้าค่า T ต่ำจำนวนรอบทำซ้ำจะเยอะโดยในวงวน for ก็จะคำนวณหาทางเดินถัดไป (neighbor solution)โดยเก็บค่าใส่ตัวแปร dEโดยถ้า E เป็นจำนวนบวกแสดงว่าทางเดินใหม่ที่ได้จะยาวขึ้น ถ้า E เป็นจำนวนลบแสดงว่าทางเดินใหม่ที่ได้จะสั้นลงจากนั้นเราก็ดูเงื่อนไขว่าถ้า dE<0 หรือถ้าเราสุ่มตัวเลขที่อยู่ระหว่าง 0 กับ 1 ขึ้นมาแล้วน้อยกว่า e-dE/kTเราก็จะรับทางเดินใหม่ให้เป็นคำตอบของเรา จะสังเกตได้ว่าถ้าค่า T สูง e-dE/kT ก็จะสูงตามไปด้วยหมายความว่าในขณะที่อุณหภูมิสูงนั้นเราก็มีโอกาสที่จะรับคำตอบไว้เยอะเมื่ออุณหภูมิต่ำลงเราก็จะรับคำตอบน้อยลง
เมนูนำทาง
การจำลองการอบเหนียว ตัวอย่างการใช้งานใกล้เคียง
การจำแนกชั้นทางวิทยาศาสตร์ การจำลองการอบเหนียว การจำลอง การจำกัดแคลอรี การจำแนกแบบฟรีกแมน การจำแนกแบบการ์เดิน การจำลองสมองทั้งหมด การจำได้แบบชัดแจ้ง การจำยอมสละ การจำแนกประเภทกระดูกหักแผลเปิดของกัสติโลแหล่งที่มา
WikiPedia: การจำลองการอบเหนียว http://www.youtube.com/watch?v=KQYfaitQn7g http://www.denison.edu/academics/departments/mathc... http://yuval.bar-or.org/index.php?item=9 http://www2.cp.eng.chula.ac.th/~somchai/2110427/25...