EMM3208 Optimizasyon Teknikleri

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

EMM3208 Optimizasyon Teknikleri

EMM3208 Optimizasyon Teknikleri

BİLGİSAYAR PROGRAMLAMA DERSİ

BİLGİSAYAR PROGRAMLAMA DERSİ

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

PASCAL PROGRAMLAMA DİLİ YAPISI

BİLGİSAYAR PROGRAMLAMAYA GİRİŞ

MTK467 Nesneye Yönelik Programlama. Hafta 4 - Döngüler Zümra Kavafoğlu

GAMS Kullanım Notları

Fen ve Mühendislik Uygulamaları ile MATLAB

Koşullu Önermeler (if else)

Bilgisayar Programlama

BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ

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

Diziler İndisli Değişkenler

BİLGİSAYAR PROGRAMLAMA. Algoritma ve Akış Şemaları

BMÜ-111 Algoritma ve Programlama. Bölüm 5. Tek Boyutlu Diziler

Çoktan Seçmeli Değerlendirme Soruları Akış Şemaları İle Algoritma Geliştirme Örnekleri Giriş 39 1.Gündelik Hayattan Algoritma Örnekleri 39 2.Say

BMÜ-111 ALGORİTMA VE PROGRAMLAMA AKIŞ KONTROLÜ YRD. DOÇ. DR. İLHAN AYDIN

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

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

1 RUBY HAKINDA 1 Ruby nin Gelişim Hikayesi 1 Neden Ruby? 1 Neden Bu Kadar Popüler? 2

BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ (Algoritma Geliştirmek, Satır Kod)

if (ad == "Sabri") Console.WriteLine("Merhaba Sabri. Ne zamandır gözükmüyodun...");

Mantıksal Kontrol ve Döngü Komutları

Php İle Mysql Veritabanından Bilgi Çekme

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

DÖNGÜLER BMÜ-111 ALGORİTMA VE PROGRAMLAMA-I YRD. DOÇ. DR. İLHAN AYDIN

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

HSancak Nesne Tabanlı Programlama I Ders Notları

BTP 207 İNTERNET PROGRAMCILIĞI I. Ders 9

Bilgisayar Programlama MATLAB

Genel Kullanılış 1: [değişken ismi] = [değişken ismi] [işlem] [sayı veya string ifade veya değişken]

Dersin Sorumlusu: Yrd. Doç. Dr. Birol SOYSAL. Sunumları Hazırlayan: Doç. Dr. Bülent ÇAKMAK

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

2 ALGORİTMA VE AKIŞ DİYAGRAMLARI

Adım Adım SPSS. 1- Data Girişi ve Düzenlemesi 2- Hızlı Menü. Y. Doç. Dr. İbrahim Turan Nisan 2011

BBS515 Nesneye Yönelik Programlama. Ders 3 Zümra Kavafoğlu

Dersin Sorumlusu: Yrd. Doç. Dr. Birol SOYSAL. Sunumları Hazırlayan: Doç. Dr. Bülent ÇAKMAK

BİLGİSAYAR TEMELLERİ VE PROGRAMLAMAYA GİRİŞ

ALGORİTMA VE PROGRAMLAMA I

İNTERNET PROGRAMCILIĞI DERSİ ÇALIŞMA SORULARI

BLGM BÖLÜM. Problem Çözme Kavramları (Algoritma ve Akış Şemaları)

Fen ve Mühendislik Uygulamalarında MATLAB

Algoritma ve Programlamaya Giriş

Algoritmalar ve Karmaşıklık

JAVA DÖNGÜ DEYİMLERİ. For Döngüsü

Internet Programming II

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

1. LabVIEW ile Programlama

MATLAB de. Programlama. Kontrol Yapıları. Döngü Yapıları. Doç. Dr. İrfan KAYMAZ Matlab Ders Notları

BM202 SAYISAL ÇÖZÜMLEME

ÜNİTE 1: TEMEL KAVRAMLAR

BBS515 Nesneye Yönelik Programlama. Ders 2 Zümra Kavafoğlu

=~ Metodu 92 Karakter Sınıfları 94 sub ve gsub metotları 101 Hızlı Tekrar 102 Kontrol Noktası 103 Düello 106 Sonraki Bölümde 109

BTP 207 İNTERNET PROGRAMCILIĞI I. Ders 8

Bilgisayar Teknolojileri Bölümü Bilgisayar Programcılığı Programı. Öğr. Gör. Cansu AYVAZ GÜVEN

BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ

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

Internet Programming II

Ruby. Prof.Dr.Timur Karaçay Başkent Üniversitesi

Veri Yapıları ve Algoritmalar

Matematiksel Operatörler

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

Internet Programming II

Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü

Veritabanı. SQL (Structured Query Language)

Yrd. Doç. Dr. Caner ÖZCAN

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

Degişken Tanımlama Ve Operatörler

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

Yeni bir proje açarken File New - Web Site diyoruz. Gelen ekranda Visual Basic veya C# seçilebilir. Biz ders kapsamında C# programlama dilini seçtik.

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

Pythonda değişkenlerin türlerini tanımlamaya gerek yoktur

Yukarıdaki örnekte görüldüğü üzere her php komut satırı noktalı virgül (;) ile biter.

5. HAFTA KBT204 İNTERNET PROGRAMCILIĞI II. Öğr.Gör. Hakan YILMAZ.

Bölüm 4 C de Program Kontrolü

Mühendislik Fakültesi Elektrik-Elektronik Mühendisliği C Programlama 5. Bölüm Karar ve Çevrim Kontrol Yapıları

DÖNGÜLER (LOOPS) while(), do-while(), for(), foreach()

Hafta 9 C Dilinde Kontrol ve Döngü Yapıları

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

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

while(), do-while(), for() M.İLKUÇAR 2010 MAKU-MYO

Lab Notları 4. for ( ilklenme yeri bir kez çalışır ; Kontrol yeri her döngüde bakılır ; Güncelleme yeri her döngüde )

DOĞRUSAL OLMAYAN PROGRAMLAMA -I-

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

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

EMM3208 Optimizasyon Teknikleri

Örnek 4: Örnek Özyinelemeli fonksiyon örneği Bölüm 9. C++ programlama dilinde Nesne ve sınıf

ALGORİTMA VE PROGRAMLAMA I

Internet Programcýlýðý (PhP, MySQL) Ders Sorumlusu Yrd.Doç.Dr.Hilmi Kuºçu

Genel Programlama II

Montaj Hatti Tasarımı ve Analizi - 8

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

Döngü Komutları. Komutu. while Komutu Diğer Operatörler Bileşik Komut for Komutu. İçiçe Döngüler break ve continue Komutları

BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ

Karşılaştırma İşlemleri ve Koşullu İfadeler

ATAMA (TAHSİS) MODELİ

Transkript:

2017-2018 Bahar Yarıyılı Balıkesir Üniversitesi Endüstri Mühendisliği Bölümü EMM3208 Optimizasyon Teknikleri card(), ord(), Küme Elemanlarının Komşulukları, Koşullu İfadeler, $ Operatörü, sameas() ve diag(), Dosyaya Yazdırma ve Dosyadan Okuma, Program Akış Kontrolü, Subsets, Dynamic Sets, Multidimensional Sets Yrd. Doç. Dr. İbrahim Küçükkoç http://ikucukkoc.baun.edu.tr ikucukkoc@balikesir.edu.tr 8 18.04.2018 Kaynak: Dhazn Gillig and Bruce A. McCarl, Introduction to GAMS: Summation Notation with GAMS, Department of Agricultural Economics, Texas A&M University (from Appendix A in McCarl and Spreen s text book on http://ageco.tamu.edu/faculty/mccarl/mccspr/newa1.pdf)

card() komutu - (Kümedeki Eleman Sayısı) Card(x) komutu x kümesindeki eleman sayısını verir. EMM3208 Optimizasyon Teknikleri - Yrd. Doç. Dr. İbrahim Küçükkoç 2

ord() komutu Bir kümedeki bir elemanın o küme içindeki sıra numarasına ihtiyaç olursa ord(x) fonksiyonu kullanılabilir. Örneğin; y = i x i i ifadesi GAMS te aşağıdaki gibi kodlanabilir: y =e= sum(i, ord(i)*x(i)) EMM3208 Optimizasyon Teknikleri - Yrd. Doç. Dr. İbrahim Küçükkoç 3

Küme Elemanlarının Komşulukları (Önceki ve Sonraki Elemanlara Erişim) Sıralı kümelerde (ordered sets), küme elemanının komşuluğundaki öğelere erişmek mümkündür. Söz dizimi: setelement ± n Eğer erişilmeye çalışılan öğe için kümede bir karşılık yoksa veya küme boyutlarını aşıyorsa, yani setelement + n > card(set) ise dönecek değer sıfırdır. Örneğin; Set t /1*24/; Variables Stok(t), UretimMik(t), Satis(t); Equation Stok; StokHesaplama(t).. Stok(t) =e= Stok(t-1)+UretimMik(t)-Satis(t); EMM3208 Optimizasyon Teknikleri - Yrd. Doç. Dr. İbrahim Küçükkoç 4

Koşullu İfadeler: Boolean (İkili) Operatörler Sayısal ve mantıksal operatörler aşağıda verildiği gibi kullanılır. İkili operatörlerin işlenmesi sonucu true dönerse 1 e, false dönerse 0 a karşılık gelmektedir. Sayısal operatörler GAMS Anlamı lt < le <= eq = ne <> ge >= gt > Mantıksal operatörler GAMS Anlamı not Değil and Ve or Veya xor Farklı veya EMM3208 Optimizasyon Teknikleri - Yrd. Doç. Dr. İbrahim Küçükkoç 5

Koşullu İfadeler: $ Operatörü $ operatörü gerekli koşulların uygulanmasını mümkün kılar. $(koşul) komutu eğer koşul doğru ise olarak düşünülebilir. Örnek: Eğer b>1.5 ise a=2 olsun -> a$(b>1.5)=2; Eğer b>1.5 ise a=2 olsun, aksi halde a=0 olsun -> $ eşitliğin solunda ise, koşul sağlanmazsa atama yok a=2$(b>1.5); $ eşitliğin sağında ise, her zaman atama yapılır. Fakat koşul sağlanmazsa $ ile belirtilen ifade 0 olur. $ ifadesi tanımlamalar için kullanılamaz. EMM3208 Optimizasyon Teknikleri - Yrd. Doç. Dr. İbrahim Küçükkoç 6

Koşullu İfadeler: $ Operatörü Kısıtları bazı koşullara göre süzmek için yine $ işareti kullanılabilir. Örnek: Aynı iki indise sahip x ij ve y ij değişkenleri olsun. Sadece i nin j den küçük olduğu durumlar için, y ij nin x ij den büyük olması gerektiğini, diğer durumlar için bir kısıt olmadığını varsayalım. Bu kısıtı matematiksel olarak aşağıdaki gibi yazabiliriz: y ij x ij i < j Bu matematiksel ifadenin GAMS teki karşılığı ise aşağıdaki gibi olur: Kisit1(i,j)$(ord(i)<ord(j)).. y(i,j) =g= x(i,j); EMM3208 Optimizasyon Teknikleri - Yrd. Doç. Dr. İbrahim Küçükkoç 7

$ Operatörü Uygulamaları EMM3208 Optimizasyon Teknikleri - Yrd. Doç. Dr. İbrahim Küçükkoç 8

$ Operatörü İçinde Değişken KULLANILAMAZ! EMM3208 Optimizasyon Teknikleri - Yrd. Doç. Dr. İbrahim Küçükkoç 9

sameas ve diag sameas (i1, i2) komutu, i1 ve i2 nin birbirine eşit olma durumunu kontrol eder. Eşit olması durumunda true, olmaması durumunda ise false döndürür. Benzer şekilde, i1 in verilen değer e eşit olma durumunu kontrol etmek için de sameas (i1, değer ) komutu kullanılır. diag komutu da tıpkı sameas gibi kullanılır, ancak eşitlik durumunda 1 değerini, eşitsizlik durumunda ise 0 değerini döndürür. Örnek: sum((i,j)$(sameas(i,j)), C(i,j) Burada toplama işlemi sadece i nin j ye eşit olduğu C(i,j) değerleri için yapılır. EMM3208 Optimizasyon Teknikleri - Yrd. Doç. Dr. İbrahim Küçükkoç 10

sum((i,j)$(not sameas(i,j)), C(i,j) Komutunda ise toplama işlemi sadece i nin j den farklı olduğu C(i,j) değerleri için yapılır. Aşağıdaki örnek Chicago dan tekrar Chicago ya gönderimi engellemektedir. EMM3208 Optimizasyon Teknikleri - Yrd. Doç. Dr. İbrahim Küçükkoç 11

z(k) = sum(i$sameas(i,'water'), r(i,k)); şeklindeki bir komut, sadece i nin water değerini aldığı r(i,k) değerlerinin toplamını her bir k değeri için z(k) ya eşitlemektedir. Yani i nin water değerini almadığı diğer r(i,k) değerleri için bu kısıt aktif değildir. EMM3208 Optimizasyon Teknikleri - Yrd. Doç. Dr. İbrahim Küçükkoç 12

sameas ve diag, iki kümenin birbirine eşit olup olmadığını sorgulamak için de kullanılabilir. Örnek: EMM3208 Optimizasyon Teknikleri - Yrd. Doç. Dr. İbrahim Küçükkoç 13

Text Dosyasına Yazdırma $Echo ve $onecho - $offecho komutları text dosyasına yazdırmayı sağlar. Örnek: $Echo merhaba > dosya1.txt veya $OnEcho >> dosya1.txt Yeni bir mesaj daha $OffEcho > dosya1.txt komutu dosya1.txt isminde yeni bir text dosyası oluşturur. Eğer aynı isimde bir dosya varsa üzerine yazar (override). >> dosya1.txt komutu ise varolan dosya1.txt isimli text dosyasına metin ekler. Hatırlatma: Bu komut derleme zamanı komutudur. Çözüm sonuçlarını dosyaya yazdırmak için kullanılmaz. Sonraki derslerde bunun için put özelliğini kullanmayı öğreneceğiz. EMM3208 Optimizasyon Teknikleri - Yrd. Doç. Dr. İbrahim Küçükkoç 14

Dosyadan Okuma ($Include Komutu) $Include komutu GAMS programına ASCII dosyalardan veri eklemek için kulanılır. Sonrasında program, dahil edilen veriyi kulanarak çalışmaya devam eder. Örnek: Table d(i,j) şehirler arasındaki mesafe $include dist.txt Burada dist.txt dosyası aşağıdaki tabloyu içermektedir: EMM3208 Optimizasyon Teknikleri - Yrd. Doç. Dr. İbrahim Küçükkoç 15

Dosyadan Okuma ($OnDelim Komutu) $OnDelim komutu, virgülle ayrılmış değerler (comma separated values.csv) formatında, table ve parameter girişi yapmak için kullanılabilir. Örnekler: Table d(i,j) uzaklık $ondelim $include uzaklik.csv $offdelim ; Burada uzaklik.csv dosyasının içeriği:, new-york, chicago, topeka seattle, 2.5, 1.7, 1.8 san-diego, 2.5, 1.8, 1.4 Parameter d(i,j) uzaklık/ $ondelim $include uzaklik.txt $offdelim /; Burada uzaklik.txt dosyasının içeriği: seattle, new-york, 2.5 san-diego, new-york, 2.5 Seattle, Chicago, 1.7 san-diego, chicago, 1.8 seattle, topeka, 1.8 san-diego, topeka, 1.4 EMM3208 Optimizasyon Teknikleri - Yrd. Doç. Dr. İbrahim Küçükkoç 16

Put Komutu Program çalışırken çözüm sırasında (execution time) text dosyasına yasmak için kullanılır. Dosya ile birlikte bir de fileid (dosyano) kullanılır: file fileid /dosya1.txt/; Yazmak için bir veri akım yolu (stream) ve dosya adı seçilir: put fileid; Text, etiketler, numaralar yazdırmak için: put item{, item}; Boş satır bırakmak için: put /; Veri akımını kapatmak için: putclose; EMM3208 Optimizasyon Teknikleri - Yrd. Doç. Dr. İbrahim Küçükkoç 17

Örnek: file fx /sonuc.txt/; put fx Fabrikalardan pazarlara sevkedilen miktarlar /; put ----------------------------------------------- /; loop ((i,j)$x.l(i,j); ); put Fabrika i.te(i):10, dan j.te(j):10, a sevkedilen:, x.l(i,j) /; putclose; EMM3208 Optimizasyon Teknikleri - Yrd. Doç. Dr. İbrahim Küçükkoç 18

Fabrikalardan pazarlara sevkedilen miktarlar ----------------------------------------------- Fabrika seattle dan new-york a sevkedilen: 50.00 Fabrika seattle dan chicago a sevkedilen: 300.00 Fabrika san-diego dan new-york a sevkedilen: 275.00 Fabrika san-diego dan topeka a sevkedilen: 275.00 EMM3208 Optimizasyon Teknikleri - Yrd. Doç. Dr. İbrahim Küçükkoç 19

Gams Program Akışının Kontrolü Program akışı, GAMS çözüm yaparken yönlendirilebilir/kontrol edilebilir. Program akışını yönlendirmek için kullanılan komutlar: loop, if-else, while, for Bu komut blokları içinde denklem tanımlamalarına veya yazımlarına izin verilmemektedir. Solve komutu kullanılabilir. EMM3208 Optimizasyon Teknikleri - Yrd. Doç. Dr. İbrahim Küçükkoç 20

loop Komutu* Loop komutu döngü oluşturmak için kullanılır. Örnek: EMM3208 Optimizasyon Teknikleri - Yrd. Doç. Dr. İbrahim Küçükkoç 21

if elseif-else Komutu Koşula bağlı olarak akışı yönlendirmek için kullanılır. If-elseif-else yapısının söz dizimi aşağıdaki gibidir: if (koşul, çalışacak komutlar; elseif şart, else ); çalışacak komutlar; çalışacak komutlar; EMM3208 Optimizasyon Teknikleri - Yrd. Doç. Dr. İbrahim Küçükkoç 22

if elseif-else Komutu $ kullanılarak yapılan koşullandırma ifadeleri, if-elseif-else yapısı ile de ifade edilebilirler. Örnek: p(i)$(f <= 0) = -1 ; p(i)$((f > 0) and (f < 1)) = p(i)**2 ; p(i)$(f > 1) = p(i)**3 ; q(j)$(f <= 0) = -1 ; q(j)$((f > 0) and (f < 1)) = q(j)**2 ; q(j)$(f > 1) = q(j)**3 ; if (f <= 0, p(i) = -1 ; q(j) = -1 ; elseif ((f > 0) and (f < 1)), p(i) = p(i)**2 ; q(j) = q(j)**2 ; else p(i) = p(i)**3 ; q(j) = q(j)**3 ; ) ; EMM3208 Optimizasyon Teknikleri - Yrd. Doç. Dr. İbrahim Küçükkoç 23

while Komutu while ve repeat yapıları döngü oluşturmak için kullanılır. while komutu söz dizimi: while(koşul, çalışacak komutlar; ); EMM3208 Optimizasyon Teknikleri - Yrd. Doç. Dr. İbrahim Küçükkoç 24

while Komutu repeat komutu söz dizimi: repeat( çalışacak komutlar; until koşul); EMM3208 Optimizasyon Teknikleri - Yrd. Doç. Dr. İbrahim Küçükkoç 25

For Döngüsü Tıpkı while ve repeat gibi, döngü oluşturmak için for yapısı da kullanılabilir. Söz dizimi: for (i = başl.değeri to downto bitişdeğeri [by AdımBüyüklüğü], statements; ); Burada başl.değeri ve bitişdeğeri pozitif veya negatif gerçel sayı olabilir. Fakat AdımBüyüklüğü değeri pozitif gerçel sayı olmalıdır. EMM3208 Optimizasyon Teknikleri - Yrd. Doç. Dr. İbrahim Küçükkoç 26

EMM3208 Optimizasyon Teknikleri - Yrd. Doç. Dr. İbrahim Küçükkoç 27

Text Özellikleri ve Çıktı Formatı EMM3208 Optimizasyon Teknikleri - Yrd. Doç. Dr. İbrahim Küçükkoç 28

Subset (Alt Küme) Söz dizimi: set1 set2: set set1 (set2); EMM3208 Optimizasyon Teknikleri - Yrd. Doç. Dr. İbrahim Küçükkoç 29

Dynamic Sets EMM3208 Optimizasyon Teknikleri - Yrd. Doç. Dr. İbrahim Küçükkoç 30

Examples: refer to first/last period of discrete-time models EMM3208 Optimizasyon Teknikleri - Yrd. Doç. Dr. İbrahim Küçükkoç 31

Multidimensional Sets EMM3208 Optimizasyon Teknikleri - Yrd. Doç. Dr. İbrahim Küçükkoç 32