CPLEX Optimizasyon Eğitimleri – Karmaşık Modeller İçi Range Tanımlama

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 karmaşık ve büyük kümelere sahip modeller için CPLEX programında nasıl range tanımlandığına değineceğim.

Önceki yazıda bahsedilen bir yapılanış ve model dosyasının bir yapılanışa seçilmesi oluşturacağımız tüm modeller için gereklidir.

  1. Karar değişkenleriniz (decision variable) bu şekilde çok sayıda ise indisi için bir küme tanımlamanız modelinizi sade bir hal almasını sağlayacaktır.  Mod dosyamızda i indisi için kümeyi “range” yazarak bu şekilde tanımlayabiliriz. Aralığı tanımlarken sayılar arasında “..” yani 2 nokta kullanıldığı hususunda dikkatli olun.Kümemizi aşağıda görüldüğü gibi parantez içinde de tanımlayabiliriz. Kümeyi ayrıca tanımlamak kümenizde herhangi bir değişiklik olacağı zaman daha pratik olacaktır.Eğer parantez içinde tanımlamak ama aynı zamanda değişiklik açısından modelinizin esnek olmasını istiyorsanız aşağıdaki gibi bir değişken tanımlayıp pratik hale getirebilirsiniz.

    Aynı esnekliği kümenizi dışarda tanımladığınızda da yapabilirsiniz.

    İki indisli bir karar değişkeni için aynı örneği tekrarlayalım.Tek indisli örnekte gösterildiği gibi parantez içinde de aynı şekilde tanımlayabilirsiniz ya da bir değişken tanımlayıp aralık sınırını esnek hale getirebilirsiniz.Karar değişkeniniz indis sayısı değişse dahi aralık tanımınız bu formatlardan biri şeklinde olmalıdır.

  2. Birden fazla indise sahip toplamı kapalı şekilde yazdığımız aşağıdaki gibi bir formata sahip bir kısıtı (constraint) CPLEX’te nasıl tanımladığımızı inceleyelim. Aynı format amaç fonksiyonu (objective function) için de geçerlidir.Kümeyi parantez içinde tanımlamak isterseniz aşağıdaki gibi olacaktır. Kısıtları yazarken unutulmaması gereken en önemli konulardan birisi, kısıtları “subject to” parantezi içinde yazmalıyız.Eğer kümeyi tanımlarsak,Aşağıda görüldüğü üzere birden fazla “sum” yazmanıza ihtiyaç yok.Bu yazımda kısaca CPLEX’te nasıl range tanımlandığını ve bunu karar değişkenlerinde, amaç fonksiyonunda ve kısıtlarda nasıl kullanıldığına değinmeye çalıştım. Bir sonraki yazımda diğer matematiksel fonksiyonların ve farklı kümeleri kısıtlarda CPLEX’te nasıl tanımlandığına değineceğim. Bir sonraki yazıda görüşmek üzere.