İf-koşulları için LP formülasyonu


10

Aşağıdaki LP var:

/* Amaç fonksiyonu */
min: 1 w + 2 x + 0,5 y + z;

/ * Değişken sınırlar * /
w + x <= T1;
w + y = U1;
x + z = U2;
T1 = 50;
U1 = 70;
U2 = 25;

Bu durumda U1 + U2> T1 ve optimal çözüm y = 70 ve z = 25'tir. Y ve z'ye değer atamadan önce w ve x değişkenlerine değer atanması koşulunu uygulamak istiyorum. U1 + U2 <T1 ise, o zaman sadece w ve x değerlerine ve y = z = 0'a sahip olmak istiyorum. Bir LP veya MILP'de böyle bir kısıtlamanın uygulanmasının bir yolu var mı?


neden downvote emin değilim: bu LPs de olsa makul, dar bir soru
Suresh Venkat

Yanıtlar:


11

İşte iki sorunuzun yanıtları. Ayrıntılar hangi çözücüyü kullandığınıza bağlı olacaktır:

  • Sağlanması bu ve daha önce değerleri atanır ve , genellikle çözücü tarafından kullanılan değişken sipariş ifade program aracılığıyla yapılabilir. Yani çözücünün ilk olarak hangi değerleri bulmaya çalıştığını belirtmek. Bu, örneğin, mümkün brisame diğer çözücüleri de bu imkanı size eminim olsa (bir kısıt memnuniyeti sorunu LP veya MILP için (CSP) çözücü olmayan bir olan) çözücü.x y zwxyz

  • GNU Doğrusal Programlama Kiti aslında bir sahiptir if-then-elseconditionals ifade etmek için yapısını. Kılavuzda "koşullu" ifadesini arayın . Eğer böyle bir açıklamada ilgilenen edilir maddelerini tamamlayabileceğini: if U1 + U2 < T2 then y = 0 and z = 0 else true. (Bunu gerçekten denemediğimi unutmayın, bu yüzden sözdizimi yanlış olabilir.)

  • İkinci soruya alternatif bir cevap, , ve sabit olduğu gerçeğinden yararlanır . Basitçe, biri ve diğeri olduğunda olmak üzere iki LP sorunun varyantına sahip olun .U 2 T 1 U 1 + U 2 < T 1 U 1 + U 2 T 1U1U2T1U1+U2<T1U1+U2T1


Seçenekler için teşekkürler. Şimdilik 3. seçenekle gideceğim.
Bala
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.