Doğrusal Programlama
Doğrusal Programlama gerçek dünyada karşılaşılan problemlerin sayısal yöntemler ile çözülebilen mathematiksel modellemesidir. Bu yöntemde karar değişkenleri bulunacak amaç/hedef fonksiyonunu oluştururlar. En iyi çözüm amaç fonksiyonunun çözümüdür. Kısıtlar ise sistemin fiziki sınırlarıdır. Doğrusal programlamanın ana varsayımları:
- Tek bir amaç vardır; en küçükleme (minimizasyon) veya en büyükleme (maksimizasyon)
- Tüm değişkenler süreklidir
- Amaç ve kısıtlar doğrusaldır
- Tüm kara değişkenleri pozitiftir (negatif olma durumu gerçek dünyada olmayacağı için).
Doğrusal programlama problemlerin çözümü için muhtelif yöntemler vardır; Simpleks, Criss-cross, Ellipsoid, Protective, vb. Bunlardan Simpleks yaygın kullanılan bir algoritmadır. Simpleks her bir adımda amaç fonksiyonu değerini daha iyileştiren ötelemeli yaklaşım özelliğindedir.
Simpleks (Standard) (Bkz. Örnek - 1)
İki Aşamalı Simpleks
Eğer tüm kısıtlar <= formundaysa, problem tek aşamada yukarıda ana hatları verildiği şekilde çözülür. Eğer kısıtlardan bir tanesi bile “>=” veya “=” formunda ise, İki Aşamalı Simpleks kuralları uygulanır. Birinci aşamada ana problemden bir yardımcı problem oluşturularak simpleks ile çözülür ve optimal çözüm olup olmadığı araştırılır. Eğer fizibıl olduğu görülür ve optimal çözüm bulunabilirse orijinal problemin amaç fonksiyonu işlemlere dahil edilerek ikinci aşamaya geçilerek simpleks işlemleri ile en iyi çözüm bulunur.
Revize Simpleks (Bkz. Örnek - 2)
Revize Simpleks Standard Simpleks yönteminin farklı bir uygulamasıdır. Büyük problemlerin (çok kara değişkenli ve çok sayıda kısıtlı) standard Simpleks sırasında ortaya çıkan büyük matrislerin bilgisayar uygulamalarında büyük bellek gerektirmesine çözüm olarak kullanılmaktadır. Revzide Simpleks çözüm sırasında Standard Simpleks adımlarını takip eder ama başlangıç matrisi Birim Matris dir.
Tek aşamalı ve İki Aşamalı Revize Simpleks, tek aşamalı ve İki Aşamalı Revize Simpleks ile aynıdır.
Dual Problem
Bir Doğrusal Programlama problemi Primal problem olarak adlandırılır. Bu problem kendisinin dual’i bulunarak primal problemin en iyi çözümünün üst sınırını verir. Bu işlemin gerçekleştirilebilmesi için amaç fonksiyonu karar değişkenleri sayısı ve kısıt sayısı birbiri ile aynı olmalıdır.
Bir problemin Dual’ini bulmanın ana adımları:
- Kısıt katsayı matrisinin devriği (transpozesi) alınır (STD harç olarak)
- “>=” işaretleri “<=” haline ve “<=” işaretleri “>=” haline çevrilir
- Amaç fonksiyonu katsayıları ve kısıt STD değerleri birbirleri ile değiştirilir.
Bu aşamadan sonra problem tek aşamalı veya iki aşamalı Simpleks veya Revize Simpleks yöntemleri ile çözülebilir.
Yöntemlerin SimpleLPsolver’da Uygulaması
Simpleks Çözücü (Bkz. Örnek - 1)
En büyükleme problemleri için Simpleks yöntemi kullanılmaktadır. Bu nedenle en küçükleme problemleri önce en büyükleme problemi haline çevrilir. Çözüm için aşağıdaki adımlar takip edilmektedir;
- Amaç fonksiyonu karar değişkenleri katsayılarının hepsinin sıfır olup olmadığı kontrol edilir.
- Kısıtlardaki değişkenlerin tüm katsayılarının sıfır olup olmadığı kontrol edilir.
- Birbirinin aynısı kısıt olup olmadığı kontrol edilir, varsa elimine edilir.
- Eksi işaretli (negatif) STD kontrol edilir, varsa düzeltilir.
- Eğer tüm kısıtlar “<=” ise Tek Aşamalı yöntem ile devam edilir, yoksa İki Aşamalı yönteme geçilir.
- Tek Aşamalı Simpleks yöntem;
- Tüm kısıtlara gevşek değişkenler (s) eklenerek eşitlik (=) haline getirilir.
- Aşağıda gösterildiği şekilde Başlangıç Simpleks tablosu oluşturulur;
|
|
x1
|
x2
|
...
|
e1
|
e2
|
...
|
s1
|
s2
|
...
|
Z
|
0
|
|
|
|
|
|
|
|
|
|
Kısıt.1
|
STD 1
|
|
|
|
|
|
|
|
|
|
Kısıt.2
|
STD 2
|
|
|
|
|
|
|
|
|
|
Kısıtt.3
|
STD 3
|
|
|
|
|
|
|
|
|
|
...
|
...
|
|
|
|
|
|
|
|
|
|
|
- Problem en büyükleme kriterlerine göre çözülür.
- İki Aşamalı Simpleks yöntemi;
- Gevşek değişkenler (s), yapay değişkenler (a) ve ekstra değişkenler (e) eklenerek tüm kısıtlar eşitlik (=) haline getirilir.
- Aşağıda gösterildiği şekilde Başlangıç İki Aşamalı Sİmpleks tablosu oluşturulur;
|
W
|
x1
|
x2
|
...
|
e1
|
e2
|
...
|
s1
|
s2
|
...
|
a1
|
a2
|
...
|
w
|
0
|
|
|
|
|
|
|
|
|
|
|
|
|
Z
|
1
|
|
|
|
|
|
|
|
|
|
|
|
|
Kısıt.1
|
STD 1
|
|
|
|
|
|
|
|
|
|
|
|
|
Kısıt.2
|
STD 2
|
|
|
|
|
|
|
|
|
|
|
|
|
Kısıt.3
|
STD 3
|
|
|
|
|
|
|
|
|
|
|
|
|
...
|
...
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- Temel En İyi çözüm için w satırının başlangıç değerleri hesaplanır. Aslında bu aşamada Z satırı gerekmemesine rağmen ikinci aşamada orijinal amaç fonksiyonu kullanıma uygun hale gelmiş olacağı için işlemlere dahil edilmesi yararlı olacaktır..
- Problem İlk Aşama için en büyükleme kriterlerine göre çözülür.
- Eğer ilk aşama sonunda en iyi değer bulunursa w satırı ve yapay değişkenler tablodan çıkartılır.
- Problemin çözümüne İkinci Aşama olarak en büyükleme kriterlerine göre devam edilir.
Revize Simpleks Çözücü (Bkz. Örnek - 2)
En küçükleme problemleri için Revize Simpleks yöntemi kullanılmaktadır. Bu nedenle en büyükleme problemleri önce en küçükleme problemi haline çevrilir. Çözüm için aşağıdaki adımlar takip edilmektedir;
- Amaç fonksiyonu karar değişkenleri katsayılarının hepsinin sıfır olup olmadığı kontrol edilir.
- Kısıtlardaki değişkenlerin tüm katsayılarının sıfır olup olmadığı kontrol edilir.
- Birbirinin aynısı kısıt olup olmadığı kontrol edilir, varsa elimine edilir.
- Eksi işaretli (negatif) STD kontrol edilir, varsa düzeltilir.
- Eğer tüm kısıtlar “<=” ise Tek Aşamalı yöntem ile devam edilir, yoksa İki Aşamalı yönteme geçilir.
- (Tek Aşamalı) Simpleks yöntemi;
- Tüm kısıtlara gevşek değişkenler (s) eklenerek eşitlik (=) haline getirilir.
- Aşağıda gösterildiği şekilde Başlangıç Revize Simpleks tablosu oluşturulur;
|
|
x1
|
x2
|
x3
|
...
|
Z
|
0
|
|
|
|
|
Kısıt.1
|
STD 1
|
|
|
|
|
Kısıt.2
|
STD 2
|
|
|
|
|
Kısıt.3
|
STD 3
|
|
|
|
|
...
|
...
|
|
|
|
|
|
- Aşağıda gösterildiği şekilde yapay değişkenler ile Baz matrisin tersi (B-1 ) oluşturulur. Başlangıçta bu Birim Matris olacaktır;
|
z
|
s1
|
s2
|
s3
|
...
|
z
|
1
|
|
|
|
|
s1
|
|
1
|
|
|
|
s2
|
|
|
1
|
|
|
s3
|
|
|
|
1
|
|
...
|
|
|
|
|
1
|
|
- Problem en küçükleme kriterlerine göre çözülür.
- ● İki Aşamalı Revize Simpleks yöntemi;
- Gevşek değişkenler (s), yapay değişkenler (a) ve ekstra değişkenler (e) eklenerek tüm kısıtlar eşitlik (=) haline getirilir.
- Aşağıda gösterildiği şekilde Başlangıç İki Aşamalı Revize Simpleks tablosu oluşturulur;
|
W
|
x1
|
x2
|
x3
|
...
|
e1
|
e2
|
...
|
W
|
0
|
|
|
|
|
|
|
|
Z
|
1
|
|
|
|
|
|
|
|
Kısıt.1
|
STD 1
|
|
|
|
|
|
|
|
Kısıt.2
|
STD 2
|
|
|
|
|
|
|
|
Kısıt.3
|
STD 3
|
|
|
|
|
|
|
|
...
|
...
|
|
|
|
|
|
|
|
|
- Aşağıda gösterildiği şekilde yapay değişkenler ile Baz matrisin tersi (B-1 ) oluşturulur. Başlangıçta bu Birim Matris olacaktır;
|
w
|
z
|
s1
|
s2
|
s3
|
...
|
a1
|
a2
|
a3
|
...
|
W
|
1
|
|
|
|
|
|
|
|
|
|
Z
|
|
1
|
|
|
|
|
|
|
|
|
s1
|
|
|
1
|
|
|
|
|
|
|
|
s2
|
|
|
|
1
|
|
|
|
|
|
|
s3
|
|
|
|
|
1
|
|
|
|
|
|
...
|
|
|
|
|
|
1
|
|
|
|
|
a1
|
|
|
|
|
|
|
1
|
|
|
|
a2
|
|
|
|
|
|
|
|
1
|
|
|
a3
|
|
|
|
|
|
|
|
|
1
|
|
...
|
|
|
|
|
|
|
|
|
|
1
|
|
- Temel En İyi çözüm için w satırının başlangıç değerleri hesaplanır. Aslında bu aşamada Z satırı gerekmemesine rağmen ikinci aşamada orijinal amaç fonksiyonu kullanıma uygun hale gelmiş olacağı için işlemlere dahil edilmesi yararlı olacaktır.
- Problem İlk Aşama için en küçükleme kriterlerine göre çözülür.
- Eğer ilk aşama sonunda en iyi değer bulunursa w satırı ve yapay değişkenler tablodan çıkartılır.
- Problemin çözümüne İkinci Aşama olarak en büyükleme kriterlerine göre devam edilir.
Dual Simpleks Çözücü
Kısıt katsayı matrisinin (STD hariç tutularak) devriği alınır, “>=” işaretleri “<=” haline ve “<=” işaretleri “>=” haline çevrilir ve amaç fonksiyonu katsayıları ve kısıt STD değerleri birbirleri ile değiştirilir. Bunların neticesinde problemin Dual’i bulunur.
Sonrasında Dual problem tek aşamalı veya iki aşamalı Simpleks yöntemi ile çözülür.
Dual Revize Simpleks Çözümü
Kısıt katsayı matrisinin (STD hariç tutularak) devriği alınır, “>=” işaretleri “<=” haline ve “<=” işaretleri “>=” haline çevrilir ve amaç fonksiyonu katsayıları ve kısıt STD değerleri birbirleri ile değiştirilir. Bunların neticesinde problemin Dual’i bulunur.
Sonrasında Dual problem tek aşamalı veya iki aşamalı Revize Simpleks yöntemi ile çözülür.
|