Doğrusal programlara orta nokta çözümleri


9

Sadece bir çözüm değil, aynı zamanda minimum değeri kabul eden politopun yüzünde mümkün olduğunca merkezi bir çözüm olmasını istediğim doğrusal bir program var.

A priori, minimize eden yüzün çeşitli nedenlerle yüksek boyutta olmasını bekleriz, örneğin minimize edilen objektif fonksiyon, birçok kısıtlamanın maksimumudur:

Minimize tabi ile doğrusal ve için tüm ve .ϵfi(x¯)ϵ<0fixi>0iixi=1

Elbette simpleks algoritmasından hiçbir merkeziyete benzer özellik elde edemeyiz. Her zamanki iç nokta algoritmalarından herhangi biri böyle özellikler sergiliyor mu? Mümkün olduğunca köşelerden veya alt boyutlu yüzlerden kaçınmalarını garanti ediyor musunuz?


Aslında, merkeziyet minimallikten daha önemli olduğundan, diğer doğrusal programlama algoritmalarının ilgili özellikler sunup sunmadığını merak ettiği için, tüm politopun orta noktasını bulan kolay ikinci dereceden bir programdan memnunum.

Güncelleme: Altta yatan sorunu Lagrange çarpanları ile çözülebilen basit bir kısıtlanmış minimizasyon problemine indirgedim, ancak yukarıdaki soru yine de ilginç olmaya devam ediyor.


2
tam olarak sorunuz değil ama: sentroidi hesaplamak # P-zordur; En iyi yaklaşımın ne olduğundan emin değilim, ancak bazı uygulamalar için politopu izotropik pozisyona getiren ve (dönüştürülmüş) politoptan çok sayıda homojen numunenin ortalamasını alan bazı uygulamalar için yeterlidir. bu nota bakınız, Lemma 15, örneğin: cc.gatech.edu/~vempala/acg/notes.pdf
Sasho Nikolov

bu daha teorik mi yoksa daha pratik bir soru mu? belki de optimal yüzün tüm köşelerini oluşturmak ve daha sonra bunların uygun dışbükey kombinasyonlarını kullanmak mümkün olabilir.
anonim

Yanıtlar:


4

Yorumlar için çok uzun olan birkaç gözlemim var. İşte bir özet.

  1. Sorununuzu tam olarak çözmek için herhangi bir algoritma doğrusal programları tam olarak çözmek için kullanılabilir (yani Sariel'in çözümünde kullanılan ve şu anda bir polinom zaman algoritmasına sahip olmayan "güçlü doğrusal programlama").

  2. Doğal takip, yaklaşık çözümlerin (yani, "zayıf doğrusal programlama") bir çözüm sağlayabildiğidir. Cevap evet olsa da, bu prosedür için durdurma koşulunun, bildiğim kadarıyla, polinom zamanında hesaplanamayan miktarlar gerektirdiği görülmektedir. (yani, algoritma iyi bir şey bulur, ancak bunun zor olduğunu kanıtlamaktır .) Buradaki ana önerim , probleminiz için anlamlı bir " -optimal çözümü" tanımını yapmaktır, bu durumda bu yaklaşım izlenebilirdir. (Bu strateji, çokyüzlünün küçük yüzlerini etkili bir şekilde atar.)ϵ

Genel olarak, şu anki probleminizle ilgili düşüncelerinizi düşünürken verimlilik konularında çalışmaya devam ettim. Ancak bunun makul bir sezgisi var: etrafa attığımız nesneler - köşeler, yüzler, vb. - Ayrık ve üstel olarak bol miktarda.

(1.) Sorununuzu tam olarak çözen bir algoritmamız olduğunu varsayalım. Sağlanan orta noktayı içeren herhangi bir yüzün açıkta kalan noktasının orijinal doğrusal program için kesin bir çözüm olacağına dikkat edin. Bu yüzden aşağıdaki gibi devam edin. Orijinal objektif değerin (şimdi bildiğimiz) optimal değere eşit olması gerektiğini söyleyen yeni bir doğrusal kısıtlama ekleyin ve çözümün ilk koordinatını en üst düzeye çıkarmak için yeni bir objektif söyleyerek ayarlayın. Bu yordamı her boyut için bir kez tekrarlayın, her seferinde bir sınırlama ekleyin ve en üst düzeye çıkarmak için yeni bir koordinat seçin. Bu işlem her seferinde çözümün boyutunu azaltacaktır; zorunlu olarak, süreç tamamlandığında, tek boyutlu bir nokta anlamına gelen 0 boyutlu bir afinite setimiz vardır. BöyleceO(d)orta nokta çözme algoritmanızın yinelemeleri (ve her seferinde problem tanımını sadece polinom miktarında arttırmak ), güçlü doğrusal programlama çözülür. Bu, Sariel'in çözümü güçlü doğrusal programlama gerektirse de, sorunuzun kesin bir çözümünün bundan kaçınamayacağını gösterir. ( Düzenleme : kanıtımın girdi olarak kompakt bir polihedron (bir politop) varsaydığını unutmayın; aksi takdirde köşeleri bulmak için biraz daha çalışması gerekir.)d

(2.) Her bir iterasyonda tam bir şişmiş dışbükey çözücü kullanan, çözümleri orta nokta çözeltisinin hafif bir nosyonuna yaklaşacak olan yinelemeli bir şema. Olumlu ama azalan bir ceza parametreleri dizisi seçin ; bunların geometrik olarak aşağıya inmesi mantıklıdır, yani . Şimdi, her için dışbükey fonksiyonunu yaklaşık olarak küçültün{λi}i=10λi=2ii

c,xλij=1mln(aj,xb),

Burada orijinal hedefinizdir ve , şimdi logaritmik engeller aracılığıyla hedefe yerleştirilen orijinal kısıtlamaları arasında değişmektedir (not, bu standarttır). Şimdi, çokyüzlünün minimize edici yüzünü (en büyük boyutta) , dışbükey opt kara yeterince küçük ve tolerans için, yaklaşık optimumunuzun bu yüze yakın olacağını unutmayın, ancak bariyerler itecektir diğer kısıtlamalardan olabildiğince uzağa. Başka bir yol söyledi,c,xjmλiτλiazalırsa, orijinal doğrusal hedef sonunda sizi uygun yüzlerden koruyan bazı titiz engellere hükmeder, ancak sizi diğer hedeflerden, özellikle hedef yüzün engellerinden koruyan engelleri etkilemez.

Mükemmel bir dünyada, oturup analitik olarak mükemmel bir değer veya en azından bir durma süresi belirleriz, böylece sonsuz sayıda problemi çözmek zorunda kalmazsınız. Ne yazık ki, bu zor görünüyor. Bir fikir, örneğin, boyutu 0'dan büyük olan herhangi bir yüzün en küçük genişliğini belirlemektir; bu, pozitif optimum ile iyi tanımlanmış bir minimizasyon problemidir, çünkü son derece fazla yüz vardır (ve genişlik her birine göre hesaplanır). Bununla , bariyerlerin etkisinin her yüzün merkezinde küçük olacağı kadar küçük ayarlayabiliriz . Ne yazık ki, üstel olarak birçok yüz olabilir, bu nedenle bu miktarı hesaplamak saçmalıktır.λλ

Karşılaşabileceğim tüm durma koşullarında bu tür hesaplama zorlukları vardı. (Dahası, birçoğu bunu güçlü bir doğrusal programlama çözücüsüne dönüştürmek için tekrar kullanılabilir.)

Bu nedenle tavsiyem, `` -close optimal orta nokta '' kavramını oluşturmak ve ve dışbükey opt kara kutu toleransınızı uygun şekilde seçerek çözmek . Ben gerçekten en büyük genişliğe sahip yüzler umurumda değil, çünkü bu makul bir seçim olduğunu düşünüyorum .ϵλτϵ

(Bazı son yorumlar.) Görünüşe göre "orta nokta" kavramı çok önemli; Sasho'nun yorumu, sentroidin (kütle merkezi?) Son derece zor bir sorun olduğunu belirtirken, en büyük yazılı topun bulunması kolaydır. Yukarıda önerdiğim logaritmik engeller genel olarak bu orta nokta kavramlarından hiçbiriyle tutarlı olmayacaktır. Öte yandan, bariyerler ve top için, sentroidinizden yüzün göreceli sınırına olan mesafede bir alt sınır elde edebilirsiniz; belki bu sizin için daha yararlıdır?

Son olarak, açıklamanıza göre, "hedef yüz" ün olabildiğince yüksek bir boyuta sahip olmak istediğinizi düşünüyor musunuz? Bu iyi tanımlanmıştır, ancak olası tüm küçük boyutlar için de çözüm yüzeyleri vardır. Her neyse, hem Sariel'in yaklaşımı hem de yukarıdaki bariyer yaklaşımı en büyük boyutla çalışacaktır.


Evet, bunun gibi hileleri düşündüm, ama sonuçta Lagrange çarpanlarını kullanarak konuya . Diyagonal üzerinde için zayıf bir merkeziyet özelliği verir , bu da minimize edici yüzey olmayabilir, ancak kesinlikle asla hareket etmeyen kısıtlayıcı yüzeylerden biridir. Sadece kontraksiyonlar gelişmeyi bıraktığında ayrı bir doğrusal program çalıştırıyorum ve aslında için asgari minimum gereksinime ihtiyacım var . Sonuçta kısıtlamaların daha hızlı gelişmesine yardımcı olmak için simge durumuna küçültmeye gerek yoktu . Yine de teşekkürler! :)ifi(x)2+jxj2jxj=1xϵϵ
Jeff Burdges

Ahh # 2 ilginç görünüyor, başlangıçta düşündüğüm gibi değil. Şirin! Söylediğim gibi, hızlı bir şekilde makul bir yere gittiği sürece minimize eden yüze inmediği için affediyorum . Bir noktada bununla oynayacağım. Aslında, doğrusal olmayan yerine objektif bilinear yapmak için bir neden bulduğum için zaten dışbükey optimizasyonu okumak gerekir. x
Jeff Burdges

"Güçlü doğrusal programlama" konusunu anlamıyorum ve bu ifadeyi daha önce hiç duymamıştım. bir LP'nin güçlü polinom zamanında nasıl çözüleceği bilinmemektedir. ancak girdi açıklamasında zaman polinomunda (yani zayıf polinom zamanı) bir LP'nin çözülmesi elbette iyi bilinmektedir. OP zayıf bir polinom zamanında çalışan bir algoritma istiyorsa Sariel'in çözümü + çok zamanlı bir iç nokta algoritması işi yapacak, değil mi?
Sasho Nikolov

@SashoNikolov, işte şimdiki anlayışım. Var olan (zayıf poli-zaman) çözücüleri girdi olarak tolerans ve -optimal çözümü döndürür . Bu arada, Sariel'in çözümü hayati bir şekilde tam bir çözüme bağlıdır: özellikle, bir iç nokta yöntemi nispeten iç yaklaşık bir optimum döndürecektir, bu da istenen optimal yüzün afin gövdesini tanımlayan adımın aslında tüm makul olanın gövdesini seçeceği anlamına gelir. Ayarlamak. Güçlü / zayıf hakkında yazdıklarımı gözden geçirmem gerektiğine katılıyorum, burada kilit konu gerçekten herhangi bir şekilde kesin çözümler elde ediyor. ττ
matus

@SashoNikolov, şimdi düşündüğüme göre, aynı iyimserlik kavramı (aynı meselelerle) Sariel'in çözümünde, örneğin gerçekten dar olmaya toleranslı kısıtlamaları tedavi ederek ve bu değeri uygun şekilde ayarlayarak çalışılabilir. Bu gece çözümümü güncelleyeceğim.
matus

6

İlk önce en uygun çözümü bulun, ardından çözümün istediğiniz optimal değere eşit olması gereken doğrusal kısıtlamayı ekleyin ve LP'nizi mümkün olan en büyük topu arayan LP olarak yeniden konumlandırın. Bu değiştirilmiş LP'yi çözün ve istediğiniz şeye sahipsiniz.

Neden ikinci problem LP kullanılarak çözülebilir Hesaplamalı Geometride standart bir sevimli sorundur ...

==============

Daha resmi olarak, optimal çözeltiyi içeren uygun noktaları kapsayan afin altuzayını bulursunuz. Bu nedenle, en uygun çözümün hiper olduğunu varsayalım (yani, orijinal LP hedef ). Eğer orijinal LP mümkün bölgesidir, biz en büyük topu aradığınız . Bu amaçla, bu seti içeren en küçük boyutlu afin alt uzayını hesaplamamız gerekir. Bu alt alanı bulduktan sonra, değişkenleri yalnızca bu affine alt uygulamasını dikkate alacak şekilde değiştirin. Şimdi, politopunuz tam boyutludur ve yukarıda tarif ettiğim gibi ikinci LP'yi kullanabilirsiniz.hcx=αmincxPPh

Yani, ilk LP tarafından hesaplanan tepe noktası olsun . Komşu köşeleri göz önünde bulundurarak . Aynı hedef değerine (yani, ) sahip tüm komşularıyla birlikte afin alt uzayını düşünün . Bu afin altuzayın istenen altuzay olduğunu görmek zor değildir.vvvα

Yani, yazlamak için: (A) optimum değeri bulmak için LP çözmek. (B) Mümkün olan çözeltiyi içeren en küçük boyutlu alt boşluğu optimal değerle hesaplayın. (C) Bu yakın çekim alt alanında orijinal LP'yi yeniden yazın (yani tüm alakasız boyutları düşürün), bir değişken ekleyin ve bu politopun içindeki en büyük topu bulmak için LP'ye dönüştürün.


Tam boyutlu olmayan bir polihedrondaki "en büyük top" ile kastedilen nedir?
Kristoffer Arnsfelt Hansen

Polihedron mutlaka bir afin alt-alanında uzanan bir dışbükey dizi @KristofferArnsfeltHansen bir boyut.
Sasho Nikolov

bunun işe yaraması için, sizi ilk adımda bulduğunuz yüzlerle sınırlayan bir kısıtlama belirtmeniz gerekir. Ayrıca, çözümün bu yüz boyunca sabit olduğunu da bilmelisiniz (muhtemelen tamamlayıcı gevşeklik bunu ortaya çıkaracaktır)
Suresh Venkat

Polinom zamanında ilk optimizasyondan sonraki adımları yapmanın bir yolu var mı? Yazıldığı gibi, hedef yüzünde katlanarak çok sayıda olabilecek tüm köşelerin dikkate alınmasını gerektiriyor gibi görünüyor.
matus

1
Bundan daha kolaydır - sadece en uygun tepe noktasına bitişik köşeleri dikkate almanız gerekir - ona en fazla bitişiktir ve bunları polinom zamanında hesaplayabilirsiniz .... Neden doğru olduğunu görmek için afin altuzay - bu afin altuzay üzerinde yatan komşuları tarafından yayılır, ancak bunlar orijinal politopta v'ye bitişik köşelerin bir alt kümesidir. Ve evet - bunu görmek biraz zamanımı aldı. dv
Sariel Har-Peled
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.