• Sonuç bulunamadı

Doğrusal Programlama Problemlerinin Çözümüne Yönelik Bir Bilgisayar Yazılımı Geliştirilmesi. F. Yılmaz 1, H. Hurma

N/A
N/A
Protected

Academic year: 2022

Share "Doğrusal Programlama Problemlerinin Çözümüne Yönelik Bir Bilgisayar Yazılımı Geliştirilmesi. F. Yılmaz 1, H. Hurma"

Copied!
7
0
0

Yükleniyor.... (view fulltext now)

Tam metin

(1)

Doğrusal Programlama Problemlerinin Çözümüne Yönelik Bir Bilgisayar Yazılımı Geliştirilmesi

F. Yılmaz1, H. Hurma

1 Öğr.Gör. NKÜ, Ziraat Fakültesi, Tarım Ekonomisi Bölümü TEKİRDAĞ E-posta: fuatyilmaz@nku.edu.tr

ÖZET

Doğrusal Programlama, tarımsal işletmelerin planlamasında en yaygın kullanılan yöntemlerden biridir. Simpleks çözüm, doğrusal programlama problemlerini çözmek için, doğrusal cebir yöntemlerini kullanan tekrarlamalı matematiksel bir süreçtir.

Bu yöntem çok sayıda tekrarlanan matematik işlemler gerektirmektedir. Bu nedenle amaç fonksiyonundaki değişkenlerin ve kısıtların sayısı arttıkça çözüme ulaşabilmek için bir bilgisayar yazılımına ihtiyaç duyulmaktadır. Mevcut doğrusal programlama yazılımları yeni çıkan işletim sistemlerine uyum sorunları içermekle birlikte karmaşık bir yapıya sahiptir. Ayrıca yabancı dilde yazılmış olmaları ve Office yazılımlarıyla veri alışverişi yapamamaları nedeniyle pratik kullanımda çeşitli zorluklara sahiptirler. Bu çalışmada doğrusal programlama problemlerini Simpleks yöntemini kullanarak çözen bir bilgisayar yazılımı geliştirilmiştir. Yazılım geliştirme platformu olarak Embarcadero RAD Studio olarak anılan Delphi/Pascal kullanılmıştır. Kullanıcı dostu olması için yazılım arayüzü hesap tablolama programlarına benzer şekilde yapılmıştır. Yazılım a amaç fonksiyonu ve kısıtlayıcılar kümesi tanımlanarak optimum çözüm elde edilebilmektedir. Optimum çözüme ait iterasyonlar, duyarlılık analizi ve son tablo kolaylıkla oluşturulabilmektedir. Ayrıca her aşamadaki veriler çift yönlü olarak Microsoft Excel gibi hesap tablolama yazılımlarına kop yala yapıştır işlemini desteklemektedirler. Amaç fonksiyonu ve kısıtlar üzerinde ekleme, çıkartma ve düzeltme işlemleri pratik bir şekilde yapılabilmektedir.

Anahtar Kelimeler: Doğrusal Programlama, Simpleks, Yazılım

Developing a Software to Solve Linear Programming Problems

ABSTRACT

Linear Programming(LP) method is commonly used method for planning agricultural businesses. Simplex method is an iterative method which by repeated use gives the solution to any n variable LP model. This method needs too many iterations to find the solution. When the number of variables and constraints are too many, a computer software is needed to iterate through the matrices and finding the solution. Currently there are some LP solver softwares for Windows. But they are complicated and have some compatibility issues for new Windows versions. Also they are not in Turkish language and can not exchange data between office softwares. In this study, a software is developed for solving the LP problems using Simplex method. Embarcadero RAD Studio’s programming environment Delphi is used for developing the software. To make it user friendly, the interface is designed as spreadsheet style user forms. After declaring objective function and constraints set, optimum solution can be shown after p ressing solve but ton. Iterations about the optimum solution, sensitivity analysis and final iteration tableau are shown on the solution form. Every grid supports copy/paste operations with Microsoft Excel. The initial matrix page supports adding, editing and removing constraints and variables to help the user thinking only the problem.

Keywords: Linear Programming, Simplex, Software 1. GİRİŞ

Doğrusal programlama tarımsal işletmecilik problemlerinin çözümünde geniş uygulama alanı bulan matematiksel bir yöntemdir. Doğrusal programlama, en kârlı ya da belirli düzeyde kârı garanti eden işletme planlarının saptanması, en düşük maliyetli karma yem rasyonlarının hesaplanması, ürün taşımanın ve işgücünün kullanımının planlanması gibi değişik uygulamalarda ve özellikle tarım işletmelerinin en kârlı üretim planlarının hesaplanmasında başarılı sonuçlar vermektedir. [İnan,2008]

Algoritma, bir problemin çözümünü bulmak için izlenen kurallar dizisi veya hareket tarzıdır. Simpleks algoritması, bir denklem sistemine ilişkin mümkün çözümleri belirleme ve çözümlerin optimum olup olmadığını test etme yöntemidir. Yöntem, optimum çözümü bulana dek her seferinde daha da iyileştirerek, bir mümkün temel çözümden diğerine hareket eder. Simpleks Süreci enbüyükleme ve enküçükleme problemlerinde farklılık göst erir [Miran, 2013].

Simpleks çözüm algoritması, doğrusal programlama problemine ait duyarlılık analizinin de yapılabilmesini mümkün kılar. Duyarlılık analizi, amaç fonksiyonu katsayıları ve kısıtların sağ taraf değerleri için yapılabilir.

Diğer koşullar sabit tutulduğunda amaç fonksiyonunda yer alan herhangi bir katsayının hangi aralığı için optimum çözümdeki değişkenler ve bunlara ait değerlerin değişmeden kalacağı duyarlılık analizi ile belirlenir [Miran, 2011].

Bu çalışmada doğrusal programlama problemlerini Simpleks yöntemini kullanarak çözen bir bilgisayar yazılımı geliştirilmiştir. Yazılım geliştirme platformu olarak Embarcadero RAD Studio olarak anılan Delphi/Pascal kullanılmıştır. Kullanıcı dostu olması için yazılım arayüzü hesap tablolama programlarına benzer şekilde yapılmıştır. Yazılıma amaç fonksiyonu ve kısıtlayıcılar kümesi tanımlanarak optimum çözüm elde edilebilmektedir. Optimum çözüme ait iterasyonlar, duyarlılık analizi ve son tablo kolaylıkla oluşturulabilmektedir. Ayrıca her aşamadaki veriler çift yönlü olarak Microsoft Excel gibi hesap tablolama

(2)

yazılımlarına kopyala yapıştır işlemini desteklemektedirler. Amaç fonksiyonu ve kısıtlar üzerinde ekleme, çıkartma ve düzeltme işlemleri pratik bir şekilde yapılabilmektedir.

2. MATERYAL VE METOD

Bu yazılım, George B. Danzig tarafından geliştirilen Simpleks yöntemini kullanmaktadır. Bu yöntem temel olarak kıt kaynakların birbiriyle rekabet halindeki faaliyetlere en uygun şekilde tahsis edilmesini gerçekleştirir [Miran, 2011].

Yazılımın geliştirme ortamı olarak Embarcadero RAD Studio Delphi kullanılmıştır. Kaynak kodu Pascal dilinde yazılmıştır. Yazılım Ana Ekran (uMain.pas), Simpleks Çözücü (uSimpleksSolve.pas), Çözüm Ekranı (uIterations.pas), Yazdırma (uPrint.pas) olmak üzere 4 ayrı bölümden meydana gelmektedir.

Simpleks çözüm aşamaları;

Adım 1: Modelin eşitsizlik halindeki kısıtlamalarının eşitliğe çevrilmesi (Küçük eşit için boş değişken, eşittir için yapay değişken ve büyükeşit için ise yapay ve kalıntı değişkenler),

Adım 2: m denklem(kısıtlama) ve n bilinmeyenli (karar değişkeni) problem, başlangıç temel çözümünün oluşturulması ve Zj ile Zj-Cj satırlarının hesaplanması

Adım 3: En büyük Negatif Zj-Cj değerinin bulunduğu sütunun pivot sütun olarak belirlenmesi. Eğer negatif değer yoksa optimum çözüme ulaşılmıştır.

Adım 4: Çözüm değerlerinin pivot sütuna bölünmesi ve en küçük pozitif değere sahip satırın pivot satır olarak seçilmesi

Adım 5: Pivot satır ve pivot sütunun kesiştiği noktadaki değerin pivot eleman olarak belirlenmesi Adım 6: Pivot satırının pivot elemana bölünmesi

Adım 7: Diğer satırların ise = eski satır değeri – pivot sütundaki katsayı x pivot satırı değeri formülüyle hesaplanması ve oluşan yeni çözüm matrisi ile tekrar adım 3’e gidiş.

Dual alma süreci ile enbüyükleme enküçüklemeye, karar değişkenleri kısıtlara, kısıtlar karar değişkenlere, kısıt düzeyleri katsayılara, katsayılar kısıt düzeylerine ve küçük eşitler de büyük eşitlere çevrilir. Bu sayede karar vericiye kaynaklardan daha fazla kullanılması durumunda neler olacağıyla ilgili ipuçları verilebilmektedir [Miran, 2011].

2.1. Ana Ekran Bölümü

Ana ekran bölümünde doğrusal programlama matrisinin girişi için bir arayüz bulunmaktadır. Burada matris oluşturma, düzenleme, kaydetme gibi özellikler bulunmaktadır.

Şekil 2.1. Simpleks Çözüm Algoritması

(3)

2.2. Simpleks Çözücü

Simpleks çözücü ayrı bir kaynak kod olarak geliştirilmiştir. Matris değişken oluşturulduktan sonra bu değişken Simpleks çözüm algoritması kullanılarak adımlanmakta ve her adım matrisi, matris dizisi değişkenine kaydedilmektedir.

Bu ünite ana ekran tarafından çağırılmaktadır. Önce ana ekrandaki hesap tablosundaki veriler matris değişkene aktarılarak başlangıç matrisini oluşturulmaktadır. Daha sonra matriste Z Satırı (Fırsat Maliyeti) ve Z-C satırı hesaplanır. Eğer Z-C satırında negatif değer yoksa optimum çözüme ulaşılmıştır ve çözüm matrisi ana programa döndürülür. Yoksa en büyük negatif değere sahip Z-C sütunu seçilir ve pivot sütun olarak belirlenir. Pivot sütunda eğer pozitif sonuç yoksa fonksiyon fizibil sonuç bulamadığını belirterek ana programa döner. Pozitif değer varsa pivot sütun ile R oran sütunu hesaplanır. En küçük R oranı olan satıra pivot sütundaki faaliyet yazılır. Pivot sütun ve satırın kesiştiği hücre pivot sayının bulunduğu hücredir. Diğer satırlar da pivot sayı kullanılarak hesaplanır.

Program tekrar Z ve Z-C satırını hesapladığı noktaya geri döner.( Şekil 2.1 ) 2.3. Çözüm Ekranı

Çözüm ekranı, ana ekran tarafından çağırılmaktadır. Matris çözücüde elde edilen optimum çözüm matris i burada gösterilmektedir. Çözüm ekranı; optimum çözüm, son adım ve duyarlılık analizi olmak üzere 3 Sayfadan Oluşmaktadır.

2.4. Yazdırma Ekranı

Matrisi veya çözümü yazıcıya dökmek, yazıcıyı seçmek, yazıcı ayarlarına girmek için gereken kodlar burada bulunmaktadır. Bu ünitede ayrıca baskı önizleme amacıyla oluşturulmuş bir arayüz bulunmaktadır.

3.PROGRAMIN KULLANIMI 3.1. Veri Girişi

3.1.1. Araç çubuğu

Araç çubuğu, programdaki işlevlerin çağırılması için kullanılmaktadır. Kullanıcının matrisle çalışabilmesi için gerekli kodların çalıştırılması için çeşitli düğmeler bulunmaktadır.

En üstte yer alan hızlı erişim araç çubuğunda sırasıyla geri al, ileri al, tümünü seç, kes, kopyala, yapıştır, yazı boyutu değiştir, yazdır ve bilgi ver düğmeleri bulunmaktadır. Kes kopyala yapıştır işlemleri hem veri giriş ekranında verilerle kolayca çalışabilmek için kullanılabilir, hem de Excel’den veri alış verişinde kullanılabilir.(Şekil 3.1)

Büyük araç çubuğunda ise dosya işlemleri, ayarlar, çözücü, matris düzenleyici ve dönüştürücü düğmeler bulunmaktadır. Yeni matris oluşturulduğunda program otomatik olarak 3 adet faaliyet ve 3 adet kısıt oluşturur.

Burada istenen matris hesap tabloları programlarında olduğu gibi tanımlanabilir.

Bu yazılımla oluşturulan dosyalar .slx uzantısına sahiptir. Daha önceden diske kaydedilmiş bir matrisi açmak gerektiğinde Aç düğmesine tıklanır. Burada diskte bulunan .slx uzantılı dosyalar görüntülenecektir. İstenen dosya seçilerek açılır. Yeni bir dosya açıldığında, ekranda var olan matris eğer kaydedilmediyse silinir.

Farklı Kaydet düğmesi ile dosyanın konumunun ve isminin belirlenebileceği bir pencere açılır. Kaydet’e tıklanarak matris diske kaydedilir Kaydet düğmesi ise dosyayı son kaydedilen isimle diske kaydeder.

Örnek veri düğmesine tıklanarak örnek veri matrisinin görüntülenmesi sağlanır. Burada programı ilk defa kullanacak kişilerin matris hakkında fikir sahibi olması amaçlanmıştır.

Şekil 3.1. Giriş Ekranı

(4)

3.1.2. Program ayarları

Program ayarları ekranında yazılımın işlevleri ile ilgili çeşitli ayarlar yapılabilmektedir. (Şekil 3.2)

- Açılışta Son Dosyayı Yükle: Daha önceden çalışılan en son dosya, program açıldığı anda otomatik olarak yüklenir.

- C-Z modu: Bazı kaynaklarda Z-C değerleri yerine C-Z kullanılmaktadır. Kullanıcı kendi alışkanlığına göre bu seçeneği kullanarak çözüm ekranlarında Z-C satırının gösterim şeklini değiştirebilmektedir.

- Otomatik Çöz: Bu özellik açıldığında program matris girişi sırasında otomatik olarak sürekli çözüm matrisini hesaplar. Bu sayede kullanıcı daha veri girişi veya düzeltmeleri sırasında sonucu anlık olarak görebilir. Otomatik çözme işlemi herhangi bir hücreye veri girilmesi ya da hücredeki değerin değişmesinin ardından çalışmaktadır.

Şekil 3.2. Program Ayarları

- Sonsuz işareti: Çözüm ekranında duyarlılık analizinde sonsuz yazısı veya işaretinden hangisi isteniyorsa onun gösterilmesini sağlamaktadır.

- Otomatik Matris Kontrolü: Çöz düğmesine basıldığında, matriste bulunan boş satır veya sütunların kaldırılması için kullanılmaktadır.

- Virgül yuvarla: Bu seçenek aktifleştirildiğinde, matristeki tüm sayılar yandaki kutudaki biçimde gösterilirler.

Kutuda [,0.##] şeklinde örnek bir gösterim bulunmaktadır. Burada virgül işareti binler ayıracının gösterileceğini, nokta işareti sayıların ondalık olabileceğini ve iki adet # işareti ise ondalık iki basamağa kadar gösterilebileceğini gösterir.

- Sıfır Yerine Boşluk Göster: Bu seçenek işaretlendiğinde tüm tablolardaki sıfır değeri içeren hücreler boş olarak görüntülenir.

- Çözümde maksimum adım sınırı: Programda istendiğinde çok büyük matrisler de çözülebilmektedir. Bazı büyük matrislerin adım sayısı çok fazla olduğunda düşük kapasiteli bilgisayarlarda hata vermesini önlemek için bu seçenek işaretlenebilmektedir.

- Otomatik Güncelleme: Program internet bağlantısı algıladığında internet üzerinden güncelleme kontrolü yapabilmektedir. Bu özellik işaretlendiği takdirde yeni sürüm yayınlandığında yazılım kendi kendini güncelleyecektir.

3.1.3 Veri girişi

Veri girişi ekranında hesap tablosu yazılımlarındaki gibi hücrelerden oluşan bir matris paneli bulunmaktadır.

Panelin sol üst köşesindeki hücrede amaç fonksiyonu olarak maksimizasyon ya da minimizasyon belirlenmelidir.

Birinci ve ikinci satırlarda amaç fonksiyonundaki faaliyetlerin katsayıları ve faaliyetlerin isimleri tanımlanmalıdır.

İlk sütunda kısıtların isimleri, son iki sütunda ise kısıtların işaretleri (eşittir, büyük eşittir veya küçük eşittir) ve kısıt düzeyleri gösterilmektedir.

Görünüm düğmesine tıklanarak veri girişinde tanımlanan matris, diğer doğrusal programlama yazılımları olan Lingo (Şekil 3.3) ve GLPK (Şekil 3.4) yazılımlarının kaynak kodu olarak da gösterilebilmektedir.

Dual Formasyon düğmesine tıklandığında, matrisin duali alınır.

3.1.4 Çözüm ekranı

Veri girişi tamamlandıktan sonra Hızlı Çöz veya Adımla düğmesine tıklanarak matrisin çözümlemes i yapılabilmektedir. Çözüm ekranı eğer matrisin fizibil bir çözümü varsa gösterilmektedir.

Adımla düğmesi tıklandığında, ilk önce simpleks çözüm için hazırlanan başlangıç matrisi görüntülenmektedir.

Bu matriste pivot sütun ve satırlar renklendirilerek gösterilmektedir. Araç çubuğunda; matrisi göster, başa dön, sonraki adım, tüm adımlar ve yazdır düğmeleri bulunmaktadır. Matrisi göster ile problem matrisine geri dönülmektedir. Başa dön ve sonraki adım düğmeleri ile çözüm adımları tek tek görüntülenebilmektedir. Ayrıca

(5)

tüm adımlar düğmesi tıklanarak matristeki tüm adımlar tek seferde alt alta gösterilmektedir. Yazdır düğmesi tıklanarak tablo yazıcıya gönderilebilir.

Hızlı Çöz düğmesi tıklandığında ise problem matrisi anında çözümlenerek optimum çözüm, son adım ve duyarlılık analizi tablolarının görüntülendiği 3 sayfadan oluşan yeni bir pencere ekrana getirilmektedir.

Şekil 3.3. Lingo Model Görünümü

Şekil 3.4. GLPK Model Görünümü 3.1.4.1. Optimum çözüm sayfası

Bu sayfanın sol tarafında plana giren ve girmeyen değişkenler listelenir. Plana giren değişkenlerin miktarları, katsayıları ve çarpımları gösterilmektedir. Sağ tarafta ise tam kullanılan kısıtlar ve tam olarak kullanılmayan kısıtlar ayrı ayrı belirtilmişlerdir (Şekil 3.5).

3.1.4.2. Son adım sayfası

Burada matrisin optimum çözüme ulaştığı son tekrar sayfası görüntülenmektedir. Tabloda sol üstteki hücrede çözüme kaçıncı adımda ulaşıldığı gösterilmektedir (Şekil 3.6). İkinci ve üçüncü satırlarda faaliyetlerin katsayıları ve isimleri yer almaktadır. Normal faaliyetlerin başında nokta işareti, boş kısıtların başında ise # işareti bulunmaktadır.

Birinci ve ikinci sütunlarda plana giren faaliyetler ve artan kısıtlar, katsayılarıyla gösterilmektedir. Üçüncü sütunda ise faaliyetlerden plana giren miktar ve kısıtlardan artan miktarlar gösterilmektedir.

3.1.4.3. Duyarlılık analizi sayfası

Duyarlılık analizi faaliyetler ve kısıtlar için ayrı ayrı yapılmaktadır. Sol tarafta faaliyetlerin duyarlılık analizi bulunmaktadır. Burada ikinci sütunda faaliyetlerin plana ne miktarda girdiği görüntülenmektedir. İkinci sütunda ise plana girmeyen faaliyetlerin bir biriminin plana girmesi durumunda optimum çözümün ne kadar değişeceği gösterilmektedir. Dördüncü sütunda faaliyetlerin katsayıları yer almaktadır. Son iki sütunda ise duyarlılık analizinin geçerli olduğu aralık gösterilmektedir.

(6)

Şekil 3.5. Optimum Çözüm Sayfası

Şekil 3.6. Son Adım Sayfası

Şekil 3.7. Duyarlılık Analizi Sayfası 4. SONUÇ

Mevcut doğrusal programlama yazılımları yeni çıkan işletim sistemlerine uyum sorunları içermekle birlikte karmaşık bir yapıya sahiptir. Ayrıca yabancı dilde yazılmış olmaları ve Office yazılımlarıyla veri alışverişi yapamamaları nedeniyle pratik kullanımda çeşitli zorluklara sahiptirler. Bu durum özellikle doğrusal programlama yazılımlarının çoğunlukla akademisyenler tarafından kullanılmasına neden olmaktadır.

Basit bir kullanım arayüzüne sahip olması ve Türkçe olması nedeniyle kullanıcı dostu bir yazılım olan Simpleks, çok daha geniş bir kullanıcı grubuna hitap etmektedir. Yazılım Türkçe karakter açısından tam uyumludur. Faaliyet ve kısıtları adlandırırken tüm yazı karakterleri, boşluk, işaret vb. kullanılabilir. Sayısal değere

(7)

sahip hücrelerde ise birçok programda sorun çıkartan ondalık ayıracının nokta olması, bin ayıracının virgül olmas ı gibi Türkçe Windows sistemlerinde oluşan uyumsuzluklar sorunsuz olarak Windows’un bölgesel ayarlarındaki değerlere göre çalışmaktadır. Bu sayede yazılım tüm bölgelere ve dillere göre uyumludur. Yazılım, Office yazılımları ile uyumlu olduğundan dolayı matrisler kolay bir şekilde aktarılabilmekte, kullanıcıya zaman kazandırmaktadır.

Tüm Windows sürümleriyle uyumlu olan Simpleks yazılımını eğitimcilerin ve öğrencilerin de kullanabilmes i amaçlanmaktadır. Yazılımla problemlerin sadece çözümü değil, ayrıca çözüm aşamaları da takip edilebilmektedir.

Gerçek zamanlı matris çözebilme özelliği sayesinde eğitimciler hızlı bir şekilde örnek sorular hazırlayabileceklerdir.

5. KAYNAKLAR

İnan,İ.H. 2008. Tarımsal İşletme Yönetimi ve Planlanması, Namık Kemal Üniversitesi Ziraat Fakültesi Tarım Ekonomisi Bölümü,s.37

Miran, B. 2013. Ekonomistler İçin Matematik, Ege Üniversitesi Ziraat Fakültesi, Tarım Ekonomisi Bölümü, Miran, B. 2011. Uygulamalı İşletme Planlaması, S:25,55

Referanslar

Benzer Belgeler

Galsa.!} Çinag, Hatıralar ve Öyküler (Erinnerungen und Erıah/ungen) adlı öyküsünde, "Hatıralar arıyorum" der ve bunları "orası burası

MEB 2017 - 2018 Ölçme, Değerlendirme ve Sınav Hizmetleri Genel Müdürlüğü Ölçme, Değerlendirme.. ve Sınav Hizmetleri

salça üretimi için kullanılan domates miktarlarındaki farklılıklar, satın alınan domates miktarlarına yansıtıldığı için 1 kg/kutu salça üretimi için

Doğrusal bir programlama problemi, doğrusal kısıtlamalara tabi yine doğrusal olan amaç fonksiyonun maksimize edilmesi veya minimize edilmesi problemi

(3) Maksimum problem için, amaç fonksiyonunun en büyük (minimum problem için en küçük) değerine karşılık gelen ve uygunluk bölgesi ile kesişen seviye kümesini belirle. (4)

Yani bu problemde S 2 temel değişkenler grubuna dahil edilse objektif fonksiyonun değeri değişmez fakat bir başka optimum çözüme ulaşılabilir.. Bir sonraki

Makinelerin slack(surplus) değerlerini belirtip ne anlama geldiklerini yazınız.. Birinci ve üçüncü kaynaklar tamamen kullanılmış fakat ikinci kaynakta eldeki mevcut

Track 1: Dastgah Homayoun, Raz-o-niyaz, Radiff of Mirza Abdollah, Played by Hossein Alizadeh.. Track 2: Dastgah Homayoun,Leili-o-majnoun, Radiff of Mirza Abdollah,