Simpleks Yöntemi uygulaması hakkında en iyi kitap?


14

LP için SM görevini uygulamakla ilgileniyorum, ancak olası tuzakları duydum: Cormen'ın kitabı, saf uygulamanın üstel zamanda davranmasını sağlayacak giriş verilerine sahip olmanın mümkün olduğunu söylüyor. Ayrıca, naif uygulamanın bir tür veri için döngü yapabileceğini duydum.

SM'nin pratik uygulamasının nüanslarını açıklayan bir kitap / kağıt / kaynak var mı?

Şimdiden teşekkürler.


Yanıtlar:


13

CPLEX'in "babası" olan Bixby'nin, sadece (gözden geçirilmiş) simpleks algoritmasının yönlerinin uygulanmasına ilişkin araştırmalar yapmamasını şiddetle tavsiye ediyorum: Robert E. Bixby , Gerçek Dünya Doğrusal Programları Çözme: On Yıl ve Daha Fazla İlerleme , İşlem Araştırma (50) 2002, 3-15 .


12

Simpleks algoritması P. CLRS'de değildir, bu nedenle pratikte "iyi" çalışmasına rağmen, algoritmanın üstel zamanda çalışmasına neden olan bazı girdiler olduğunu belirtir. Bu kesinlikle algoritma ile ilgilidir, uygulanmasıyla değil: algoritmayı tam olarak nasıl uyguladığınızdan bağımsız olarak bununla karşılaşırsınız. Bununla birlikte, LP P'dir. Bu, 1979'da Khachian tarafından kanıtlanmıştır, ancak elipsoid algoritması pratik değildir. Günümüzde iç nokta yöntemleri yaygın olarak kullanılmaktadır. İlki 1984'te Karmarkar tarafından keşfedildi.

Pratik uygulamalarla ilgileniyorsanız, şunlara göz atın:

Akademik kullanım için ücretsiz olan GUROBI şu anda mevcut olan en iyi optimize edicidir (hem sıralı hem de paylaşılan bellek paralel sürümleri):

http://www.gurobi.com

GLPK kütüphanesi:

http://www.gnu.org/software/glpk/

bu açık kaynak kodlu bir projedir ve aşağıdakiler için uygulamalar sağlar:

  • primal ve çift simpleks yöntemleri
  • primal-dual iç nokta yöntemi
  • dal kesme yöntemi
  • MathProg için çevirmen
  • uygulama programı arayüzü (API)
  • bağımsız LP / MIP çözücü

12
Aslında. Egzersizin bütün noktası bu değilse, tek taraflı simpleks uygulamaya çalışmamanızı şiddetle tavsiye ederim. Sadece kullanmak istiyorsanız, raf dışı yöntemler çok daha iyidir. Ayrıca, CPLEX sizin için uygunsa akademik kullanım için ücretsizdir.
Suresh Venkat

1
LP'nin dağıtılmış (MPI gibi) açık kaynak uygulamaları var mı?
Tomek Tarczynski

3
@Tomek LP, P-complete'tır ve etkili bir paralelleştirme olasılığı düşüktür.
Marcus Ritt

@Tomek: Simphony, şu anda PVM mesaj geçirme protokolü tarafından desteklenen herhangi bir ortamda çalışan (MPI henüz desteklenmemektedir) dağıtılmış bir sürüm sağlar. Aynı kaynak kodu, herhangi bir OpenMP uyumlu derleyici kullanılarak paylaşılan bellek mimarileri için de derlenebilir. Bkz. Branchandcut.org ve şiddetle ilgili COIN-OR web sitesi: coin-or.org
Massimo Cafaro 15:11

9
CPLEX muhtemelen şu anda mevcut olan LP'nin en iyi uygulamasıdır (bu yüzden insanlar bunun için çok para öderler), ancak yaygın olarak kullanılan uygulamaların neredeyse tamamı kendiniz programladığınız her şeyden önemli ölçüde daha iyi olacaktır. Buna Matematik, Akçaağaç ve MATLAB paketleri dahildir. Bazı oldukça iyi ücretsiz olanlar (QSopt, biri için, ticari amaçlar için kullanmayı planlamıyorsanız ücretsizdir) dahil olmak üzere birçok uygulama vardır, bu yüzden kendiniz programlamak sadece öğrenme deneyimi için değerlidir.
Peter Shor

9

Vanderbei'nin Doğrusal Programlama kitabı , düşük düzeyli ayrıntıların çoğundan geçer ... Ancak diğer cevaplar / yorumların önerdiği gibi, LP çözücüsünü uygulamak zor ve nankör bir iştir. Raf çözücüden çıkmanın yolu muhtemelen ... (Bazı açık kaynaklı LP çözücüler de var ...)


6

Bazen üstel zamanda davranan sadece naif uygulamalar değildir. Aslında, bilinen tüm deterministik ve randomize kuralların süper polinom en kötü durum girdileri olduğunu düşünüyorum. Bu en kötü durum davranışını üreten bilinen girdilerin çoğu yüksek düzeyde yapılandırılmıştır, ilgili bir soru:

Simpleks algoritmalar için patolojik örneklerin yapısı

Bununla birlikte, uygulamada SM iyi çalışır. Bu, hafifçe bozulan girdilerle temelde en kötü durum analizi olan düzeltilmiş analizin sunulmasıyla resmileştirilmiştir . Bu analiz altında, SM çoklu zaman, diğer bir deyişle her girdi için (patolojik olanlar bile) algoritmanın iyi performans göstermesine izin veren hafif bir pertürbasyon vardır. Bu içgörü, çoklu zaman içinde performans gösteren rastgele bir algoritmaya dönüştürülmüştür . Ancak, anladığım kadarıyla, bu algoritmanın 'gerçek' bir tek yönlü algoritma olarak nitelenip nitelenmediği konusunda hala bazı tartışmalar var. Ayrıca, standart paketlerin bu satır boyunca bir şey uygulayıp uygulamadığı konusunda farkında değilim, ancak sonuç 5+ yaşında olduğu için etrafta arama yaparsanız bazı uygulamalar bulabilmeniz gerekir.


1

Luenberger, Ye, Doğrusal ve Doğrusal Olmayan Programlama, 3. baskı. Bu oldukça kapsamlı görünüyor, ancak henüz sorunuza tamamen cevap verip vermediğini söyleyecek kadar yapmadım.

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.