Merhaba, bu hafta Gams yazı dizisi için yeni bir yazı eklemek istedim. Bu haftalık Minitab’a ara veriyoruz.

Tesis düzenleme modellerinden biri olan çizgi üzerinde tesis düzenleme modeli için iki durum söz konusudur. Bunlardan biri tesisler arasında boşluk bırakılmasının zorunlu olduğu durumlar, diğeri ise boşluk bırakılmasının zorunlu olmadığı durumlardır.

Çizgi üzerinde tesis düzenleme modeli için bazı varsayımlarımız bulunmaktadır. Bu varsayımlar; tesislerin kurulacağı alanın biliniyor olması, tesisler arası taşınacak ürün miktarının biliniyor olması, birim maliyetinin biliniyor olması ve en önemli varsayımlardan biri olan tesislerin sonsuz uzunlukta bir çizgi üzerinde yerleştiriliyor olarak düşünülmesidir. Tesisler arasında yapılacak olan taşımanın ise tesislerin orta noktalarından yapılacağını kabul ediyoruz.

Şimdi bunun ile ilgili bir örneği inceleyelim. Öncelikle örneğin matematiksel modelini inceleyelim, daha sonra GAMS’de modelleyerek çözelim.

Beş adet tesisin yerleştirilmesini çizgi üzerinde tesis düzenleme yönetimi ile yapalım. Tablo-1’de tesislere ait uzunluklar verilmiştir.

Tablo-1

Tablo-2’de ise tesisler arasında taşınan ürün miktarları gösterilmektedir.

Tablo-3’de tesisler arasında olması gereken minimum uzaklıklar gösterilmektedir. Ayrıca birim taşıma maliyeti 1 TL olarak kabul edilmiştir. Bu durumda maliyetleri en az olacak şekilde tesislerin yerleşimini yapalım.

Problemin Matematiksel Modeli

Li=i. tesisin uzunluğu olsun

M= Büyük bir sayıyı temsil etsin

dij= İki tesis arasında olması gereken minimum uzaklık olsun.

Öncelikle problemimizin karar değişkenlerini yazalım:

Xi=i. tesisin orta noktasının çizgi üzerinde yerleşeceği nokta

Zij= 0 ya da 1

Amaç fonksiyonunu yazalım. Amacımız maliyet minimizasyonu bu yüzden;

Kısıtlar:

Kısıt-1                         Xi-Xj+M*Zij ≥ 0,5(Li+Lj)+dij  (i tesisi j tesisinin sol tarafında olsun)  Ɐi,j  i≠j

Kısıt-2                         Xj-Xi+M*(1-Zij) ≥ 0,5(Lj+Li)+dij  (i tesisi j tesisinin sağ tarafında olsun)  Ɐi,j  i≠j

Yukarıda yazdığımız kısıtlardan her zaman bir tanesi çalışır. Yani ya i, j’nin solundadır ya da sağında. Bu durumu kontrol etmemizi sağlayan ise Z değişkenidir. Örneğin Zij’nin sıfır olduğu durumda birinci kısıttaki M*Zij 0 değerini alır ve kısıtımız Xi-Xj ≥ 0,5(Li+Lj)+dij şeklinde kalır. Yani devreye girer. İkinci kısıt ise Xj-Xi+M*1≥ 0,5(Lj+Li)+dij şeklinde kalır. Ayrıca M’yi büyük bir sayı olarak tanımlamıştık. Yani bu denklemde her zaman sağlanır, baskın bir kısıt olmaz ve problemin çözümünü etkilemez. Zij 1 değerini alırsa tam tersi durum söz konusu olur.

Kısıt-3                        Xj-Xi = Xij++ Xij    Ɐi,j  i≠j

Kısıt-4                        Xj ≥ 0,5Li  (Tesisin yerleşeceği nokta tesisin uzunluğunun yarısından uzun olmalı) Ɐi

Problemin GAMS’de Modellenmesi

Öncelikle indislerimizi “Sets” komutu ile tanımlarız. Daha sonrasında i ile beraber j de kullandığımız için ve aslında bunlar aynı şeyi temsil ettiği için “alias” komutu ile bunu belirtiriz.

Daha sonrasında parametrelerimizi tanımlarız. Problemdeki parametrelerimiz; tesis uzunlukları, tesisler arası birim taşıma maliyeti, tesisler arası akış miktarı ve tesisler arası uzaklıktır.

Tesis uzunluklarını tanımlarken yan yana yazarak tanımladık. Akış miktarı, birim maliyeti ve uzaklıkları tanımlarken parametrelerimizi “table” olarak girdik. İki tesis arasında taşınan ürün miktarlarını, iki tesis arasındaki taşıma maliyetleri gibi parametreleri girerken “table” komutunu kullanırız.

Daha sonra “scalar” ile M sayısını tanımlarız. Problemi modellerken M sayısının büyük bir sayıyı temsil ettiğini belirtmiştim. Bu yüzden M sayısını büyük bir değer olarak tanımladım. Ayrıca bu değeri kendinize göre değiştirebilirsiniz. Önemli olan büyük bir sayı olmasıdır.

Amaç fonksiyonunda kullanmış olduğumuz Xij+ , Xij değişkenlerini de “positive variable” olarak tanımlıyorum. Xp(i,j) ile Xij+ ‘i , Xn(i,j) ile Xij‘i tanımlıyorum. Daha sonrasında Z değişkenimi “binary variable” olarak tanımlıyorum. Son olarak “free variable” ile amaç fonksiyonunu tanımlıyorum. Burada harf yazmak yerine görselde görüldüğü gibi “Maliyet” yazarak da değişken tanımlayabiliyoruz.

Şimdi amaç fonksiyonumuzu ve kısıtlarımızı tanımlayalım.

Amaç fonksiyonumuzun matematiksel modelini yazarken i ve j’nin eşit olmaması şartını belirtmiştik. Gams’de şart tanımlarken $ işaretini kullanıyoruz. İkinci Sum’ı yazdıktan sonra şart işaretini koyup şartımızı yazdık. Şartımız i’nin j ile eşit olmamasıydı. Bunu ord(i) ne ord(j) yazarak tanımladık. Aradaki “ne” ifadesi not equal anlamına geliyor yani i ve j eşit değil demiş oluyoruz. Aynı şekilde ilk üç kısıtımızın matematiksel modelini yazarken i ve j’nin eşit olmaması gerekiyordu. Bu durumu kisit2(i,j)$ (ord(i) ne ord(j)) ifadesi ile tanımladık. Bu, kisit 2 her i ve j için geçerli ama  i ve j’nin eşit olmadığı anlamına geliyor.

Son olarak modelimizi çözdürmek için modelimizin adını yazıyoruz. Daha sonra çözüm yöntemini yazıyoruz ve problemimizi çözdürüyoruz.

GAMS Çıktısı

Display kısmından x değişkenini seçiyoruz.

Buradan x değerlerini görebiliyoruz. X değişkenimiz tesislerin orta noktalarını temsil ediyordu. Sonuçlara baktığımızda, i3’ün 15 değerini aldığını görüyoruz. İ3 3. tesisimizi temsil ediyordu ve 3. temsilimizin uzunluğu 30 (x, tesisin orta noktasını temsil ediyordu). Bu durumda ilk sıraya 3. tesisimizin yerleştiğini görmüş oluyoruz. 15’ten sonraki en küçük sayı 55 yani 4. tesis. Bu durumda ikinci sıraya da 4. tesis yerleşmiş oluyor. Tüm tesislerimizi yerleştirdiğimizde ise aşağıdaki gibi oluyor.

Kaynakça

Görüntülenme Sayısı:
60 görüntülenmeler