ข้อจํากัดด้านการเพิ่มประสิทธิภาพ

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

CP อิงตามความเป็นไปได้ (ค้นหาโซลูชันที่เป็นไปได้) ไม่ใช่การเพิ่มประสิทธิภาพ (ค้นหาโซลูชันที่ดีที่สุด) และมุ่งเน้นที่ข้อจำกัดและตัวแปร ไม่ใช่ฟังก์ชันที่เป็นวัตถุประสงค์ อันที่จริง ปัญหา CP อาจไม่มีฟังก์ชันที่เป็นรูปธรรม เป้าหมายอาจเป็นการจํากัดชุดวิธีแก้ปัญหาขนาดใหญ่ที่เป็นไปได้ให้แคบลงให้กับชุดย่อยที่จัดการได้มากขึ้นโดยการเพิ่มข้อจํากัดลงในโจทย์

ตัวอย่างของปัญหาที่เหมาะสมกับ CP คือการกำหนดเวลาจ้างพนักงาน ปัญหาเกิดขึ้นเมื่อบริษัทที่ดำเนินงานอย่างต่อเนื่อง เช่น โรงงาน ต้องสร้างตารางเวลารายสัปดาห์สำหรับพนักงาน ลองดูตัวอย่างที่เข้าใจง่ายมากๆ คือ บริษัทมีกะ 8 ชั่วโมง 3 กะต่อวัน และกำหนดพนักงาน 3 ใน 4 คนที่ลดกะวันละ 4 กะ และเลิกลา 4 วัน แม้จะเป็นในกรณีเล็กๆ แต่กำหนดการที่เป็นไปได้นั้นถือว่ามีมากมายมาก เพราะในแต่ละวันมีพนักงานมอบหมายได้ถึง 4! = 4 * 3 * 2 * 1 = 24 คน ดังนั้นจำนวนตารางเวลารายสัปดาห์ที่เป็นไปได้เท่ากับ 24/7 ซึ่งเท่ากับ 24/7 โดยปกติแล้วจะมีข้อจำกัดอื่นๆ ที่ทำให้จำนวนโซลูชันที่เป็นไปได้ลดลง เช่น พนักงานแต่ละคนต้องทำงานอย่างน้อยสัปดาห์ละวัน วิธี CP จะติดตามว่าโซลูชันใดที่ยังคงเป็นไปได้เมื่อคุณเพิ่มข้อจำกัดใหม่ ซึ่งทำให้เป็นเครื่องมือที่มีประสิทธิภาพสำหรับการแก้ปัญหาขนาดใหญ่และการกำหนดเวลาในสถานการณ์จริง

CP มีชุมชนที่กว้างขวางและกระตือรือร้นทั่วโลก โดยมีวารสารวิทยาศาสตร์โดยเฉพาะ การประชุม และคลังเทคนิคการแก้ไขปัญหาต่างๆ ได้นำ CP ไปใช้ในการวางแผน การกำหนดเวลา และโดเมนอื่นๆ อีกจำนวนมากที่มีข้อจำกัดที่แตกต่างกัน

เครื่องมือ

Google มีวิธีแก้ปัญหา CP ดังนี้

หากคุณจำลองปัญหาได้โดยใช้วัตถุประสงค์เชิงเส้นและข้อจํากัดเชิงเส้น แสดงว่าคุณมีปัญหาการเขียนโปรแกรมเชิงเส้น และควรใช้ MPSolver (อย่างไรก็ตาม ปัญหาการกำหนดเส้นทางมักจะแก้ไขได้ดีที่สุดด้วยไลบรารีการกำหนดเส้นทางยานพาหนะของเรา แม้ว่าปัญหาเหล่านั้นจะแสดงด้วยโมเดลเชิงเส้นก็ตาม)

ตัวอย่าง

ส่วนถัดไปจะอธิบายถึงเครื่องมือแก้โจทย์ CP-SAT ซึ่งเป็นเครื่องมือแก้โจทย์ OR-เครื่องมือ หลักสำหรับการเขียนโปรแกรมข้อจำกัด (SAT ย่อมาจาก satifability: เครื่องมือแก้โจทย์คณิตใช้เทคนิคการแก้ไขปัญหา SAT ร่วมกับวิธีการ CP)

ตัวอย่างบางส่วนของปัญหาการตั้งเวลาที่เหมาะสำหรับเครื่องมือแก้โจทย์ CP-SAT มีดังนี้

โจทย์ CP แบบดั้งเดิม 2 ข้อ ได้แก่ โจทย์ N-queens และปริศนาคริปโตเคอเรนซี