ปัญหาความเป็นไปได้ในการโปรแกรมเชิงเส้นพร้อมข้อ จำกัด ด้านบวกอย่างเข้มงวด


15

มีระบบการทำงานของข้อ จำกัด เชิงเส้นเป็นx ฉันต้องการหาเวกเตอร์ที่เป็นค่าบวกอย่างเข้มงวดx > 0ที่ตรงตามข้อ จำกัด เหล่านี้ ซึ่งหมายความว่าx ฉัน > 0เป็นสิ่งจำเป็นสำหรับทุกองค์ประกอบx ฉันของx ฉันจะใช้ตัวแก้ปัญหา LP เพื่อค้นหาเวกเตอร์ที่เป็นบวกอย่างเคร่งครัด (หรือยืนยันว่าไม่มี อยู่) ฉันไม่สามารถแนะนำระบบอื่นที่มีข้อ จำกัดAxbx>0xi>0xixxxxi>0เพราะความเท่าเทียมต้องได้รับอนุญาตใน LP เสมอ - แต่ฉันสามารถใช้ตัวแก้ LP ได้หลายครั้งด้วยการเปลี่ยนฟังก์ชันวัตถุประสงค์ ฉันคิดว่าฉันควรใช้วิธีแปรผันหย่อน แต่ฉันไม่รู้วิธี

คำตอบ:


15

คุณสามารถหลีกเลี่ยงปัญหาในการเลือกϵ>0เล็ก ๆด้วยความทะเยอทะยานที่มากขึ้น: ลองค้นหาxเช่นAxbและรายการที่เล็กที่สุดในxเป็นไปได้ที่ใหญ่ที่สุด

ด้วยเหตุนี้แนะนำตัวแปรใหม่

y=[xϵ]Rn+1
(ถ้าxอยู่ในRn ) และแก้ปัญหาต่อไปนี้โดย LP-solver
maxy[00 1]ys.t.[A 0]yband0[10010101011]y.

นี่คือการแก้ปัญหาต่อไปนี้:

maxϵs.tAxbandxϵ1.


ทำได้ดีนี่เทียบเท่ากับเคล็ดลับผู้เขียนร่วมและฉันเพิ่งใช้ในบทความล่าสุดและเหนือกว่าวิธีที่ฉันแนะนำ
Aron Ahmadia

ตกลง เล่นได้ดีครับ
Geoff Oxberry

ปัญหาที่ได้รับการปรับรูปอาจมีวัตถุประสงค์มากมายในกรณีที่คำตอบของปัญหาดั้งเดิมนั้นเล็กน้อย ตัวอย่างเช่นถ้าระบบของข้อ จำกัด เป็นเพียง 1 นั่นคือดีตราบเท่าที่คุณตรวจสอบความเป็นไปได้ที่ดีที่สุดหรือมากมายในสถานะการกลับมาของการแก้ lp ของคุณหรือที่ถูกผูกไว้อย่างชัดเจนε x1ϵ
David Nehme

@DavidNehme: หนึ่งสามารถเพิ่มข้อ จำกัดเพื่อให้ได้วัตถุประสงค์ที่ จำกัด yn+11
Arnold Neumaier

5

สำหรับปัญหาความเป็นไปได้ของ LP ฉันจะไม่ใช้ simplex มาตรฐาน อัลกอริธึมเบื้องต้นเบื้องต้น (หรือคู่) เริมจะเข้าเยี่ยมชมจุดยอดของชุดที่เป็นไปได้ของปัญหาครั้งแรก (หรือคู่)

ให้เซตของปัญหาที่เป็นไปได้ที่คุณต้องการแก้คือและสมมติว่าคุณต้องแก้ปัญหา ( F :) แทน :F={x:Axb,x>0}Fε

minx0s.t.Axbxε1.

ปัญหาที่คุณต้องการแก้ไขที่ใกล้เคียงที่สุดคือซึ่งยอมรับคะแนนมากเกินไปเล็กน้อย ปัญหาคือว่าเขตแดนของ orthant บวก (เช่นชุดB = { x : x0 , ฉัน : x ฉัน = 0 }จะทำให้ขึ้นเป็นส่วนหนึ่งของขอบเขตของการตั้งค่าความเป็นไปได้ของF 0 . เราต้องการ ต้องการยกเว้นประเด็นเหล่านั้นวิธีหนึ่งในการทำเช่นนั้นคือทำสิ่งที่แอรอนแนะนำซึ่งก็คือการตั้งค่าεF0B={x:x0,i:xi=0}F0εให้มีค่าเป็นบวกเล็กน้อยจากนั้นใช้อัลกอริทึม LP มาตรฐานใด ๆ กลยุทธ์นี้เป็นกลยุทธ์ที่ดีและอาจทำงานได้ในหลากหลายสถานการณ์ อย่างไรก็ตามมันจะล้มเหลวถ้าไม่สามารถทำได้ เรารู้ว่าF 0F F εสำหรับทุกε > 0 (เพื่อการใช้สัญลักษณ์ที่ไม่เหมาะสมและอ้างถึงชุดที่เป็นไปได้โดยปัญหาที่เกี่ยวข้อง) และเป็นไปได้ที่แม้ว่าคุณจะเลือกค่าบวกเล็ก ๆ ของεตัวแก้ LP จะระบุ ว่า LP ของคุณไม่สามารถทำได้FεF0FFεε>0ε

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

อย่าใช้เริม แต่เพราะจะสำรวจจุดยอดของเท่านั้นซึ่งเป็นสิ่งที่คุณต้องการหลีกเลี่ยงFε


4

ปัญหาความเป็นไปได้เป็นเกมที่เล่นยากกว่าปัญหาเชิงเส้นทั่วไปซึ่งคุณสังเกตเห็น หากคุณกำลังแก้โดยประมาณ (โดยใช้การจุดลอยตัวของระบบสมการและข้อ จำกัด ) มันถูกต้องตามกฎหมายที่จะต้องที่εบางค่าตัวเลขที่มีขนาดเล็กมากขนาดใหญ่พอที่จะมั่นใจได้ว่าx ฉันจริง อาศัยอยู่ใน+แต่มีขนาดเล็กพอที่จะไม่พิจารณาวิธีแก้ปัญหาในขอบเขตxi>=ϵϵxi+

คุณอาจจะต้องปรับและวิธีการแก้ปัญหาของคุณจะมีคุณสมบัติในการ "ในปัจจัยของε " แต่ตอนนี้ก็เพียงพอแล้วสำหรับหลาย ๆ สถานการณ์ϵϵ


2

คำตอบที่ได้รับจาก aeismail คือการอ่านอย่างระมัดระวังพิจารณา lp

max(x1+x2)

เซนต์

x1+x21

x1,x20

มันมีวิธีแก้ปัญหาและ( 0 , 1 )เช่นเดียวกับคนอื่น ๆ (เสื่อม) ความมีอยู่ทั่วไปของคำถามนั้นหมายถึงกรณีเหล่านี้จำเป็นต้องได้รับการปฏิบัติเช่นกัน(1,0)(0,1)

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

แม้ว่าฉันจะไม่สามารถพิสูจน์ทางคณิตศาสตร์ได้ว่างานนี้ (หรือขั้นตอนที่กำหนดไว้อย่างดีว่าจะแก้ไขฟังก์ชันวัตถุประสงค์ได้อย่างไร) ฉันหวังว่านี่จะช่วยได้ :)


อย่างไรก็ตามหากคุณมีโซลูชันที่เสื่อมโทรมจำนวนมากคุณจะจัดการกับตัวเลขนี้อย่างไร การแก้ปัญหาตัวเลขจะไม่สร้างคำเตือน (หรือแย่กว่านั้น) เกี่ยวกับการแก้ปัญหานี้หรือไม่?
aeismail

ไม่พวกเขาจะไม่; พวกเขาจะส่งคืนโซลูชั่นที่ดีที่สุดที่พบ วิธีที่คุณจะสร้างโซลูชันต่อไปคือการเพิ่มระนาบการตัด (หรือข้อ จำกัด อื่น ๆ ) ที่ไม่รวมโซลูชันที่ดีที่สุดที่คำนวณไว้ก่อนหน้านี้ ในกรณีนี้การเพิ่มระนาบการตัดเช่นนี้จะช่วยให้คุณสามารถคืนค่าประมาณของการแก้ปัญหาที่ดีที่สุดแบบไม่ จำกัด
Geoff Oxberry

ฉันจะเห็นว่าเป็นการตัดสินใจเขียนโปรแกรมที่แปลก ทำไมคุณไม่ต้องการบอกผู้ใช้ว่าฟังก์ชั่นวัตถุประสงค์ทำอะไรแปลก ๆ ในบริเวณใกล้เคียงของโซลูชันที่รายงาน สำหรับนักแก้ปัญหาแบบไม่เชิงเส้นฉันเห็นว่ามีปัญหากับการหาว่าเกิดอะไรขึ้น แต่นั่นจะไม่ง่ายกว่าที่จะบอกด้วยระบบเชิงเส้น?
aeismail

ฉันต้องคิดว่าจะตรวจจับความเสื่อมได้อย่างไรโดยการสร้างปัญหา แต่โดยทั่วไปแล้วผู้ใช้ต้องการทางออกที่ดีที่สุดดังนั้นข้อมูลที่สำคัญที่สุดสำหรับ LP คือการกลับมาหากวิธีแก้ปัญหานั้นดีที่สุดเป็นไปได้ (แต่ไม่เหมาะสม) เป็นไปไม่ได้หรือไม่ได้ จำกัด (สถานะเหล่านี้เป็นจริงสิ่งที่นักแก้ปัญหาเช่น CPLEX จะกลับมา) ความเสื่อมเป็นหลักในประเด็นทางทฤษฎี เหตุผลเดียวที่มันจะถูกกล่าวถึงในบริบทตัวเลขคือในการออกแบบอัลกอริทึมหรือในทางปฏิบัติเพื่อให้ทราบว่าโดยทั่วไปความเสื่อมจะชะลอตัวลง
Geoff Oxberry
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.