ENDÜSTRİ MÜHENDİSLİĞİ BÖLÜMÜ YÖNEYLEM ARAŞTIRMASI DERSİ. GAMS REHBERİ (Kısaltılmış)

Benzer belgeler
GAMS Kullanım Notları

EM302 Yöneylem Araştırması 2. Dr. Özgür Kabak

EMM3208 Optimizasyon Teknikleri

ENDÜSTRİ MÜHENDİSLİĞİ BÖLÜMÜ YÖNEYLEM ARAŞTIRMASI DERSİ LINDO

EMM3208 Optimizasyon Teknikleri

GAMS Kurulumu ve Temel Özellikleri GAMS ile Modellemeye Giriş, Örnek Problemler

VERİ TABANI YÖNETİM SİSTEMLERİ I

FORMÜLLER VE FONKSİYONLAR

YAPILAR BİRLİKLER SAYMA SABİTLERİ/KÜMELERİ. 3. Hafta

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Diziler İndisli Değişkenler

Özyineleme (Recursion)

Ders Tanıtım Sunumu. Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı. Öğr. Gör. Murat KEÇECİOĞLU 1

1. VERİ TABANI KAVRAMLARI VE VERİ TABANI OLUŞTUMA

PROGRAMLAMAYA GİRİŞ DERS 2

4- Turbo Pascal Bilgisayar Programlamada Kullanılan Şart Yapıları

k ise bir gerçek sayı olsun. Buna göre aşağıdaki işlemler Matlab da yapılabilir.

11TA Veritabanı Organizasyonu Dersi MS ACCESS Ders Notları

Internet Programming II

Yöneylem Araştırması II

Pointer Kavramı. Veri Yapıları

ULAŞTIRMA MODELİ VE ÇEŞİTLİ ULAŞTIRMA MODELLERİ

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Bilgisayar Programlama MATLAB

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

ALGORİTMA VE PROGRAMLAMA I

KISITLI OPTİMİZASYON

Göstericiler (Pointers)

HSancak Nesne Tabanlı Programlama I Ders Notları

Fonksiyonlar (Altprogram)

INPUTBOX KULLANIMI. Komut Düğmesine uygulanan algoritma örneği

EMM3208 Optimizasyon Teknikleri

C Programlama Dilininin Basit Yapıları

Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı

BİL-142 Bilgisayar Programlama II

ALGORİTMA VE PROGRAMLAMA I

Veritabanı Tasarımı. NOT NULL ve UNIQUE Kısıtlamaları Tanımlama

Programlama Dilleri. C Dili. Programlama Dilleri-ders02/ 1

EMM3208 Optimizasyon Teknikleri

ULAŞTIRMA MODELİ VE ÇEŞİTLİ ULAŞTIRMA MODELLERİ

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Değişkenler. Geçerli değişken isimleri : baslamazamani, ad_soyad, x5 Geçersiz değişken isimleri : 3x, while

Nesne Yönelimli Programlama

ELN1001 BİLGİSAYAR PROGRAMLAMA I

MATLAB a GİRİŞ. Doç. Dr. Mehmet İTİK. Karadeniz Teknik Üniversitesi Makine Mühendisliği Bölümü

İnternet Programcılığı Öğr. Gör. Serkan AKSU PHP de Dizi-Değişkenler, Nesneler. Dizi Oluşturma. Tek Boyutlu Diziler

BİLGİSAYAR UYGULAMALARI Şırnak Üniversitesi Mühendislik Fakültesi Güz Dönemi Arş.Gör. Eren DEMİR ve Arş.Gör. Veysel KIŞ (

VERİ TABANI I. Yrd.Doç.Dr. İlker ÜNAL. Teknik Bilimler Meslek Yüksekokulu

Veritabanı. SQL (Structured Query Language)

doğrusal programlama DOĞRUSAL PROGRAMLAMA (GENEL)

Sınav tarihi : Süre : 60 dak. a) ABCDE b) BCDE c) ABCD d) kod hatalı e) BCD

BİLGİSAYAR PROGRAMLAMA DERSİ

Excel Nedir? Microsoft Excell. Excel de Çalışma sayfası-tablo

Temel Bilgisayar Programlama Final Sınavı Çalışma Notları

BÖLÜM 3: AKIŞ DİYAGRAMLARI

Yrd. Doç. Dr. Caner ÖZCAN

Veri Yapıları Laboratuvarı

ÜNİTE NESNE TABANLI PROGRAMLAMA I. Uzm. Orhan ÇELİKER VERİTABANI SORGULARI İÇİNDEKİLER HEDEFLER

Görsel Programlama DERS 03. Görsel Programlama - Ders03/ 1

İnternet Programcılığı Dersi 2.Dönem Ders Notu

BİLGİSAYAR PROGRAMLAMA MATLAB

ALGORİTMA VE PROGRAMLAMA I

BİLİŞİM TEKNOLOJİLERİ 6. SINIF DERS NOTLARI 2

ALGORİTMA VE PROGRAMLAMA I

Dinamik Kodlama. [X] [X] Yeni Fonksiyon

NESNE TABANLI PROGRAMLAMA Final Sınavı Cevapları

7- Turbo Pascal Programlamada Alt Programlar (Procedure)

Şekil 2.23: Window menüsü ve elemanları

Visual Basic 6.0. Anadolu Üniversitesi Endüstri Mühendisliği Bölümü. Değişkenler ve Veri tipleri. Ders Notları

ENF102 TEMEL BİLGİSAYAR BİLİMLERİ VE C/ C++ PROGRAMLAMA DİLİ. Gazi Üniversitesi Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü

DESTEK DOKÜMANI KAYIT NUMARALAMA ŞABLONLARI

1. Excel Dönüşümü : 2. Rapor Master Tanımları :

BÖLÜNMÜŞ FARKLAR (DİVİDED DİFFERENCES)

2.3. MATRİSLER Matris Tanımlama

Bir dizinin boyutları sabittir ve kullanılmadan önce belirlenmelidir. Dizi boyutunu belirlemek için başka bir değişkende kullanabilirsiniz.

BÖLÜM 6: KARŞILAŞTIRMALI KONTROL YAPILARI

BTP 207 İNTERNET PROGRAMCILIĞI I. Ders 8

Bu işleçlerin dışında, aşağıda belirtilen karşılaştırma işleçlerinden de yararlanılır.

yöneylem araştırması Nedensellik üzerine diyaloglar I

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-12 Fonksiyonlar. Yrd. Doç. Dr. Ümit ATİLA

KISITLAMALAR (CONSTRAINT)

C Programlama Dilinde Değişkenler

Matlab - Giriş (İleri Yapı Statiği II. Kısım)

VERİTABANI. SQL (Structured Query Language)

MAK 210 SAYISAL ANALİZ

YZM 2105 Nesneye Yönelik Programlama

Bakım Yönetimi Logo Nisan 2016

2 PYTHON A GIRIŞ 13 PyCharm İle Python Projesi Oluşturma 15 Projenin Çalıştırılması 18 İlk Python Programımız 19 Açıklama Satırları 21

BASİT C PROGRAMLARI Öğr.Gör.Dr. Mahmut YALÇIN

Yükleme Emrinde bulunan belge numarası, kamyon plaka numarası ve şoför adının irsaliyeye taşınması,

VERİ TABANI YÖNETİM SİSTEMLERİ I

PASCAL PROGRAMLAMA DİLİ YAPISI

Excel' de formüller yazılırken iki farklı uygulama kullanılır. Bunlardan;

ANA SINIF TÜRETİLEN BİRİNCİ SINIF TÜRETİLEN İKİNCİ SINIF

BİLGİSAYAR BİLİMİ DERSİ (KUR 1) PYTHON PROGRAMLAMA DİLİ ÇALIŞMA KÂĞIDI - 1

Bölüm 6. Diziler (arrays) Temel kavramlar Tek boyutlu diziler Çok boyutlu diziler

BİL-142 Bilgisayar Programlama II

1. GİRİŞ 1.1. GENEL BAKIŞ 1.2. KULLANICI ARAYÜZÜ

Transkript:

ENDÜSTRİ MÜHENDİSLİĞİ BÖLÜMÜ YÖNEYLEM ARAŞTIRMASI DERSİ GAMS REHBERİ (Kısaltılmış) Hazırlayanlar Prof. Dr. Bilal TOKLU Arş. Gör. Talip KELLEGÖZ ARALIK 2009 Bu doküman GAMS programıyla birlikte verilen ve E.Richard Rosenthal tarafından hazırlanan A GAMS Tutorial isimli yardım dosyası temel alınarak oluşturulmuştur.

1. GİRİŞ Bu doküman kapsamında Ulaştırma Problemi (Transportation Problem) olarak bilinen bir örneğin GAMS yazılımı kullanılarak optimal çözümünün bulunması anlatılmıştır. Bu yolla GAMS dilinin hemen hemen tüm özellikleri anlatılmış olacaktır. Klasik ulaştırma probleminde tek bir ürün için birden fazla arz noktası, birden fazla talep noktası ve bu noktalar arası birim ulaştırma maliyetleri verilerek toplam ulaştırma maliyetinin minimum olması için hangi arz noktalarından hangi talep noktalarına ne miktarda ürün taşınması gerektiği sorusuna cevap aranır. Problemin matematiksel tanımı aşağıdaki gibidir: İndisler: fabrika (depo, arz noktası) müşteri (talep noktası) Veriler: fabrikasının arz miktarı müşterisinin talep miktarı fabrikasından müşterisine birim taşıma maliyeti ($/adet) Karar Değişkenleri: fabrikasından müşterisine taşıma miktarı (adet, 0, tüm, ) Kısıtlar: fabrikasından taşınan toplam miktar arz miktarını geçmesin: müşterisine taşınan toplam miktar talep miktarından az olmasın: Amaç Fonksiyonu: Örnek ulaştırma problemi tüm ler için tüm ler için 2 farklı fabrika ve 3 farklı müşterinin bulunduğu probleme ait mesafeler, fabrika kapasiteleri ve müşteri talepleri aşağıdaki tabloda verilmiştir. Mesafeler Kapasiteler Müşteriler Fabrikalar Izmir Konya Gazi-antep Ankara 0,579 0,258 0,673 350 Istanbul 0,561 0,668 1,126 600 Talepler 325 300 275 Mesafeler 1000 km cinsinden olup 1000 km mesafenin birim ulaştırma maliyeti $90 dır. Örnek probleme ait GAMS modeli aşağıda sunulmuştur.

Bu model GAMS programına girilip çalıştırıldığında optimal taşıma miktarları rapor penceresinin sonunda aşağıdaki gibi görüntülenecektir: Bunun yanı sıra fırsat maliyetleri de (simpleks çarpanları) aşağıdaki gibi raporun sonunda görüntülenecektir:

2. GAMS model yapısı GAMS model terminolojisinde matematiksel model bileşenlerine karşılık gelen kavramlar aşağıdaki tabloda verilmiştir. Matematiksel model bileşeni GAMS modeli karşılığı İndisler Sets Parametreler Parameters o Amaç fonksiyonu katsayıları o Kısıt katsayıları (teknolojik katsayılar) o Sağ taraf değerleri Karar değişkenleri Variables Eşitlikler ve Eşitsizlikler Equations o Amaç fonksiyonu o Kısıtlar Yukarıda verilen ulaştırma örneğine ait temel temel GAMS bileşenleri ve bu bileşenlere ait işlemler ise aşağıdaki tabloda sunulmuştur: Giriş Bileşenleri Sets o Bildirim o Değer atama Data (Parameters, Tables, Scalar) o Bildirim o Değer atama Variables Bildirim Değer atama Başlangıç değeri ve/veya alt üst sınır değeri atama (seçmeli) Equations o Bildirim o Tanımlama Model ve solve ifadeler Display ifadesi (seçmeli) Rapor Bileşenleri Echo Print Reference Maps Equation Listings Status Reports Results Seçimlik tanımlama bileşenleri özel formatlı rapor oluşturma, eski modelin kaydedilmesi veya kayıtlı modelin çağırılması, tek bir çalıştırmada birden çok modelin optimal çözümünün bulunması gibi işlemler yapmak amacıyla kullanılır. Bu bileşenler bu dokümanın kapsamı dışındadır. GAMS modellerine ilişkin bazı genel bilgiler aşağıdaki gibidir:

GAMS modeli GAMS dilinin içerdiği bileşenlerin bir kümesidir. Bileşenlerin model içerisinde sıralanmasına ilişkin tek bir kural olup bu kural her hangi bir bileşenin kullanılmasından (tanımlama veya değer atama) önce bildiriminin yapılması gerektiğidir. Her hangi bir ifade birden fazla satırda yazılabileceği gibi tek bir satıra birden fazla ifade de yazılabilir. Bunun yanı sıra ifadeler arasında istenildiği kadar boş satır bırakılabilir. İfadeler noktalı virgül ile bitirilir. Büyük küçük harf ayrımı yoktur. Dolayısıyla, örneğin e ve E GAMS açısından aynı kavrama karşılık gelir. GAMS modellerine ait ifadeler Bildirim ve Değer atama/tanımlama olmak üzere iki temel adımla oluşturulur. Bildirim işleminde ifadeye isim verilerek modele tanıtılır. Değer atama/tanımlama işleminde ise ifadeye spesifik bir değer veya yapı/formül atanır. Eşitliklerde (equations) bildirim ve tanımlama işlemi ayrışık ifadelerle yapılması gerekirken, diğer tüm GAMS bileşenlerinin bildirim ve tanımlama işlemleri aynı veya ayrışık ifadelerle yapılabilir. Bileşen isimleri alfa-nümerik bir karakterle başlar ve maksimum 8 karakter uzunluğunda olabilir. 3. SETS Modelin matematiksel gösteriminde indisleri ifade eden set ler GAMS modellerinin temel yapıtaşıdır. Örnek ulaştırma probleminin içerdiği SETS ifadesi aşağıda verilmiştir Bu ifade yoluyla i ve j isimlerine sahip iki farklı set bildirilmektedir. Aynı ifade yoluyla, bildirimi yapılan setlere aşağıdaki gibi elemanlar da atanmaktadır: GAMS de elemanlar küme parantezi yerine bölme işaretleri / arasına yazılır. Bunun yanı sıra birden çok kelimeden oluşan isimlere de izin verilmemektedir. Bu nedenle Gazi antep ifadesi yerine Gaziantep kullanılmıştır. Sets ifadesindeki küçük harfli bilgiler açıklama amaçlı olup kullanımı isteğe bağlıdır. i ve j setlerinin tek bir ifadede bildirimi mecburi olmayıp aşağıda verildiği gibi ayrışık ifadelerle bildirimleri yapılabilir: Tanımlanan sete atama işlemi yapılırken kullanılabilecek ifadelerden birisi de yıldız (*) ifadesidir. Yıldız ifadesi atanacak elemanların bir sıra oluşturması durumunda kullanılır. Örneğin aşağıdaki kullanım GAMS kapsamında uygun bir kullanımdır: Bu kullanımın setlere atadığı değerler ise aşağıdaki gibidir.

Sete atanan değerler alfanumerik olarak tutulur, bu nedenle t değerleri sayısal değildir. Diğer bir kullanışlı özellik ise alias dır. Aliaslar daha önce tanımlanmış bir sete farklı bir isim vermek için kullanılır. Alias kullanımıyla ilgili bir örnek aşağıda verilmiştir: Örnekte tanımlanan tp ifadesi matematiksel açıdan t ile aynı özeliklere sahiptir. Alias kullanımı özellikle aynı setin elemanlarının birbiriyle etkileşiminin olduğu modellerde kullanışlıdır. Yukarıda verilen örneklerde bulunan i, j, t ve m setlerinin tamamı statik setler olup bu setlere direkt olarak kullanıcı tarafından değer atanır ve bu değerler değişmez. Statik setlerin yanı sıra GAMS kapsamında çeşitli mantıksal işlemlerle modelin çalışması sırasında değer ataması yapılabilecek dinamik setler de tanımlanabilir. Dinamik setler bu dokümanın kapsamı dışında bırakılmış olup detaylı bilgi GAMS Kullanıcı Kılavuzunda bulunabilir. 4. DATA Ulaştırma problemi modelinde GAMS kapsamında izin verilen 3 farklı formatta veri girişinin tamamının örneği mevcuttur. Bu formatlar: Listeler (Lists) Tablolar (Tables) Direkt atama Devam eden 3 alt bölümde bahsi geçen veri giriş yöntemleri konusunda çeşitli bilgiler sunulmuştur. 4.1. Liste (List) Formatında Veri Girişi Bu format, aşağıda tekrarlanan örnek ulaştırma probleminin ilk Parameters bölümünde olduğu gibi kullanılır. Bu ifade, a ve b olmak üzere iki farklı parametrenin olduğunu, bu parametrelerin indislerinin ise sırasıyla i ve j setleri olduğunu bildirir. İfade her bir parametre için açıklayıcı bir bölümden sonra a(i) ve b(j) parametrelerine her bir i ve j için bir adet değer atar. Bu ifade aynı zamanda aşağıdaki gibi ayrışık olarak da yazılabilir:

Liste formatında veri girişinde bilinmesi gereken bazı özellikler aşağıda sıralanmıştır: Değer atama işlemini gerçekleştiren bölümün, listenin bölme / işaretleri arasına yazılması gerekir. Set elemanı-değer ikililerinin arasına ya virgül konmalı veya her biri ayrı bir satıra yazılmalıdır. Set elemanı-değer listesini parametre ismi ve açıklayıcı bilgi bölümlerinden ayırmak amacıyla noktalı virgül ; kullanılmasına gerek yoktur. Set Ankara elemanına sahip olacak şekilde bildirilip değer atandıktan sonra parametre tanımlanırken Ankra şeklinde yazım hatası yapılırsa, GAMS yazılımı Ankra elamanının ilgili sette bulunmadığını ifade eden bir hata mesajı görüntüleyecektir. Her bir parametrenin varsayılan değeri sıfırdır. Bu nedenle değeri sadece sıfırdan farklı olan set elemanı-değer ikililerinin istenen sıralamada listede bulunması yeterlidir. Sabit değer (scaler) set (yani indis) içermeyen parametre olarak düşünülebilir. Bu tip tanımlamalar aşağıda verilen örneğe benzer şekilde Scaler ifadesiyle tanımlanıp değer ataması yapılır. Eğer parametrenin birden fazla indise (yani sete) bağlı olacak şekilde tanımlanması gerekiyorsa, bu tip tanımlamalar da liste yoluyla yapılabilir. Benzer tanımlamalarda listelerin kullanımı çok sayıda sıfır içeren dizilerin bulunduğu modellerde oldukça kullanışlıdır. 4.2. Tablo (table) formatında veri girişi Büyük boyutlu matematiksel modellerin büyük bir kısmı sayılar içeren küçük çeşitli boyutlardaki tablolar içerir. Bu tip problemlerin GAMS modelinin yazılmasında tablo formatında veri girişi oldukça kullanışlıdır. Ulaştırma probleminin içerdiği iki boyutlu tablo (yani matris) aşağıdaki gibidir: Bu ifadeyle adı d olan ve indisleri i ve j setlerinin Kartezyen çarpımı olan bir tablo tanımlanarak tablonun satır ve sütunları sırasıyla i ve j setleriyle isimlendirilip değer ataması yapılmaktadır. Tabloda boş bırakılan değerlerin ifade ettiği elemanlara sıfır atanır. İkiden fazla boyuta sahip tablolar yoluyla da veri girişi yapılabilir. Bu ifade dokümanın kapsamı dışında olup detaylı bilgi GAMS Kullanıcı Kılavuzunda bulunabilir. 4.3. Direkt atama yoluyla veri girişi Direkt atama yöntemi, parametre tanımlama ve değer atama işlemlerini ayrı ifadelerle yapması yönüyle Liste ve Tablo yöntemlerinden ayrılır. Ulaştırma probleminde aşağıdaki satırlar direkt atama yoluyla veri giriş yöntemine örnek teşkil etmektedir:

Hem bildirimi ifade eden ilk satır hem de atamayı/tanımlamayı ifade eden ikinci satırın sonunda noktalı virgül kullanılmak zorundadır. İlk satırla adı c, indisleri i ve j olan bir parametre bildirimi yapılmış ve parametreye ilişkin açıklama verilmiş, ikinci satırda ise c parametresine daha önce tanımlanan f ve d parametrelerinin bir fonksiyonu yoluyla değer atanmıştır. Atama işlemi tüm i ve j indisleri için yapılmaktadır. Eğer spesifik bir i ve j indisi için atama yapılacaksa indis değerleri tek tırnak arasına yazılır. Bu duruma ilişkin bir örnek aşağıda verilmiştir: Aynı parametreye birden fazla kez değer atanabilir. Her bir atama bir önceki atamayı ortadan kaldırarak yeni değeri hemen etkin kılar. Buna karşın aynı parametrenin birden fazla kez bildirimine izin verilmez. Atama ifadesinin sağ tarafında FORTRAN ve C programlama diline çok benzeyen fonksiyonlar kullanılabilir. GAMS kapsamında desteklenen fonksiyonlar aşağıdaki tabloda verilmiştir. Fonksiyon ( ) ( ) ( ) 10( ) (, ) (, ) ( ) ( ) ( ) (,, ) (,, ) (, ) (, ) (, ) ( ) ( ) ( ) h( ) arctan ( ) cos ( ) sin ( ) Açıklama dan noktasına kadar standart normal dağılımın altında kalan alan ortalaması standart sapması olan normal dağılımdan türetilmiş rastsal sayı ve arasında düzgün dağılımdan türetilmiş rastsal sayı 'den büyük olan en küçük tamsayı 'den küçük olan en büyük tamsayı parametrelerin en büyüğü parametrelerin en küçüğü 'in ye bölümünden kalan, burada parametresinin tamsayı olma zorunluluğu vardır ifadesi in işareti + ise sağ tarafa ise sol tarafa adet yuvarlanır pozitifse 1, negatifse -1, değeri sıfırsa 0 çevirir ( ) ( ) radyan cinsinde x radyan cinsinde olmak üzere cos ( ) x radyan cinsinde olmak üzere ( ) Aşağıda sol taraf parametrelerinin tanımlandığı varsayımıyla bazı geçerli atamalara ilişkin örnekler verilmiştir.

İlerleyen bölümlerde anlatılacak olan toplam (SUM) ve çarpım (PROD) operatörleri de direkt atama yoluyla veri girişinde kullanılabilir. 5. Değişkenler (Variables) GAMS modelinde karar değişkenleri Variables anahtar kelimesiyle bildirilir. Her bir değişkene bir isim, gerekli ise indis ve açıklama bilgileri eklenir. Örnek olarak verilen ulaştırma problemi aşağıdaki değişkenlere sahiptir: Bu ifadelerle her bir (i, j) indisi için ulaştırma miktarlarının tutulduğu x değişkeni ve toplam ulaştırma maliyeti içinse indis içermeyen z değişkeni bildirilmektedir. Bütün GAMS modellerinin en küçüklenecek veya en büyüklenecek miktarı ifade eden ve optimizasyon değişkeni adı verilen z ye benzer bir değişken içermesi zorunludur. Bildirimi yapılan her bir değişkenin tipinin belirtilmesi gerekir. GAMS kapsamında kullanılabilecek değişken tipleri aşağıdaki tabloda sunulmuştur. Optimizasyon değişkeni sabit değerli (scaler-indis içermeyen) değişken olarak bildirilmeli ve Free tipte olmalıdır. Örnek ulaştırma probleminde optimizasyon değişkeni olan z, varsayılan olarak Free tutulurken, x(i, j) değişkeninin aşağıdaki ifadeyle negatif değer alması önlenmiştir: Dikkat edilecek olursa x değişkeninin indis bilgisi tip bildirimi yapılırken kullanılmamaktadır. GAMS Kullanıcı Kılavuzunun Bölüm 2.1 de değişkenlere alt ve üst sınır değerleriyle başlangıç değerlerinin nasıl atanacağı anlatılmıştır. 6. Eşitlikler (Equations) GAMS modellerinde aynı yapıyla tanımlanan tüm eşitlik veya eşitsizlikler tek tek türetilebildiği gibi grup olarak da türetilebilirler.

6.1. Eşitlik Bildirimi Eşitliklerin bildirimi ve tanımlanması ayrı ifadelerle yapılmalıdır. Bildirime ilişkin format diğer GAMS ifadeleriyle aynı olup Equations anahtar kelimesinden sonra eşitliğin ismi, varsa indisi ve açıklaması yazılır. Birden fazla eşitlik/eşitsizlik varsa tek bir Equations anahtar kelimesinden sonra her birisi ayrı satırlarda olmak üzere yazılır. Örnek ulaştırma probleminin içerdiği eşitlik bildirimi aşağıdaki gibidir: Bu ifadede cost eşitliği indisi olmayan tek bir eşitliği ifade ederken, supply eşitsizliği indisi i olacak şekilde toplam i adet eşitsizliği ifade etmektedir. 6.2. Toplam (SUM) ve Çarpım (PROD) Operatörleri GAMS kapsamında SUM operatörü gerek basit gerekse de kompleks ifadelerin tanımlanmasında kullanılabilir. Bu operatörün formatı iki argüman içeren aşağıdaki şekildedir: İki argüman virgül ile birbirinden ayrılır. Eğer ilk argüman da kendi içerisinde virgül içermesi gerekiyorsa (birden fazla indis bazında toplam alınacaksa), bu durumda ilk argüman parantez içerisine alınır. İkinci argüman ise kendi içerisinde SUM operatörlerini de içeren matematiksel ifade olabilir. Örnek ulaştırma probleminin içerdiği ifadesi matematiksel ifadesine eşdeğerdir. Örneğin içerdiği diğer bir ifade ise olup matematiksel ifadesine eşdeğerdir ve aynı ifade alternatif olarak şeklinde de tanımlanabilir. Çarpım operatörü (Prod), toplam operatörüyle tamamen aynı kurallara göre kullanılır. Sadece Sum terimi yerine Prod terimi yazılır. Örneğin ifadesi matematiksel ifadesine eşittir. Toplam ve çarpım operatörleri parametrelere direkt değer atama işlemlerinde de kullanılabilir. Bu duruma ilişkin bir örnek aşağıda verilmiştir: 6.2. Eşitlik Tanımlama Çok çeşitli eşitliklerin bulunabilmesi nedeniyle eşitlik tanımlama GAMS ifadeleri içerisinde en karmaşık yapılardan birisidir. Eşitlik tanımlama bileşenleri sırasıyla: Tanımlama yapılan eşitliğin adı, İndisi, İndis kısıtlama koşulu (seçimlik).. sembolü Sol taraf ifadesi

İlişki operatörü =L=, =E= veya =G= Sağ taraf ifadesi Ulaştırma problemi örneği 3 adet eşitlik tanımlama ifadesi içermektedir. Bu ifadeler aşağıda verilmiştir: Eşitlik tanımlamada bilinmesi gereken bazı özellikler aşağıdaki gibidir: Tek bir GAMS ifadesiyle birden fazla eşitliğin üretilmesi eşitlik isminden sonra belirtilen indis yoluyla kontrol edilir. Örneğin ulaştırma probleminde tanımlanan demand eşitliği her bir j ye bir adet olmak üzere aşağıda verilen 3 adet kısıtın oluşturulmasını sağlar: Bazı modellerde sadece spesifik bazı indis değerleri için eşitlik oluşturulmasına ihtiyaç duyulur. Bu tür yapılar GAMS Kullanıcı Kılavuzunda anlatılan Dollar veya such-that operatörlerinin kullanılması yoluyla oluşturulabilir. Bu dokümanın kapsamı dışında olduğundan bu operatörlere değinilmemiştir. İlişki operatörleri aşağıdaki anlamlara gelmektedir: o =L= sol taraf sağ taraftan küçük veya eşit olsun o =G= sol taraf sağ taraftan büyük veya eşit olsun o =E= sol taraf sağ tarafa eşit olsun = sembolü sadece direkt değer atama işleminde kullanılırken =E= operatörü sadece eşitlik tanımlama işleminde kullanılır. Değişkenler eşitliğin hem sol, hem sağ, hem de her iki tarafında da bulunabilir. Hatta aynı değişken eşitlik içerisinde birden fazla kullanılabilir. GAMS, model çözümüne başlamadan önce tüm eşitlikleri otomatik olarak standart yapıya çevirecektir. Eşitlikler, içerdiği tüm değişken ve parametrelerin daha önce tanımlanmış olması koşuluyla GAMS modelinin her hangi bir yerinde yazılabilir. 7. Amaç fonksiyonu Daha önce de belirtildiği gibi GAMS modellerinde adı amaç fonksiyonu olan ayrı bir ifade yoktur. Amaç fonksiyonunun tanımlanması için işaretçe kısıtsız (free) bir sabit değer (scaler) karar değişkeni tanımlanıp, bu değişkenin amaç fonksiyonuna eşit olacak şekilde eşitlik tanımlamasında kullanılması yeterlidir. 8. Model ve çözüme yönelik ifadeler Model ifadesi GAMS kapsamında en basit anlatımla eşitlikler kümesini ifade eder. Diğer GAMS ifadelerinde olduğu gibi modele de bir isim verilerek bildirimi yapılır. Bildirim Model ifadesiyle başlayıp, modelin ismi ve bölüm / işaretleri arasında olacak şekilde modelin içerdiği eşitliklerin bir listesi yazılır. Eğer eşitliklerin tamamı daha öncesinde tanımlanmışsa, kesin eşitlik listesi yerine /all/ ifadesi yazılabilir. Önek ulaştırma probleminde aşağıda verildiği gibi tek bir model bildirimi söz konusudur:

Bu ifade gereksiz gibi görünmesine rağmen, aynı GAMS çalıştırmasında birden fazla model oluşturulup çözülmek istenmesi durumunda oldukça kullanışlıdır. /all/ ifadesi yerine kesin eşitlik listesi yazılmış olsaydı aynı ifade aşağıdaki gibi olacaktı: Dikkat edilirse eşitliklerin isimleri indisler göz ardı edilerek yazılmıştır. Kesin eşitlik listesinin, daha önce tanımlanmış bir dizi eşitliğin sadece bir alt kümesinin modele dahil edileceği durumda kullanılması daha uygundur. Model bildirimi ve modele eşitlik ataması yapıldıktan sonra örnek ulaştırma problemi için solver (çözücü) aşağıdaki ifade kullanılarak çağırılmaktadır: Solve ifadesine ait format aşağıdaki gibidir: Solve anahtar kelimesi, Çözümü yapılacak modelin adı, using anahtar kelimesi, Mevcut çözüm prosedürü. GAMS kapsamında desteklenen çözüm prosedürleri: o lp -doğrusal programlama o nlp -doğrudal olmayan programlama o mip karışık tamsayılı programlama o rmip gevşetilmiş karışık tamsayılı programlama o minlp karışık tamsayılı doğrusal olmayan programlama o rminlp gevşetilmiş karışık tamsayılı doğrusal olmayan programlama o mcp karışık tamamlayıcı problem o cns kısıtlı doğrusal olmayan eşitlik sistemi o minimizing veya maximizing anahtar kelimesi, en iyilenecek değişkenin ismi. 9. Sonuçların gösterilmesine (display) ilişkin ifadeler solve ifadesi GAMS kapsamında gerek modelin oluşturulması gerekse de çözüme yönelik birçok işlemin yapılarak çıktı dosyasına yazılmasını sağlar. Primal ve/veya dual probleme ait karar değişkenlerinin optimal değerleri için GAMS in oluşturduğu çıktı dosyasına bakılabileceği gibi arzu edilirse bu bilgilerin belirlenen bir formatta gösterilmesi GAMS ten istenebilir. Önek ulaştırma modeli belirtilen amaca yönelik aşağıda verilen ifadeyi içermektedir: Bu ifade x(i,j) değişkenlerinin optimal (x.l) ve marjinal yani dual (x.m) değerlerinin gösterilmesini bildirmektedir. GAMS yazılımı modelin optimal çözümü bulduktan sonra istenen çıktıyı otomatik olarak uygun başlıklar içeren tablo formatına çevirip rapor penceresinde görüntüleyecektir. 10..LO,.L,.UP,.M veritabanı GAMS yazılımı her bir kayıtında karar değişkenleri ve eşitliklerle ilişkili olacak şekilde aşağıdaki 4 alanın bulunduğu küçük bir veritabanına sahiptir..lo alt sınır değeri,.l primal değer

.up üst sınır değeri.m marjinal veya dual değer Bu ifadelerin referansına ilişkin format değişken veya eşitlik ismiyle başlayıp alan adı ve gerekli ise indis ismiyle devam eder. GAMS, bu veritabanının okunup yazılmasına izin verir. Veri tabanının kullanımına ilişkin bazı bilgileri aşağıda verilmiştir. 10.1. Değişkenlere sınır ve/veya başlangıç değerleri atama Değişkenlerin tipi (free, positive, negative, binary vaya integer) bağlı olarak alt ve üst sınır değerleri GAMS tarafından otomatik olarak atanmasına karşın bu sınır değerleri kullanıcı tarafından değiştirilebilir. Bu işlemlere ilişkin bazı örnekler aşağıda verilmiştir: Bu ifadelerin değişkenlerin bildiriminden sonra, solve ifadesinden önce yazılması gerekir. İfadelerin sağ tarafında direkt değer atamada anlatılan tüm matematiksel ifadeler kullanılabilir. Özellikle doğrusal olmayan programlamada değişkenlerin alt ve üst sınırlarının mümkün olduğunda birbirine yakın olacak şekilde GAMS e bildirilmesi oldukça önemlidir. Bu bildirim optimal çözüme yönelik aramanın başlayacağı kaliteli bir başlangıç çözümünün oluşturulmasında da oldukça etkindir. Burada altı çizilmesi gereken nokta.lo ve.up alanlarının kullanıcı tarafından değiştirilmesine izin verildiği, daha sonrasında kontrolün GAMS e geçtiğidir. 10.2. Tip dönüşümü ve optimal değerlerin gösterilmesi solve ifadesiyle çözücü çağırıldıktan sonra primal ve dual değişken değerleri hesaplanarak veri tabanındaki.l ve.m alanlarına kaydedilir. Bu değerler okunabileceği gibi GAMS ifadeleri yoluyla tip dönüşümü yapılarak gösterilmesi de yapılabilir. Örneğin ulaştırma probleminde her bir müşterinin her bir fabrika tarafından karşılanan talep oranını öğrenmek istediğimizi varsayalım. Bu amaçla solve ifadesinden sonra aşağıdaki ifadelerin yazılması gerekir: Bu komutların modele eklenmesi çözümün yapılmasından sonra aşağıdaki gibi bir çıktının görüntülenmesini sağlayacaktır.

11. GAMS çıktısı Bu bölüm kapsamında GAMS çıktı raporunda görüntülenen/görüntülenebilecek aşağıdaki bilgilerden bahsedilecektir: Hata mesajları Eşitlik listesi Model istatistikleri Durum raporları Çözüm raporları 11.1. Hata mesajları GAMS yazılan modelde bir hatayla karşılaşırsa çıktı raporuna hataya sebep olan satırı takip eden bir hata kodu yazar. Bu tip mesajlar **** ifadesiyle başlayıp $ işaretini hata olduğu düşünülen noktanın altına yazar. $ operatörünü hatayla ilişkili bir sayısal bilgi takip eder. İlgili hata koduyla ilişkili hata mesajı ise echo print adı verilen ve modelin satırlarının numaralandırıldığı çıktıyı takip eden bölüme yazılır. Hata mesajlarına ilişkin bazı örnekler aşağıda verilmiştir. Örnek 1 Modelin aşağıdaki ifadeyi içerdiğini varsayalım: Çıktı raporuna aşağıdaki mesaj yazılacaktır: Bu durum GAMS in indis elemanı olan sum ile ilgili bir yanlışlık tespit ettiğini ifade eder. echo print bölümünün sonunda $160 hata koduyla ilişkili aşağıdaki hata mesajı görüntülenir: Karşılaşılan problem sum ifadesinin toplam amaçlı kullanılan GAMS in standart bir terimi olduğu, bu nedenle de bu ifadenin değiştirilmesi gerektiğidir. GAMS terimlerinin tam listesi GAMS Kullanıcı Kılavuzunda Tablo 3.2 de verilmiştir. Örnek 2 Modellerde yaygın olarak yapılan diğer bir hata ise direkt atama işlemi veya eşitlik tanımlamadan sonra kullanılması gereken noktalı virgülün unutulmasıdır. Örnek ulaştırma probleminde aşağıdaki gibi c(i,j) tanımlamasından hemen önce yazılması gereken noktalı virgülün unutulduğunu varsayalım. Bu ifadeyle ilişkili hata mesajı aşağıdaki gibi olacaktır:

Bu örnekte görüldüğü gibi basit bir noktalı virgül hatası 5 farklı hata kodunun görüntülenmesine neden olmuştur. Bu tip durumlarda ilk hata koduna yoğunlaşıp diğer kodların göz ardı edilmesi gerekir. Verilen örnekte ilk hata kodu $97 olup ilişkili açıklama 19. satırda bulunan bazı sembollerin 18. satırın devamı olarak düşünüldüğü, bu nedenle de eksik bir noktalı virgül olabileceğidir. Esasında ise 19. satır atamayla ilişkili bir satırdır. Buna karşın hata mesajları her zaman bu denli açıklayıcı olmamaktadır. Örnek 3 Hataların birçoğu bildirim ve değer atama/eşitlik tanımlama işlemlerinde farklı isimlerin kullanılmasından kaynaklanır. Aşağıdaki örnekte Ankara olarak tanımlanan indis tabloda Ankra olarak yazıldığından hata mesajıyla karşılaşılmıştır. Örnek 4 Eğer talep kısıtının sağ tarafına b(j) yerine dem(j) yazılırsa aşağıdakine benzer bir hata mesajıyla karşılaşılır:

Örnek 5 Yaygın olarak yapılan hatalardan bir diğeri de matematiksel hatalardır. Örneğin aşağıdaki ifade matematiksel olarak yorumu yapılamayacak bir ifade içermektedir: Bu eşitlikte iki temel hata söz konusudur. Eşitlik her bir i indisi için tanımlanmasına karşın toplam ifadesinde j indisi yerine i indisi döngüye sokulmaktadır. Bu ifadenin GAMS modeline girilmesi ve GAMS in hata mesajı aşağıda verilmiştir: 11.2. Eşitlik listesi Model hatasız bir şekilde yazılmışsa, GAMS girilen modeli anladığı haliyle oluşturup rapor penceresine yazacaktır. Bu yolla ifade edilmek istenen model ile GAMS in algıladığı model karşılaştırılarak olası yanlışlıkların düzeltilmesi amaçlanmaktadır. Eşitlik listesi eşitlikleri her bir indis bazında ayrı ayrı oluşturur. Örnek ulaştırma probleminde tanımlanan talep eşitliği aşağıdaki gibidir: GAMS tarafından çıktı raporuna eklenen ilişkili eşitlikler ise aşağıdaki gibi olacaktır: Modelde tanımlanan her bir eşitlik için varsayılan olarak 3 adet indis bazında eşitlik yazılır. Bu sayının r olarak değiştirilmesi için solve ifadesinden hemen önce aşağıdaki ifadenin eklenmesi gerekir:

Çıktı raporunda ayrıca sütun listesi (column listing) denilen bir bölüm de bulunur. Bu liste ise her bir değişken için 3 spesifik değişkenin katsayılarını içerir. Sayının c olarak değiştirilmesi için aşağıdaki ifadenin solve teriminden önce modele eklenmesi gerekir: Doğrusal olmayan modellerde eşitlik listesi doğrusal olmayan eşitliklerin birinci derece Taylor Serisi açılımıyla bulunan yakınlaşmalarını içerir. Yakınlaşmalar değişkenlerin başlangıç değerlerini içerir. 11.3. Model istatistikleri Çıktı raporunun çözüm yapılmadan önce eklenen son bölümü model boyutuna ilişkin bazı istatistiksel bilgileri içerir. Örnek ulaştırma problemi için bu bölüm aşağıda verilmiştir: BLOCK bölümü girilen modelle, SINGLE bölümü ise üretilen modelle ilişkili istatistikleri ifade etmektedir. 11.4. Durum raporları Model çözüldükten sonra en önemli bileşenleri çözücü durumu (solver status) ve model durumu (model status) olan bir çözüm özeti çıktı raporuna eklenir. Örnek ulaştırma probleminin çözüm özeti aşağıda verilmiştir: Çözücü durumu 1 yani normal optimal çözüm olduğu ifade edilmektedir. GAMS Kullanıcı Kılavuzunda diğer çözücü durumlarına ilişkin bilgi verilmiştir. Doğrusal programlamada model durumları 1 optimal, 3 sınırsız amaç fonksiyonu değeri, 4 çözümsüz modelleri ifade etmektedir. 2 ise doğrusal olmayan optimizasyonda yerel optimal durumuna karşılık gelmektedir. Kullanıcının problemin konveks/konkav özelliklerini araştırarak yerel optimalin global optimal olup olmadığını analiz etmesi gerekir. Tam sayılı programlamada ise 8 değeri tamsayılı uygun bir çözüm bulunmasına rağmen optimal çözümün izin verilen çözüm zamanında bulunamadığını ifade etmektedir. 11.5. Çözüm raporları Çözücü ve model durumları uygun ise çözüm yani optimizasyon raporlarıyla ilgilenilebilir demektir. Çözüm raporunda satır (yani eşitlikler) ve sütunlara (yani değişkenler) ait bilgiler gruplanmış bir

yapıda sunulur. Her bir satır ve sütün için alt sınır değeri (lower limit), çözüm sunucu (level), üst sınır değeri (upper limit) ve marjinal değeri bilgileri yer alır. Satır ve sütunlar GAMS e girilin modeldeki eşitliklere göre gruplandırılır. Örnek ulaştırma probleminin supply(i), demand(j) ve x(i,j) ifadelerine ilişkin çıktı raporu aşağıdaki gibidir: Çıktı raporundaki tek noktalar (.) sıfır değerini ifade etmektedir. EPS ifadesi ise sıfıra çok yakın fakat sıfır olmayan bir değer olduğunu göstermektedir. Bu örnekte Seattle kısıtının marjinal maliyetinde yer alan EPS ifadesi bu kısıtın dejenerasyon durumunda olduğunu gösterir. Alternatif çözümün bulunabilmesi için bu kısıta ait ilave değişkenin sıfırdan farklı değer alacak şekilde çözücünün yeniden başlatılması gerekmektedir. Değerler yerine INFES veya NOPT olması problemin uygun çözüm bölgesinin bulunmadığını, UNBND ifadesinin bulunması ise amaç fonksiyonunun sınırsız değer aldığını gösterir. Çözüm raporunun sonunda görüntülenen rapor özeti (report summary) bölümü rapor açısından çok önemli bilgiler içerir. Bu bölümde optimal olmayan (nonopt), uygun olmayan (infeasible) veya sınırsız (unbounded) satır ve sütunların sayısı görüntülenmektedir. Örnek ulaştırma problemine ait rapor özeti bölümü aşağıda verilmiştir:

Çözüm raporu yazıldıktan sonra kontrol çözücüden GAMS e geçtiğinden, GAMS veritabanında saklanan bilgiler istenen formatta görüntülenebilir. Örneğin aşağıdaki gibi bir komutun GAMS e bildirildiğini varsayalım: Bu komutun çıktısı aşağıdaki gibi olacaktır: