Sıkı pozitiflik kısıtlamaları ile doğrusal programlama fizibilite problemi


15

doğrusal sınırlama sistemi vardır Axb. Bu kısıtlamaları karşılayan kesinlikle pozitif bir vektörü bulmak istiyorum x>0. Yani, xi>0 her bir parça için gerekli olan xi arasında x . Böyle bir kesinlikle pozitif vektörünü bulmak için LP çözücüyü nasıl kullanabilirim x(veya x olmadığını doğrulayabilirim )? Başka bir kısıtlama sistemi getiremiyorum xi>0çünkü bir LP'de eşitliğe her zaman izin verilmelidir — ancak LP çözücüsünü değişen objektif işlevlerle birkaç kez kullanabilirim. Sanırım gevşek değişken yöntemini kullanmalıyım, ama nasıl olduğunu bilmiyorum.

Yanıtlar:


15

Küçük bir seçme problemini aşmak için ϵ>0 biraz daha iddialı kalarak: bulmaya çalışın x öyle ki Axb ve en küçük giriş olduğunu x büyük mümkündür.

Bu amaçla, yeni bir değişken tanıtmak

y=[xϵ]Rn+1
(eğer x olduğu Rn ) ve LP-çözücü aşağıdaki problemi çözmek
maxy[00 1]ys.t.[A 0]yband0[10010101011]y.

Bu, aşağıdaki sorunun yeniden yapılandırılmasıdır:

maxϵs.tAxbandxϵ1.


aferin, bu bir yazarın hile ile eşdeğer ve ben sadece son zamanlarda bir makalede kullandım ve kesinlikle önerdiğim yaklaşımdan daha üstün.
Aron Ahmadia

Kabul. İyi oynadın, efendim.
Geoff Oxberry

Yeniden düzenlenmiş sorunun, asıl sorunun cevabının önemsiz olduğu durumlarda sınırsız bir hedefi olabilir. Örneğin, kısıtlamalar sistemi sadece . Yani sürece bağlı açıkça lp çözücü veya iade durumunu uygulanabilir, optimum veya sınırsız kontrol olduğunca ince £ değenni . x1ϵ
David Nehme

@DavidNehme: Sınırlı bir hedef elde etmek için kısıtlaması eklenebilir . yn+11
Arnold Neumaier

5

LP fizibilite problemi için standart simpleks kullanmam. Standart primal (veya ikili) simpleks algoritmaları sadece olası primal (veya dual) problem setinin köşelerini ziyaret edecektir.

Çözmek istediğiniz sorunun olası kümesinin olmasına izin verin ve bunun yerine sorunu çözeceğinizi varsayalım ( F ε ):F={x:Axb,x>0}Fε

minx0s.t.Axbxε1.

Çözmek istediğiniz sorunun en yakın yaklaşımı, biraz fazla puan alan . Sorun şu ki, pozitif orktın sınırı (yani, B = { x : x0 , i : x i = 0 } kümesi, F 0'ın uygulanabilir kümesinin sınırının bir parçasını oluşturabilir . bu noktaları dışlamak gibi. yapmanın bir yolu olduğunu seti için olan Aron önerdi yapmaktır £ değerininF0B={x:x0,i:xi=0}F0εküçük bir pozitif değere getirin ve sonra herhangi bir standart LP algoritmasını kullanın. Bu strateji iyi bir stratejidir ve muhtemelen çok çeşitli durumlarda işe yarayacaktır. Ancak, mümkün değilse başarısız olur . Bunu biliyoruz F 0F F ε herkes için £ değerinin > 0 (karşılık gelen sorundan uygulanabilir kümesini kullanacak kötüye notasyonu ve), ve bunu küçük pozitif değerleri almak bile mümkündür £ değerinin LP çözücü gösterecektir LP'niz mümkün değil.FεF0FFεε>0ε

Bir LP çözücü için, için noktaları hariç tutmanın başka bir yolu olan, uygun bir nokta ile başlayan ve uygulanabilir kalan LP'ler için herhangi bir iç nokta algoritması kullanırdım . Bu algoritmalara uygun bir nokta sağlamanız gerekmez; standart çözücüler sizin için yapacak. Afin ölçekleme, potansiyel azaltma ve bariyer yöntemleri gibi yöntemler, uygun çözümler bulabilecek yardımcı LP'ler oluşturur ve bu algoritmalar için yinelemeler uygulanabilir bölgenin iç kısmından geçer. LP çözücülerinin kullandığı yardımcı problemler probleminiz için uygun bir nokta buldukça ve bu uygulanabilir nokta kesinlikle olumlu olduğu sürece, uygulanabilir bölgenizde sadece bir noktayı bulmanız yeterlidir. Çözme Eğer F £ değenni küçük pozitif değerleri için başarısız £ değerininBFεε, you might still be able to use these methods to locate a strictly positive feasible point within F0.

Yine de simpleks kullanmayın, çünkü sadece F'nin köşelerini keşfedecektirFε, which is exactly what you want to avoid doing.


4

Feasibility problems are a slightly trickier game than general linear problems, which you have noted. If you are solving approximately (by using a floating-point representation of the system of equations and constraints), it is legitimate to require xi>=ϵ, where ϵ is some very small numerical value, big enough to assure that xi actually lives in +, but small enough that a solution on the boundary is not considered.

You might have to adjust ϵ, and your solution will be qualified to "within a factor of ϵ", but this is sufficient for many situations.


2

The answer given by aeismail is to be read carefully, regard the lp

max(x1+x2)

s.t.

x1+x21

x1,x20

It has solutions (1,0) and (0,1) as well as others (degenerated). The generality of the question implys that these cases need to be treated as well.

Since you are able to choose you objective function, you could try to modify it iteratively. E.g. Start with all coefficients for all variables equal to one, check wether you gain an approprate solution. If one variable is zero, rise it's coefficient and start again...

Though I can not give a mathematical prove that this works (or a well defined procedure how to modify the objective function). I hope this helps :)


However, if you have a large number of degenerate solutions, how would you deal with this numerically? Won't pretty much any numerical solver throw up a warning (or worse) about solving this problem?
aeismail

No, they won't; they'll just return the first optimal solution encountered. The way that you would continue to generate solutions is to add cutting planes (or other constraints) that exclude previously calculated optimal solutions. In this case, adding such cutting planes would enable you to return a discrete approximation of the infinite set of optimal solutions.
Geoff Oxberry

I would view that as a strange programming decision; why wouldn't you want to tell the user that the objective function was doing something weird in the neighborhood of the reported solution? For a nonlinear solver, I could see there being an issue with figuring out what's going on; but shouldn't that be easier to tell with a linear system?
aeismail

I'd have to think about how one would detect degeneracy by actually constructing problems, but typically, users want an optimal solution, so the most important information for an LP is to return if the solution is optimal, feasible (but not optimal), infeasible, or unbounded. (These statuses are, in fact, what a solver like CPLEX would return.) Degeneracy is primarily a theoretical issue; the only reason it would be discussed in a numerical context is either in algorithm design or in practice, to note that degeneracy typically slows down a solver.
Geoff Oxberry
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.