Matris kısıtlamaları ile doğrusal programlama


10

Aşağıdaki gibi görünen bir optimizasyon sorunum var

minJ,Bij|Jij|s.t.MJ+BY=X

Burada, değişkenlerim J ve B matrisleridir , ancak tüm problem hala doğrusal bir programdır; kalan değişkenler sabittir.JB

Bu programa en sevdiğim doğrusal programlama araçlarına girmeye çalıştığımda bazı sorunlarla karşılaşıyorum. Yani, bunu "standart" doğrusal program formunda yazarsam, M ve Y parametre matrisleri Ybir ton kez tekrarlanır ( X'in her sütunu için bir kez X).

Yukarıdaki formun optimizasyonlarıyla başa çıkabilecek bir algoritma ve / veya paket var mı? Şu anda hafızam tükeniyor çünkü M ve Y birçok kez kopyalanması gerekiyor!


B bir parametre matrisi, yoksa demek Y ? Çeşitli matrislerin şekilleri nelerdir?
Geoffrey Irving

[Merhaba Geoffrey!] J ve B değişkenlerdir, gerisi parametrelerdir. B'nin nispeten az sütunu vardır, ancak kalan tüm boyutlar oldukça büyüktür (hiçbir şey kare değildir).
Justin Solomon

[Merhaba!] Yazıyı, B'nin bir parametre olduğunu iki kez söylemeyecek şekilde düzenlemelisiniz.
Geoffrey Irving

1
İlginç ama muhtemelen yararsız bir şekilde, bu sorunun sürümü yerinebirkaç SVD ile çözülebilir. | J i j |Jij2|Jij|
Geoffrey Irving

1
@Geoffrey, bu bir tesadüf değil :-)
Justin Solomon

Yanıtlar:


12

genel bakış

kement tipi problemleri için şaşırtıcı bir şekilde hızlı bir şekilde yakınlaştığı tespit edilen Alternatif Yol Çarpanları Yöntemi'nin (ADMM) bir varyantını denemek isteyebilirsiniz . Strateji, sorunu artırılmış bir Lagrangian ile formüle etmek ve daha sonra ikili problem üzerinde gradyan yükselmesi yapmaktır. Bu özel düzenli sorunu için özellikle iyidir, çünkü yöntemin her yinelemesinin düz olmayan kısmı, öğeyi basitçe değerlendirebileceğiniz kesin bir çözüme sahiptir, pürüzsüz kısım ise doğrusal bir sistemi çözmeyi içerir.l 1l1l1

Bu yazıda biz

  • probleminizin genelleştirilmesi için genel bir ADMM formülasyonu türetmek,
  • her ADMM yinelemesi için alt problemleri elde edin ve durumunuza göre özelleştirin ve ardından
  • her bir yinelemenin çözülmesi gereken ortaya çıkan doğrusal sistemi araştırın ve ve için özdeğer ayrışmalarının (veya düşük kademeli yaklaşımlarının) önceden hesaplanmasına dayanan hızlı bir çözücü (veya ön koşullu) geliştirin .Y Y TMTMYYT
  • birkaç sonuçla özetleyin

Buradaki büyük fikirlerin çoğu aşağıdaki muhteşem inceleme belgesinde ele alınmıştır,

Boyd, Stephen ve ark. "Dağıtılmış optimizasyon ve istatistiksel öğrenme çarpanları alternatif yön yöntemi ile." Makine Öğreniminde Temeller ve Trendler® 3.1 (2011): 1-122. http://www.stanford.edu/~boyd/papers/pdf/admm_distr_stats.pdf

Ayrıntılara girmeden önce, bunun pratik bir mevcut kod yanıtı olmayan bir yöntem / algoritma cevabı olduğunu belirtmek isterim - bu yöntemi kullanmak istiyorsanız, kendi uygulamanızı yuvarlamanız gerekir.

ADMM formülasyonu

Genel olarak, çözmek istediğinizi varsayalım

minxi|xi|s.t.Ax=b.

Orijinal yazıdaki sorun, uygun vektörleştirmeden sonra bu kategoriye girer. (bu sadece prensipte - vektörleştirmenin pratikte yapılması gerekmediğini göreceğiz)

Bunun yerine eşdeğer sorunu çözebilirsiniz, Lagrange 'ye sahip L(x,z,λ,γ)=

minx,zi|xi|+α2||xz||2+β2||Azb||2s.t.Az=b&x=z,
L(x,z,λ,γ)=i|xi|+α2||xz||2+β2||Azb||2+λT(Azb)+γT(xz)=i|xi|+α2||xz+1αγ||2+β2||Azb+1βλ||2+α2||1αγ||2+β2||1βλ||2.

Çarpanları çözer arasında değişen yönü yöntemi ikili problem, ile hariç çift değişkenlere gradyan çıkış yoluyla ikili alt problemlerde hatalı dönüşümlü projeksiyonlar. Yani, yineleme x k + 1

maxλ,γminx,zL(x,z,λ,γ),
xk+1=argminxL(x,zk,λk,γk)zk+1=argminzL(xk+1,z,λk,γk)γk+1=γk+α(xk+1zk+1)λk+1=λk+β(Azk+1b).

ve parametrelerinde (yukarıda bağlanan Boyd & Parikh makalesinde açıklanmıştır) belirli yumuşak koşullar altında , ADMM yöntemi gerçek çözüme dönüşecektir. Yakınsama oranı, çekirdekte bir gradyan çıkış yöntemi olduğu için lineerdir. Genellikle 1) sezgisel tarama temeline göre ve parametrelerini değiştirerek veya 2) Nesterov hızlandırmayı kullanarak süper doğrusal olmak için hızlandırılabilir. Ceza parametrelerini değiştirme hakkında notlar için Boyd anket kağıdına ve ADMM ile Nesterov hızlandırmasını kullanmak için aşağıdaki makaleye bakın,β α βαβαβ

Goldstein, Tom, Brendan O'Donoghue ve Simon Setzer. "Hızlı alternatif yön optimizasyon yöntemleri." CAM raporu (2012): 12-35. ftp://ftp.math.ucla.edu/pub/camreport/cam12-35.pdf

Bununla birlikte, toplam yakınsama oranı sadece doğrusal olsa bile, problemleri için yöntemin, sparite paternini çok hızlı bir şekilde bulduğu ve daha sonra kesin değerler üzerinde daha yavaş yakınsak olduğu gözlemlenmiştir. Seyreklik modelini bulmak en zor kısım olduğu için, bu çok tesadüfi! Mevcut araştırmanın bir alanı gibi görünmesinin kesin nedenleri. Herkes seyreklik modelinin hızlı bir şekilde birleştiğini görür, ancak kimse bunun tam olarak neden olduğunu bilmiyor gibi görünüyor. Bir süre önce Boyd ve Parikh'e e-posta üzerinden bunu sordum ve Parikh, yöntemi bir kontrol sistemleri bağlamında yorumlayarak açıklanabileceğini düşündüm. Bu fenomenin bir başka sezgisel açıklaması aşağıdaki makalenin ekinde bulunmaktadır,l1

Goldstein, Tom ve Stanley Osher. "Bölünmüş Bregman yöntemi L1 düzenli sorunlar için." SIAM Görüntüleme Bilimleri Dergisi 2.2 (2009): 323-343. ftp://ftp.math.ucla.edu/pub/camreport/cam08-29.pdf

Tabii ki şimdi zorluk özel durumunuz için ve güncelleme alt problemlerini çözmektir . Lagrange kuadratik olduğundan, güncelleme alt problemi sadece doğrusal bir sistemin çözülmesini gerektirir. o türevlenemeyen olduğundan subproblem zor görünüyor, ama eleman tarafından uygulanan öğe olabilir çözümü için kesin bir formül var olduğu ortaya çıktı! Şimdi bu alt problemleri daha ayrıntılı olarak tartışıyoruz ve orijinal yayındaki soruna belirliyoruz.z z z xxzzzx

güncelleme alt probleminin kurulumu (doğrusal sistem)z

İçin güncelleme, var a r g m i n z L ( x k , z , λ k , γ k ) = a r g m i n z αz

argminzL(xk,z,λk,γk)=argminzα2||xz+1αγ||2+β2||Azb+1βλ||2.

Sorununuz için uzmanlaştıkça,

birrgmbennZJ,ZBα2||Jk+1-ZJ+1αΓJ||FrÖ2+α2||Bk+1-ZB+1αΓB||FrÖ2+β2||MZJ+ZBY-X+1αΛ||FrÖ2,

burada , Frobenius (elementwise ) normunu belirtir . Bu, ve göre objektifin kısmi türevlerini alarak ve sıfıra ayarlayarak birinci dereceden optimallik koşullarının bulunabileceği kuadratik bir minimizasyon problemidir . Bu, l 2 Z J Z B 0||||FrÖl2ZJZB

0=-α2(Jk+1-ZJ+1αΓJ)+β2MT(MZJ+ZBY-X+1βΛ),0=-α2(Bk+1-ZB+1αΓB)+β2(MZJ+ZBY-X+1βΛ)YT.

Orijinal poster Justin Solomon'un yorumlarında belirtildiği gibi, için bu sistem simetriktir, bu nedenle eşlenik gradyan ideal bir yöntemdir. Daha sonraki bir bölüm, bu sistemi ve daha ayrıntılı olarak nasıl çözüleceğini / ön koşullandırılacağını açıklar.ZJ,ZB

güncelleme alt problemini çözme (analitik eşik çözümü)x

Şimdi alt , a r g m i n x L ( x , z k , λ k , γ k ) = a r g m i n x i | x i | + αx

argminxL(x,zk,λk,γk)=birrgmbennxΣben|xben|+α2||x-zk+1αγk||2

Görülecek ilk şey, toplamın öğeye göre ayrılabileceği,

Σben|xben|+α2||x-zk+1αγk||2=Σben|xben|+α2Σben(xben-zbenk+1αγbenk)2,

Dolayısıyla, optimizasyon problemi öğesini paralel olarak,

xik+1=argminxi|xi|+α2(xizik+1αγik)2.

Bu denklemin genel biçimi,

mins|s|+α2(st)2.

Mutlak değer fonksiyonu en uygun noktayı çekmeye çalışırken, ikinci dereceden terim en uygun noktayı doğru çekmeye çalışıyor . gerçek çözüm bu nedenle ikisi arasında segmentinde bir yerde bulunur; artan en uygun noktayı doğru çekme eğilimi ve azalan en uygun noktayı doğru çeker .s = t [ 0 , t ) α t α 0s=0s=t[0,t)αtα0

Bu dışbükey bir işlevdir, ancak sıfırda ayırt edilemez. Bir minimizasyon noktasının koşulu, o noktadaki hedefin alt türevinin sıfır içermesidir. İkinci dereceden terim türevine sahiptir ve mutlak değer fonksiyonu için türevine , olduğunda aralığı olarak set değerli alt türevine ve için türev . . Böylece, genel objektif fonksiyon için alt türev alırız, - 1 s < 0 [ - 1 , 1 ] s = 0 1 s > 0 s ( | s | + αα(st)1s<0[1,1]s=01s>0

s(|s|+α2(s-t)2)={1+α(s-t)s>0[-1,1]+αt,s=0,-1+α(s-t),s<0.

Bundan biz de objektif bir subderivative görüyoruz içeriyorsa ancak ve ancak , bu durumda küçültücüdür. Öte yandan, eğer minimizer değilse, tek değerli türevi sıfıra eşit olarak ayarlayabilir ve minimizer için çözebiliriz. Bunu yaptığınızda, 0 | t | 1s=00 s=0s=0argmins| s| +α|t|1αs=0s=0

birrgmbenns|s|+α2(s-t)2={t-1α,t>1α,0,|t|1α,t+1α,t<-1α

Bu sonucu tekrar asıl soruna özelleştirmek için verimi, için güncelleme basitçe J k + 1 i j ={ Z k i j - 1t=Zbenjk-1αΓbenjk

Jbenjk+1={Zbenjk-1αΓbenjk-1α,Zbenjk-1αΓbenjk>1α,0,|Zbenjk-1αΓbenjk|1α,Zbenjk-1αΓbenjk+1α,Zbenjk-1αΓbenjk<-1α.
B
Bk+1=ZB-1αΓB,

Orijinal poster Justin Solomon tarafından belirtildiği gibi yorumlarda. Genel olarak, için güncelleme yapmak sadece matrislerinizin girişleri arasında döngü ve her bir giriş için yukarıdaki formülleri değerlendirmeyi gerektirir.J,B

sistemi için Schur tamamlayıcısıZJ,ZB

Yinelemenin en pahalı adımı sistemi çözmek,

0=-α2(Jk+1-ZJ+1αΓJ)+β2MT(MZJ+ZBY-X+1βΛ),0=-α2(Bk+1-ZB+1αΓB)+β2(MZJ+ZBY-X+1βΛ)YT.

Bu amaçla, bu sistem için iyi bir çözücü / ön koşullandırıcı oluşturmak biraz çaba sarf etmeye değer. Bu bölümde bunu vektörleştirerek , bir Schur tamamlayıcısı oluşturarak , bazı Krnoecker ürün manipülasyonları yaparak ve daha sonra vektörleştirerek yapıyoruz. Ortaya çıkan Schur tamamlayıcı sistemi, hafifçe değiştirilmiş bir Sylvester denklemidir .

Aşağıda, vektörizasyon ve Kronecker ürünleri ile ilgili aşağıdaki kimlikler kesinlikle önemlidir:

  • vec(birBC)=(CTbir)vec(B),
  • (birB)(CD)=birCBD ,
  • (birB)-1=bir-1B-1 ve
  • (birB)T=birTBT .

Bu kimlikler, matris boyutları ve tersinirliği, denklemin her bir tarafının geçerli bir ifade olacağı şekilde tutulur.

Sistemin vektörleştirilmiş şekli,

(αben+β[benMTM(YM)TYMYYTben])[vec(ZJ)vec(ZB)]=[vec(αJ+βMTX+ΓJ-MTΛ)vec(αB+βXYT+ΓB-ΛYT)],

veya

[ben(αben+βMTM)β(YM)TβYM(αben+βYYT)ben][vec(ZJ)vec(ZB)]=[vec(F)vec(G,)],

burada ve sağ taraf için yoğun gösterimlerdir. Şimdi, matrisin sol alt bloğunu ortadan kaldırmak için Kronecker ürünlerini yoğunlaştırma sürecinde blok-gauss-eliminasyon / Schur tamamlayıcısı gerçekleştiriyoruz. Bu, FG,

[ben(αben+βMTM)β(YM)T0(αben+βYYT)ben-β2YYTM(αben+βMTM)-1MT]...[vec(ZJ)vec(ZB)]=[vec(F)vec(G,)-βYM(αben+βMTM)-1vec(F)].

Unvectorizing, sırayla çözmemiz gereken iki denklem,

  1. ZB(αben+βYYT)-(βM(αben+βMTM)-1MT)ZB(βYYT)...=G,-βM(αben+βMTM)-1FYT
  2. (αben+βMTM)ZJ=F-βMTZBY.

kare, yüksek rütbe olduğunda Schur tamamlayıcı sistemin çözümüY,M

Bu bölümde, matrislerinin önceden hesaplanmış tam kullanarak ve Sylvester için Bartels-Stewart algoritmasının değiştirilmiş bir versiyonunu uygulayarak (yukarıdaki denklem 1) için Schur tamamlayıcı sistemini denklem. Algoritma, standart terimden ikinci ekstra hesaba katmak için biraz değiştirilir , bu da Sylvester denklemini tam olarak yapmaz. Bir kezZBYYT,MMT,MTMβYYTZB ilk denklem yoluyla bulunursa, kolayca ikinci denklemden bulunabilir. İkinci denklemi istediğiniz herhangi bir yöntemle çözmek önemsizdir.ZJ

Bu yöntem, ADMM işlemi başlamadan önce iki tam SVD'yi önceden hesaplamak için önceden bir maliyet gerektirir, ancak daha sonra gerçek ADMM yinelemelerinde uygulanması hızlıdır. Yöntem, kısıtlama matrislerinin tam SVD'leriyle uğraştığından, kareye ve yüksek rütbeye yakın oldukları zaman uygundur. Düşük seviyeli SVD'leri kullanan daha karmaşık bir yöntem de mümkündür, ancak daha sonraki bir bölümde sunulmaktadır.

Yöntem aşağıdaki gibi gelişir. Let göstermektedirler önceden hesaplanmış tam tekil değer ayrıştırma ve olmak sağ tarafı yoğunlaştırmak . Daha sonra ilk denklem haline gelir çarpma sola ve sağa temizlemek için dikey faktörler tarafından ve yeni bir geçici bilinmeyen ayarlamak , bu daha da,

SDST=YYT,WΣWT=MMT,VTVT=MTM
'H
ZBS(αben+D)ST-WβΣ(αben+Σ)-1ΣWTZBSDST='H.
bir=WTZBS
bir(αben+D)-βΣ(αben+Σ)-1ΣbirD=W'HST.

Şimdi çapraz sistemi çözerek bulabilirizbir

((αben+D)ben+DβΣ(αben+Σ)-1Σ)vec(bir)=vec(W'HST).

bulduktan sonra , ve , için yukarıdaki ikinci denklemi , bu zaten için özdeğer ayrışmasına sahip olduğumuz için önemsiz .birZB=WbirSTZBZJMTM

Ön maliyet, ve iki simetrik pozitif tanımlanmış özdeğer ayrışmasını hesaplıyor ve daha sonra tam bir çözüm için yineleme başına maliyete, aynı sırayla bulunan bir avuç matris-matris çarpımı hakimdir. büyüklük 1 CG alt sınırı yapıyor. Açık özde ayrışma çok maliyetli ise, örneğin Lanczos yinelemesini erken sonlandırarak ve en büyük özvektörleri koruyarak tam olarak hesaplanabilirler . Daha sonra yöntem, doğrudan çözücü yerine CG için iyi bir ön koşul olarak kullanılabilir.MTMYYT

çok dikdörtgen olduğunda veya düşük sıralı yaklaşıma sahip olduğunda çözüm yöntemiM,Y

Şimdi dikkatimizi a) giriş matrisleri çok dikdörtgen olduğunda - veya sütunlardan çok daha fazla satıra sahip olduklarında veya tersi - veya b) düşük sıralı yaklaşıma sahip olduklarında çözmeye veya ön koşullandırmaya . Aşağıdaki derivasyon, Woodbury formülü, Schur tamamlayıcısı ve diğer benzer manipülasyonların kapsamlı kullanımını içerir.ZJ,ZBM,Y

Schur tamamlayıcı sistemimizle başlıyoruz,

(αben+βYYT)ben-β2YYTM(αben+βMTM)-1MT.

Birkaç manipülasyon bu sistemi daha simetrik bir forma dönüştürür,

(αben+βbenMMT+βYYTben)vec(ZB)=(ben(ben+βαMMT))vec('H).

Şimdi düşük seviyeli yaklaşımları getiriyoruz. Let olabilir ya da azaltılmış SVD en ya da düşük seviye yaklaşımları ve ( bir tutucudur olup Kullanılmış). Bunları sistemimize koymak, uygulamak istediğimiz tersi matrisi verir,

SD1/2S2T=YWΣ1/2VT=M
YMS2
(αben+βbenWΣWT+βYYTben)-1.

Tersine çevirmek için kullandığımız matris kimliğin düşük dereceli bir güncellemesi olduğundan, mantıksal strateji Woodbury formülünü kullanmaya çalışmaktır

(bir+UCUT)-1=bir-1-bir-1U(C-1+UTbir-1U)-1UTbir-1.

Bununla birlikte, ve düşük sıralı parçaları dik olmadığından biraz özen gösterilmelidir . Böylece Woodbury formülünü uygulamak için her iki düşük dereceli güncellemeyi tek bir büyük güncellemede topluyoruz. Bunu yapmak ve Woodbury formül verimlerini uygulamak, benWYben

(1αben+β[benWSben][benΣDY][benΣTSTben])-1=αben-βα2[benWSben][ben(Σ-1+βαben)βαSWTβαSTW(D-1+βαben)Y]-1[benΣTSTben].

Çekirdek ters 2x2 ters formülü ile hesaplanabilir,

[birBBTC]-1=[(bir-BC-1BT)-1-bir-1B(C-BTbir-1B)-1-C-1BT(bir-BC-1BT)-1(C-BTbir-1B)-1].

Bu yazı zaten yeterince uzun, bu yüzden hesaplamanın uzun ayrıntılarını yedekleyeceğim, ancak sonuçta gerekli alt matrisleri blok halinde tersine takmak ve her şeyi çarpmak, genel ters için aşağıdaki açık formu verir

(αben+βbenMMT+βYYTben)-1=1αben-βα2(t11+s11+t12+s12+t21+s21+t22+s22),

burada

t11=αβbenWl-1WTs11=(SWl-1)D11(STl-1WT)t12=-αβSh-1STWl-1WTs12=-(Sh-1Wl-1)D22(h-1STWT)t21=t12s21=-(Sh-1W)D22(h-1STl-1WT)t22=αβSh-1STbens22=(Sh-1W)D22(h-1STWT)D11=αβ(hben-benl-1)-1D22=αβ(benl-h-1ben)-1l=αβΣ-1+benh=αβD-1+ben.

Bu formda, tersi uygulayabilir ve terimini 8 sol ve sağ matris çarpma sandviçinden terime göre bulabiliriz . Kronecker ürünlerinin toplamını uygulamak için genel formül, ZB

((bir1B1)+(bir2B2)+...)vec(C)=vec(B1TCbir1+B2TCbir2+...).

Sonuçta ortaya çıkardığımız tüm açık tersler diyagonaldir, bu yüzden "çözülecek" hiçbir şey yoktur.

Doğrusal çözücü kodu

Matlab'da yukarıdaki iki çözücüsünü . İyi çalışıyor gibi görünüyor. Çözücü kodu burada.zJ,ZB

https://github.com/NickAlger/MeshADMM/blob/master/zkronsolve.m

Çözücülerin çalışıp çalışmadığını kontrol etmek için bir test komut dosyası. Ayrıca örnek olarak çözücü kodunun nasıl çağrılacağını da gösterir.

https://github.com/NickAlger/MeshADMM/blob/master/test_zkronsolve.m

son sözler

ADMM türü yöntemler bu tür sorunlar için çok uygundur, ancak kendi uygulamanızı gerçekleştirmeniz gerekir. Yöntemin genel yapısı oldukça basittir, bu nedenle MATLAB gibi bir şeyde uygulama çok zor değildir.

Sorununuz için yöntemi tam olarak tanımlamak üzere belirtilmesi gereken bu gönderiden eksik olan parça, ceza parametreleri seçimidir . Neyse ki, parametre değerleri çılgın olmadığı sürece yöntem genellikle oldukça sağlamdır. Boyd ve Parikh gazetesinde buradaki referanslar gibi ceza parametreleri hakkında bir bölüm var, ancak makul yakınsama oranları elde edene kadar parametreleri deniyorum.α,β

Sunulan çözücü stratejileri, eğer kısıtlama matrisleri a) yoğun, kare ve yüksek rütbe veya b) iyi bir düşük rütbe yaklaşımına sahipse oldukça etkilidir. Gelecekteki çalışmaların bir konusu olabilecek başka bir yararlı çözücü, aşağıdaki durum için optimize edilmiş bir çözücü olacaktır - kısıtlama matrisi seyrek ve kare şeklinde ve yüksek derecelidir, ancak için iyi bir önkoşul vardır . Örneğin, ayrıklaştırılmış bir Laplacian olması durum böyle olur .ZJ,ZBMαben+MMTM


Bunu şimdi uyguluyoruz! Kontrol etmek için, ve için matris simetrik / pozitif olarak tanımlanmalıdır, çünkü en küçük karelerden gelir, değil mi? Bu ampirik olarak doğru gibi görünüyor :-). CG, GMRES'ten daha iyi bir seçenek midir? ZBZJ
Justin Solomon

Ayrıca, B için güncelleme yanlış olduğunu düşünüyorum? Bu konuyu daha ayrıntılı bir şekilde inceliyorum, ancak enerji fonksiyonumda (hayır terim) geri çağırma görünmüyor , bu yüzden sadece değerleri alması gerektiğinden emin değilim Bunu yanlış düşünüyor muyum? Teşekkürler! |B|±(1-1/α).
Justin Solomon

1
[ yerine, ]B=ZB-ΓB/α
Justin Solomon

3
İnanılmaz! ve için kendi formüllerimi koyduktan sonra (muhtemelen yayınladığınıza yakın / eşdeğer ama bir şey işe yaramadı), bu IRLS yönteminden daha iyi performans gösteriyor. Teşekkürler! JB
Justin Solomon

1
Harika haber. Buradaki katkıların ne zaman gerçek sonuçlara yol açtığını görmek çok güzel.
Michael Grant

5

Muhtemelen doğrusal programlama için matrissiz bir yöntem kullanmak istersiniz. Özellikle doğrusal programlamaya yönelik herhangi bir yöntem bilmiyorum, ancak kuadratik programlar ve genel doğrusal olmayan programlar için matrissiz iç nokta yöntemleri var. İkinci dereceden program durumu, ikinci dereceden form katsayılarının sıfır olduğu probleminize tam olarak karşılık gelir. (Sorununuzun yapısına tam doğrusal çözümler kullanan yöntemleri de özelleştirebilirsiniz, ancak bu tür ısmarlama uygulamaya değmeyebilir ve matrissiz bir yöntem kullanmaktan daha az pratiktir.)

İç nokta metodlarının matrissiz varyantlarını uygulayan herhangi bir ticari optimizasyon paketi bilmiyorum. IPOPT'un doğrusal olmayan programlama için matrissiz bir iç nokta yöntemi uygulaması gerekiyordu, ancak bunu kullanmanızı sağlayan API çağrılarını izleyemedim.

CVX'e ek olarak, matrisi bir kez girmek için GAMS veya AMPL'yi kullanabilir ve bu matrisi kullanmak için modelleme dilinde kısıtlamalarınızı ayarlayabilirsiniz. Ancak çözücü tarafından CVX, GAMS ve AMPL arka uçları tarafından kullanılan yöntemler matrissiz çözücüler kullanmaz; hepsi büyük olacak olan standart programda lineer program için tam katsayı matrisini gerektirecektir (matrislerin Kronecker ürünü olacaktır). Muhtemelen ne olacak, doğrusal programınızı modelleme dilini kullanarak yukarıdaki forma girmeniz ve modelleme dili verileri arka uç çözücüler tarafından kullanılabilecek bir forma dönüştürecektir. Bu form büyük matrisler gerektirecek ve aynı tür hatalarla karşılaşacağınızdan şüpheleniyorum (yeterli belleğe sahip bir makinede çalıştırmadığınız sürece).


Görünüşe göre tüm doğru şeyleri denedim! Başlangıçta CVX ile denedim ve başarısız oldu, bu yüzden IPOPT'a geçtim. Ancak IPOPT da aynı sorunu yaşıyordu. Matris içermeyen bir seçeneğinin olduğunun farkında değildim, bu yüzden çözüp çözemeyeceğimi göreceğim.
Justin Solomon

GAMS / AMPL'in sorunuma yardımcı olup olmayacağından emin değilim. Sorunu çözücünün doğru şeyi yapmasına yardımcı olacak herhangi bir şekilde kodlamaktan mutluluk duyuyorum, ancak perde arkasında söylediğiniz gibi bir Kronecker ürünü almak işe yaramayacak.
Justin Solomon

4

Geoffrey Irving'in bahsettiği SVD'leri karşılayabilir misiniz? Mümkünse, yinelemeli olarak yeniden ağırlıklandırılmış en küçük kareler (IRLS) yaklaşımını düşünürüm . Bu yaklaşım ; burada bir ağırlık matrisidir.

küçültmekΣbenjWbenjJbenj2tabiMJ+BY=X
W

Yinelemeler hepsi matris olarak ile başlar ; bu optimum . Yinelemeler burada sıfıra bölünmeyi önleyen küçük bir sabittir. Yakınsama ölçütlerinden tam olarak emin değilim, ancak belki de yukarıda önerdiğim Wikipedia bağlantısı size referans verebilir.W(0)J(0)

Wbenj(k+1)=|maksimum{Jbenj(k),ε}|-1
ε

Ayrıca, düzgünleştirilmiş birinci dereceden bir yöntem de düşünebilirsiniz. Birlikte yazdığım TFOCS, bunu "düzgünleştirilmiş konik çift" (SCD) çözücüyü kullanarak halledebilir, ancak kullanımı o kadar kolay olmayacaktır.

Matrissiz bir iç nokta yöntemi denemek istiyorsanız, Jacek Gondzio'nun çalışmasını okuyun.

EDIT: hmm, IRLS çözümlerini hesaplamak için SVD kullanamazsınız olabilir. Eğer öyleyse diğer seçeneklerden birine geri düşerim.


1
SVD'yi burada kullanıp kullanamayacağımdan emin değilim, ancak IRLS ne olursa olsun harika bir fikir! Hız bellek kadar endişe verici değil ve utanç verici bir şekilde birkaç ay önce ilgili bir araştırma için IRLS kullandım ve harika çalıştı (daha önce denemediğim için kendimi tekmeliyorum!). IRLS için SVD olmadan bile, tam sisteme ihtiyaç duymayan CG gibi doğrusal bir çözücü kullanarak bunu yapmak mümkün olmalıdır. Aslında, CG, önerdiğiniz gibi ayarlanmadan önce oldukça gevşek kısıtlamalarla durdurulabilir . Ayrıca bir ADMM yaklaşımına bakıyorum, ancak bu konuda daha az deneyime sahibim. Wbenj
Justin Solomon

Evet, ADMM de harika olurdu. Aslında Y'yi tamamen ortadan kaldırmanızı öneren bir bölüm yazdım, ancak daha sonra kare olmadığını gördüm . M
Michael Grant

1
IRLS stratejisini uyguladı - bir araya geldi, ancak sayısal olarak çok iyi sonuç vermiyor çünkü çözmesi gereken doğrusal sistem geniş bir yelpazede 'ler sayesinde kötü koşullandırılmış ; sistemi çözmek için GMRES kullanarak. Sonraki ADMM deneyecek! w
Justin Solomon

2

CVX'i tam olarak yazdığınız biçimde kodlamanıza izin verecek CVX'i kullanmayı deneyebilirsiniz (yani, bir vektör yerine ile bir matris olarak). Muhtemelen bir LP çözücü yerine daha genel bir dışbükey çözücü kullanılarak çözülür, ancak dışbükey çözücü başarılı olursa, o zaman umursamazsınız.X

Başka bir olasılık: kısıt matrislerinizin seyrek matrisler olarak saklanmasını sağlayan bir çözücü kullanın. Bu yine de ihtiyacınız olandan çok daha fazla bellek gerektirir, ancak bunları yoğun matrisler olarak sakladığınızdan çok daha azdır. CVX'de, eğer kullanırsanız kronseyrek bir matris alırsınız, bu yüzden bunu denemek önemsiz olacaktır.


Python herhangi bir nedenle MATLAB'dan daha uygun olursa, cvxpy kadar cilalı olmasa da cvxpy da vardır .
k20

Şüphem, bu yaklaşımın yüzeysel olarak işe yarayacağı ve daha sonra CVX modelleme dili, giriş verilerini arka uç çözücüleri tarafından kullanılabilen bir forma dönüştürdükten sonra başarısız olacağıdır (doğrusal programları, ikinci dereceli programları, ikinci dereceden koni programlarını, yarı taraftaki programları ve geometrik programlar). Neden cevabımda açıklıyorum. Gurobi arka ucu, türünün en iyisi LP çözücüsüdür, bu nedenle CVX'i bu algoritma ile kullanmak, derleme dil API'sinden CVX çağırmaktan ziyade, uygulama açısından yapabileceğiniz en iyisidir.
Geoff Oxberry

1
Geoff'un dediği gibi, burada hiçbir modelleme katmanı size yardımcı olmayacaktır. Ortaya çıkan LP, herhangi bir standart genel çözücü için tekrarlanan verilere sahiptir. Bunu atlatmak için, oracle tabanlı bir çözücü, yani esasen, kalan belirli bir ve / veya bazı değer için döndürmeye dayanan bir çözücü kullanmanız (geliştirmeniz) gerekecektir. uygun kesim yapın ve bunun yerine bu açıklama ile çalışın. MJ+BY-XJ,Y
Johan Löfberg

Evet, Geoff'un bahsettiği problemi tam olarak yaşıyorum. Aslında, ilk tahminim için CVX kullandım. Ayrıca doğrudan Gurobi'yi aramayı denedim, ancak bunu yapmanın tek yolu da aynı unrolling sorununu yapmak.
Justin Solomon

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.