การเขียนโปรแกรมเชิงเรขาคณิตต่างจากการตั้งโปรแกรมนูนอย่างไร


10

การเขียนโปรแกรมเชิงเรขาคณิต (ทั่วไป) แตกต่างจากการเขียนโปรแกรมนูนทั่วไปอย่างไร

โปรแกรมเรขาคณิตสามารถแปลงเป็นโปรแกรมนูนและโดยทั่วไปแล้วจะได้รับการแก้ไขโดยวิธีการจุดภายใน แต่อะไรคือข้อได้เปรียบเหนือการกำหนดปัญหาโดยตรงในฐานะโปรแกรมนูนและแก้ปัญหาด้วยวิธีการจุดภายใน?

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

ในทางกลับกันมีโปรแกรมนูนที่ไม่สามารถประมาณค่าได้ดีโดยโปรแกรมเรขาคณิตหรือไม่?

คำตอบ:


5

ฉันไม่เคยได้ยินเกี่ยวกับการเขียนโปรแกรมเชิงเรขาคณิตจนกระทั่งคำถามนี้ นี่คือรายงานการตรวจสอบของ Stephen Boyd, et al (Vandenberghe เป็นผู้เขียนร่วมด้วย) ซึ่งเป็นการสอนเกี่ยวกับการเขียนโปรแกรมเชิงเรขาคณิต

โปรแกรมทางเรขาคณิตตามที่แสดงไว้ในตอนแรกไม่ใช่แบบนูน ยกตัวอย่างเช่นเป็นคำสั่งบวกและไม่ใช่นูนดังนั้นโปรแกรมเชิงเรขาคณิตจึงไม่ใช่เซตย่อยที่เข้มงวดของการเขียนโปรแกรมนูนx1/2

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

ยิ่งกว่านั้นหากคุณใช้อัลกอริทึมจาก NLP ที่ไม่นูนคุณจะต้องระบุชุดที่เป็นไปได้ของคุณเป็นชุดคอมแพ็คใน ; ในโปรแกรมรูปทรงเรขาคณิตเป็นข้อ จำกัด ที่ถูกต้องRnx>0

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

สำหรับคำถามสุดท้ายของคุณฉันไม่คิดว่าชุดโปรแกรมทางเรขาคณิตนั้นเป็นแบบ isomorphic กับชุดโปรแกรมนูนดังนั้นฉันสงสัยว่ามีโปรแกรมนูนที่ไม่สามารถแสดงเป็นโปรแกรมเรขาคณิตและโปรแกรมเหล่านี้ฉันสงสัยว่ามี เป็นบางอย่างที่ไม่สามารถประมาณได้ดีพอสมควรโดยโปรแกรมทางเรขาคณิต อย่างไรก็ตามฉันไม่มีหลักฐานหรือตัวอย่าง


ดูเหมือนว่าบทที่ 8 ของบทความตรวจสอบที่เชื่อมโยงของคุณพยายามตอบคำถามของฉัน อย่างไรก็ตามหลังจากดูคร่าวๆครั้งแรกฉันได้รับความรู้สึกว่าจริงๆแล้วโปรแกรมนูนใด ๆ สามารถประมาณได้โดยโปรแกรมทางเรขาคณิต (แน่นอนเปลี่ยนลอการิทึมแน่นอน ... ) อย่างไรก็ตามเนื่องจากโปรแกรมเชิงเส้นใด ๆ "เห็นได้ชัด" และเป็นโปรแกรมเชิงเรขาคณิตนี่ก็อาจเป็นตัวแปรของคำสั่งที่โปรแกรมนูนใด ๆ สามารถประมาณโดยโปรแกรมเชิงเส้น แต่นั่นไม่ใช่สิ่งที่ฉันหมายถึง "ประมาณอย่างสมเหตุสมผล ดี".
โทมัสคลิมเพล

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

3

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


การเขียนโปรแกรมเชิงเรขาคณิตไม่ได้เป็นส่วนย่อยที่เข้มงวดของการเขียนโปรแกรมนูน อย่างไรก็ตามภายใต้การแปลงแบบเอ็กซ์โพเนนเชียลล็อกโปรแกรมเรขาคณิตที่ถูกแปลงเป็นโปรแกรมนูน
Geoff Oxberry

ใช่นั่นคือสิ่งที่ฉันตั้งใจจะพูด แก้ไขคำตอบเพื่อความชัดเจน
เลือก
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.