CPLEX Optimizasyon Programı – Model Kodu Yazma

Merhabalar, bu yazımda Endüstri Mühendisliği lisans programının temel taşlarından birisi olan Yöneylem Araştırması dersinde öğrenilen Doğrusal Programlama(DP) problemlerinin uygun bir şekilde modellendiğinde CPLEX programında nasıl çözüldüğüne değineceğim.

DP problemleri genel hatlarıyla karar değişkenleri, kısıtlar ve bir amaç fonksiyonundan oluşur. Karar değişkenleri, amaç fonksiyonunun değerini yöneten; kısıt kümelerinin kesişimi ile elde edilen değerleri alan değişkenlerdir. En iyi amaç fonksiyonu değeri veren karar değişkenleri optimal çözüm olarak adlandırılır. DP problemleri çözen programlar optimal veya optimale yakın değerler bulmayı hedefler.

Şimdi aşağıdaki gibi lineer bir problemin CPLEX programında nasıl çözüldüğünü inceleyelim.

  1. Yeni bir OPL projesi açılır.

Dilerseniz yeni projenizi oluştururken “Seçenekler”in altında yer alan model,veri, ayar gibi seçenekleri ekleyebilir ya da projenizi oluşturduktan sonra ekleyebilirsiniz. Bu örnekte modelin kodunu yazabilmemiz için proje dosyasının bir “Yapılanış”a; yapılanış dosyanızın ise bir “model” dosyasına ihtiyacı vardır. Veri dosyası modelimizde kullanılan problemde verilen verilerle bağlantı kurduğumuz ve modelimizde kullanacağımız bölümdür. Ayarlar ise modelin çözüm yöntemi, süresi ve daha birçok ayarı yapabileceğiniz bölümdür.

Yapılanış ve model dosyamızı oluşturduktan sonra kodumuzu yazmaya başlayalım.

  1. Model dosyasında bu problem için karar değişkenleri tanımlanır. Decision variable’ın kısaltması olan “dvar” ile tanımlanır. Karar değişkeninin cinsi ise “float, boolean,integer(int)” kelimelerinden biri ile belirlenir. Unutulmaması gereken şey diğer programlama dillerinde oldu gibi satırın sonuna “;” konulması zorunluluğu.

  1. Amaç fonksiyonu tanımlanır. Eğer probleminiz ençoklama (maximization) ise “maximize” ; enazlama (minimization) ise “minimize” yazılır.

  1. Daha sonra kısıtlar yazılır. “subject to” kalıbı yazılır ve kod kümesi “{….}” köşeli parantezler ile belirtilir. Burada görüldüğü üzere “// “ işaretleri ile yorum açabilir ve kodunuzu etkilemeden yorumlar yazabilirsiniz. Aynı işlev “/*…..*/” ile de görülebilir.

 

  1. OPL Projeleri sekmesi altında ilgili yapılanış çalıştırılır.

  1. “Çözümler” penceresine tıklayarak çözüme ulaşılabilir.

Burada çözülen örnek kompleks bir örnek değildir ve bu örneği bir programa ihtiyaç duymadan da çözebiliriz. Ancak kullandığımız veriler ve karar değişkenleri çoğaldıkça işimiz zorlaşır. Bu yüzden farklı ve hızlı yöntemlere ihtiyaç duyarız. İlerleyen yazılarda nasıl küme tanımlanacağını; excel gibi veri depoladığımız dosyalarla nasıl bağlantı kurulacağını, daha karmaşık bir örnekle sizlerle paylaşacağım. Bir sonraki yazıda görüşmek üzere.