Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

GAMS GAMS de karakterlerin büyük, ya da küçük olması önemli değildir;

Benzer bir sunumlar


... konulu sunumlar: "GAMS GAMS de karakterlerin büyük, ya da küçük olması önemli değildir;"— Sunum transkripti:

1 GAMS GAMS de karakterlerin büyük, ya da küçük olması önemli değildir;
Her komut «;» ile bitmelidir; Her komut kullanılırken, o komuta verilen değerler (elemanlar) önceden tanımlanmalıdır; GAMS, diğer programlama dilleri gibi bir takım ayrılmış sözleri kullanmaya özen gösteriyor. Böyle ki, GAMS metini satır -satır okur, bu sözleri arar ve onlara göre hareket eder;

2 GAMS Bazı komutlar ilk satırlarda tanımlanır ve sonunda “s” olup olmaması komutun anlamını değiştirmez. Örneğin, “SET” veya “sets”. Bu komut kümeyi tanımlar ve “set”, “SET”, “sets”, “SETS” gibi yazılmasından etkilenmez; Komutlar her biçimde yazılabilir. Yani, her satırda birkaç komut veya her komut bir satıra yazılabilir; Boşluk veya alanların numaralanması GAMS de önemli değildir;

3 GAMS Tek bir komut aynı tip bir veya daha fazla elemanları belirlemek ve tanımlamak için geçerlidir. Komutların isimlerini tekrarlamağa ihtiyaç yoktur; Dokümantasyon bilgileri GAMS koduna dâhil edilir. Bu her satırın başına “*” işareti yazarak gerçekleşe bilir. Baştaki “*” işareti o satırdaki yazıları veya komutu ignore ediyor, yani aktif olmayacak şekle getiriyor. “*” işareti kaldırılarak komut aktif hale getirile bilir. Diğer komutlar da tanımlanan komutların içine gömülebilir. Örneğin: set, scalar, parameter, table, equation, model;

4 GAMS Elemanlar komutlarla tanımlanır. Bu tanımlama (scalar, papameter, matrix,..) onların GAMS de kullanılması için geçerli bir dönüşüme uğraması anlamına gelir; GAMS elemanları için geçerli adlar harfle başlamalı ve 9 harf veya rakamdan oluşmalıdır.

5 SET (SETS) GAMS de “set” veya “sets” adı ile tanımlanan komut, indisleri tanımlamak, kümeleri ve onların mümkün değerlerini tanımlamak için kullanılır: SETS 𝑖 fabrika sayısı / 𝑝 1 , 𝑝 2 / 𝑗 market sayısı / 𝑚 1 ∗ 𝑚 3 /;

6 SETS 𝑖 𝑣𝑒 𝑗 indislerinin değerleri “/ /” işaretleri arasında gösterilir. " 𝒎 𝟏 ∗ 𝒎 𝟑 " ifadesindeki “*” işareti ise 𝑚 1 ile 𝑚 3 arasındaki tüm değerleri ifade ediyor. Yani, /𝒎 𝟏 ∗ 𝒎 𝟑 / ⇔ / 𝒎 𝟏 , 𝒎 𝟐 , 𝒎 𝟑 / anlamına geliyor ve komut “;” işareti ile bitiyor. Kümeler, sabit küme anlamına geliyor. Bu şekilde tanımlanan kümeler programın icrası boyunca hiç değişmez. GAMS de statik kümenin elemanlarını içeren dinamik küme de tanımlamak mümkündür. Dinamik kümenin elemanları program boyunca değişebilir.

7 SETS Örneğin, GAMS de ağ modelinin düğüm noktalarını içeren kümenin tanımlanmasında kümeyi ikiboyutlu şekilde göstere biliriz: SETS N set of nodes / 𝑁 1 ∗ 𝑁 4 / MAP (N,N) mapping set of N / 𝑁 1 . 𝑁 2 , 𝑁 1 . 𝑁 3 , 𝑁 2 . 𝑁 4 , 𝑁 3 . 𝑁 4 /  Bu 4 düğüm noktalı ve 4 geçişli bir ağ sistemi için yazılan koddur. N2 N N4 N3

8 SETS Burada düğümleri “N” ve “N” olarak tanımladık. Başka şekilde, ALIAS (N,NP) ; veya IF (NP $ MAP (N,NP),…,); gibi de göstere biliriz. Bunu “IF” operatörünü anlatınca daha net göreceyiz. “ALIAS” komutu da aynı kümedeki elemanların, farklı adlandırılsa bile aynı anlama geldiğini, aynı işlemi ifade ettiğini gösteren komuttur.

9 GAMS GAMS de kümeleri düzenlemek için 4 geçerli operatör vardır:card, ord, +, -, Örnek üzerinde bu operatörleri açıklayalım: A1 / Salı, Çarşamba, Cuma, Perşembe / A2 / Pazar, Perşembe, Cumartesi, Cuma / A3 / Çarşamba, Cuma, Cumartesi, Pazartesi /; olsun. A1 kümesi için operatörler aşağıdaki gibi kullanılır:

10 GAMS

11 GAMS Bu örnekte A1 kümesi sıralanmış kümedir, çünkü onun elemanları daha önceden tanımlanmıştır. A2 kümesi sıralanmış küme değil, çünkü “Perşembe” ve “Cuma” arasındaki durum, A1 de tanımlanmış durumdan farklıdır. Burada card (A1) – A1 kümesinin eleman sayısını gösteriyor, Ord - elemanın kümedeki yerini gösteriyor, +1 veya kümenin her hangi bir elemanını ele aldığımızda ondan önceki veya sonraki elemanı kullanmak gerektiğini gösteriyor,

12 SKALARLAR GAMS’de skalarlar kesin olarak belirlenir. Scalar veya scalars adı altında kullanmak üzere seçilmiş bir değerin atanmasında kullanılır. scalar f nakliye (her ton ve km. başına) / 0.09 /; Burada her ton, km. başına düşen nakliye fiyatının 0.09 dolar olduğu belirtilir. Bu değer / / işaretleri arasında gösterilir ve sonuna ; işareti konur.

13 PARAMETRELER ve TABLOLAR.
GAMS’de parametreler ve tablolar, 2 veya daha büyük boyutlarda verilen verilerin tanımlanması için kullanılır. Parametreler ve tablolar, bir boyutlu dizilerin tanımlanması hariç, birbirinin aynısıdır. Bu durumda tek parametrenin yapılanmasına izin veriliyor. Bunları araştıralım: Parameter veya parameters vektörlerin veya verilerin tanımlanması için kullanılır. Genellikle, vektör veya verilere değer atanması için kullanılır.

14 PARAMETRELER ve TABLOLAR
Parameter a(i) i. Fabrikanın kapasitesi (tonla)  /p p / ; Bu örnekte a(İ) parametresi i kümesinin elemanlarını tanımlıyor. P1 ve p2 küme elemanlarına 300 ve 500 değerlerini atıyor. Bu atamalar da / işaretleri arasında gösterilir ve sonuna ; işareti konulur.

15 PARAMETRELER ve TABLOLAR
Mümkün indislerin seçilmiş sıralaması ve onlara ilişkin değerler (parametre değerleri) / işaretleri arasında yazılır ve , ile bir birinden ayrılır. İndis değeri, her hangi sıra ile verile bilir. Parametreler için varsayılan değer “0” r. Bu nedenle 0’dan farklı değerler de ala bilir. GAMS otomatik olarak verilen indis değerleri ile küme değerlerini denetler. Başka değimle, GAMS ilgili yanlışları ortaya çıkarıyor (denetliyor).

16 PARAMETRELER ve TABLOLAR
Önceden tanımlanmış fonksiyonu matris olarak tanımlamak için de parameter komutunu kullana biliriz. Örneğin: Parameter c(i,j) (ton başına taşıma ücreti, dolar olarak) / p1.m P2.m P1.m P2.m P1.m P2.m /;

17 Tables Veri matrisi GAMS’te tablo veya ikiboyutlu parametre şeklinde tanımlana bilir. Tablo şeklinde tanımlanma table veya tables komutu ile gerçekleşiyor. Tables iki veya daha fazla indis kullanılırken tanımlana bilir. Komut, tablonun isminden sonra yazılır:

18 Tables Table d(i,j) (mesafe km.)

19 Tables Bu örnekteki matris, d(i,j) i ve j indislerinin kullanımı ile tanımlanır. Elemanlar kümesinin her kesişimi ve tabloda değerleri sırası ile verilir: p1.m1, p1.m2 , p1.m3, p2.m3 ve 2.0, 1.6, 1.8, 2.5, 1.2, 1.4 Verilerin tablo, matris veya parametre olarak tanımlanması eşdeğerdir. Başka örneğe bakalım: iki veya daha fazla kümenin içerdiği tabloya bakalım. Varsayalım ki, farklı özelliklere sahip insanlardan oluşan tabloya ihtiyacımız var (din, ırk ve eğitim) .

20 Tables Sets re din çeşitleri / re1*re3 / sl eğitim seviyesi /sl1*sl2 / ra ırk çeşidi / ra1*ra4 / ; table c (re, sl, ra) bu özelliklere sahip insan sayısı

21 Tables

22 Tables Display c; Tabloyu açık şekilde yazarsak, ra1 ra2 ra3 ra4
re1.sl re1.sl re2.sl re2.sl re3.sl re3.sl

23 GAMS’de atama kuralları
Matematiksel ifadelere değerler atanması için aşağıdaki kurallara uymak gerekiyor: Vektör veya matrislere değerlerin atanması, elemanların tamamı için değerlerin yazılması veya döngülerin kullanılması ile yapıla bilir. 𝑐 𝑖𝑗 matrisinin değerinin 3 olduğunu aşağıdaki gibi göstere biliriz: C(i,j)=3

24 ATAMALARDA MATEMATİKSEL KURALLARIN İFADESİ.
Belirli indislere belirli değerlerin atanması için ‘ ‘ işareti kullanılır. C(‘P1’, ‘m1’)=0,180; Skalar, parametre ve tablolara birden fazla değer atana bilir. Yeni değer eski değeri geçersiz yapar. Matematiksel ifadelere standart matematiksel fonksiyonlar ve işlemler dahil edile bilir. Aşağıdaki tabloda mevcut matematiksel fonksiyonlar yer alıyor.

25 ATAMALARDA MATEMATİKSEL KURALLARIN İFADESİ.
Örneğin, modelde xi vektörünün rassal değeri "∀ 𝑖= 1,10 ∪(0.1,0.5) dağılımından elde edilir” ifadesinin kodu aşağıdaki gibi yazılır: Set i /i1*i10/; Parameter x(i); X(i)=uniform (0.1)*0.5

26 ATAMALARDA MATEMATİKSEL KURALLARIN İFADESİ.
abs (x) Mutlak değer x; 𝑥 Arctan (x) Arctan (x) fonksiyonu Cos(x) cos (x) fonksiyonu sin(x) sin (x) fonksiyonu Sqrt (x) 𝑥 fonksiyonu Sqr (x) 𝑥 2 fonksiyonu Sign (x) İşaret fonksiyonu. 𝑥= 1, 𝑥>0, 0, 𝑥=0, −1, 𝑥<0,

27 ATAMALARDA MATEMATİKSEL KURALLARIN İFADESİ.
Log (x) X’in doğal (naturel) logarirması Log 10 (x) X’in onluk logaritması Exp (x) Exponensial fonksiyon. 𝑒 𝑥 Power (x,y) Üstel fonksiyon 𝑥 𝑦 Floor (x) X’ ten büyük eşit en büyük tam sayı Ceil (x) X’ ten büyük eşit en küçük tam sayı Mapval (x) Eşleştirme fonksiyonu Normal (x,y) Ortalaması x, standart sapması y olan rassal değer Uniform (x,y) U(x,y) dağılımındaki rassal sayı

28 ATAMALARDA MATEMATİKSEL KURALLARIN İFADESİ.
Errorf (x) N(0,1) normal dağılımı için birikimli dağılım fonksiyonu Max ( 𝑥 1 , 𝑥 2 ,…..) Sıralı değerlerin en büyüğü Min ( 𝑥 1 , 𝑥 2 ,…..) Sıralı değerlerin en küçüğü Mod (x) x/y den elde edilen kalık (kalan) X**y 𝑥 𝑦 üstel fonksiyonu (y pozitiv) Round (x) X’in tam sayıya yuvarlanması Round (x,y) X’in y’nin ondalık basamağına göre yuvarlanması

29 DEĞİŞKENLER. GAMS’de değişkenler aşağıdaki gibi tanımlanır: Variables
X(i,j) i. Fabrikadan j. Markete taşınacak ürün miktarı Z toplam taşıma ücreti Variable veya variables ile tanımlanan komut, optimizasyon değişkenlerini göstermek için kullanılır.

30 DEĞİŞKENLER. GAMS’de x(i,j) değişkenlerinin alt sınırı xij >= 0 gibi tanımlanır. Bu durumda değişkenin boyutunu belirtmeğe gerek kalmıyor, çünkü daha önce bu işlem yapılmış oluyor. Değişkenler aynı zamanda free (sınırsız), binary, integer , negative gibi de gösterile bilir. Amaç fonksiyonunu temsil eden değişken her zaman “free” olarak tanımlanmalıdır. Değişkenler için geçerli olan çeşitler aşağıdakilerdir:

31 DEĞİŞKENLER.

32 DEĞİŞKENLER. GAMS’de kullanılan değişkenlerin alt ve üst sınırları belirlenir. Örneğin, 2.0≤𝑟≤5.0 ifadesi GAMS’de aşağıdaki gibi tanımlanır: Positive variable r; r.lo= 2.0; r.up= 5.0; Burada lo alt sınırı, up üst sınırı belirtiyor. Aşağıdaki komut, tam sayılı i değişkeninin (100 ile 1000 arasında değişen) üst sınırını belirler:

33 DEĞİŞKENLER. İnteger variable i; Up = 1000 ;
Alt ve üst sınır değerleri aynı (benzer) olan değişkenler için fx komutu kullanılır. Örneğin, Yi = her i için ifadesi GAMS’de y.fx(i)=3.0; gibi gösterilir.

34 DEĞİŞKENLER. Belirtelim ki, GAMS’de vektörlerin (matrisin)tüm bileşenleri için aynı değerin atanması, aşağıdaki şekilde gerçekleşe bilir: Sij matrisi için Sij ( her i ve her j için) işlemi GAMS’de s.l (i,j)=3.0; şekilde yapılıyor. Buradaki l komutu, başlangıç nokta için belirtilen değerin kullanılmasını temin eder. Burada başlangıç değer 3 ‘r.

35 DEKLEMLER. Equations komutu GAMS’de geniş anlamda kullanılıyor. Denklemlerden başka, tanım ve kısıtlamalar da bu komutla tanımlanır. Equation ve equations komutu ele alınan problemin kısıtlarını ifade etmek için kullanılır. =e= “ eşittir” anlamına gelir, =l= “küçük eşit” anlamına gelir, =g= “büyük eşit” anlamına gelir.

36 DEKLEMLER. EQUATIONS Cost amaç fonksiyonu
Supply (i) i. Fabrikanın kapasitesi Demand (j) j. Marketin talebi ; Cost z =e= sum((i,j), c(i,j)*x(i,j)) ; Supply.. sum (j, x(i,j) ) =l= a(i); Demand.. sum (i, x(i,j)) =g= b(j);

37 DEKLEMLER. sum (i, x(i,j)) ifadesi 𝑖 𝑥 𝑖𝑗
prod (i, x(i,j)) ifadesi 𝑖 𝑥 𝑖𝑗 demektir. Supply sum (j, x(i,j) ) =l= a(i); ifadesi açık şekilde aşağıdaki gibi gösterilir (i=1,2 ): Supply sum (j, x(‘p1’,j) ) =l= a(‘p1’); Supply sum (j, x(‘p2’,j) ) =l= a(‘p2’);

38 MODEL MODEL komutu model ve çözümleri kapsayan denklemleri (ifadeleri) içeriyor. Model komutu problemin önceden tanımlanmış tüm denklemlerini içeriyor. Model transport /all/; Açık şekilde Model transport /cost, supply, demand/;

39 MODEL Eğer modelde problemi içeren tüm denklemlerin yer almasını istemiyorsak, bunu aşağıdaki şekilde göstere biliriz: Model transport1 “ demand constraint not included “ /cost, supply/;

40 ÇÖZÜCÜLER GAMS’de Solve (çözücü) komutu problemi formüle eden çözücüleri düzenlemek için kullanılır. Solve transport using lp minimizing z ; Bu bir taşıma probleminin çözümlenmesinde z değişkenini minimize etmek için lineer programlama çözücüsü kullanılsın anlamına geliyor.

41 ÇÖZÜCÜLER GAMS de çeşitli problemlerin çözülmesi için aşağıdaki çözücüler kullanılır: Lp - doğrusal programlama Nlp – doğrusal olmayan programlama Dnlp – kesikli türevli doğrusal olmayan programlama Mip – karma tam sayılı programlama Rmip- genişletilmiş (relax)karma tam sayılı programlama

42 ÇÖZÜCÜLER Minlp - karma tam sayılı doğrusal olmayan programlama
Rminlp- genişletilmiş karma tam sayılı doğrusal olmayan programlama Mcp – karışık tamamlayıcı problemler Mpec – denge sabitleri ile matematiksel problemler Cns – kısıtlı doğrusal olmayan sistemler.

43 ÇÖZÜCÜLER GAMS’de bazı eklerin modelleme ekleri ile birleşimi, problem ve çözümü için yararlı bilgiler sağlamaktadır. Kayda değer birkaç eklenti gösterelim: Modelstat - modelin statüsünü, Solvestat – çözücünün statüsünü, Resusd – çözücünün harcadığı zamanı gösteriyor.

44 KOŞULLU İFADELER ($ ; IF)
Koşullu ifadeler “$” işareti verilen kümenin uygun alt kümelerini üretmek için kullanılır. Demand (j) $ ( ord (j )) gt 1.. sum (i, x(i,j)) =g= b (j); $ (ord (j) gt 1 ) ifadesi, sıra numarası 1’den büyük olan elemanların gruba dahil edilmesinin gerektiğini belirtir. Aşağıdaki komutu inceleyelim: Supply (i) .. sum (j $ (ord (j) lt card (j)), x(i,j)) =l= a(i) $ (ord (i) eq 1); Bu komut, i=1 ‘den sonraki i’leri yok say demektir.

45 KOŞULLU İFADELER ($ ; IF)
Bu arada lt - < le - <= eq - = ne - >< ge - >= gt - > işaretlerini ifade eder.

46 IF komutu “If” komutunu da $ gibi ifade ede biliriz. Örneğin, C(‘p2’ , ‘m1’) $ (z.1 ge 70) = 0.01; bu If (z.1 ge 70, c (‘p2’ , ‘m1’)= 0.01); şeklinde de gösterile bilir. Yani, eğer z(1)>= 70 ise, c (i=2, j=1) = 0.01 demektir.

47 DİNAMİK KÜMELER GAMS’in güçlü özelliklerinden biri de dinamik kümelerin tanımlanmasıdır. Dinamik kümeler önceden tanımlanmış statik kümelerin alt kümelerini tanımlamak için kullanılır. Bu değişkenin değerini, parametreler, tablolar ve denklemler belirler, her zaman güncelleşir ve değişebilirler.

48 S(k) $ (ord(k) eq card(k))= yes;
Matematikte GAMS’de 𝑘= 𝑎,𝑏,𝑐 𝑠⊆𝑘 S= 𝑎,𝑏,𝑐 S=∅ S(k) = 𝑐 ; S= 𝑏,𝑐 Set k / a,b,c / S(k); S(k) = yes ; S(k) = no ; S(k) = no S(k) $ (ord(k) eq card(k))= yes; S(k) $ (ord(k) gt 1)= yes ;

49 A= 𝑎 1 , 𝑎 2 , 𝑎 3 , 𝑎 4 , 𝑎 5 𝑏⊆𝐴 , b= 𝑎 1 , 𝑎 2 , 𝑎 5 𝐶⊆A , C= 𝑎 2 , 𝑎 3 , 𝑎 5 𝑏∪𝐶= 𝑎 1 , 𝑎 2 , 𝑎 3 , 𝑎 5 𝑏∩𝐶= 𝑎 2 , 𝑎 5 Set A static set /a1*a5/; Set B(A) subset /a1,a2,a5/; Set C(A) subset / a2, a3,a5/; Set UN(A) dynamic subset; UN (A)= B(A)+C(A); Set IN(A) dynamic subset; IN (A)=B(A)*C(A);

50 DÖNGÜLER GAMS de döngüleri ifade eden komutlar aşağıdakilerdir: LOOPS
WHILE Bu komutu örnek üzerinde açıklayalım:

51 SET K /1*3/ DYN (K); PARAMETER m(K) the slope of C2 ; m(‘1’)=1; POSITIVE VARIABLES X1, X2 ; FREE VARIABLE Z; X1.up=3; EQUATIONS COST C1 C2(K) C4 C6;

52 COST.. Z=3*X1+X2; C X1+X2 =L= 2; C2(DYN) .. X1+m(DYN)*X2 =L=6; C *X1-X2 =L=4; C6 .. –X1-X2 =L= -1; Model exchap4 /all /; Loop (K, DYN (K) = yes; Solve exchap4 using lp maximizing Z; m(K+1)=m(K)+1; ); Açıklaması: C 1.. –X1+X2 =L= 2; C4 .. 2*X1-X2 =L= 4; C X1-X2 =L= -1;

53 K=1 için C2 (1) .. X1+X2 =L= 6; K=2 için C2 (2) .. X1+2*X2 =L=6; K=3 için C2 (3) .. X1+3*X2 =L= 6;

54 TAŞIMA PROBLEMİ Taşıma problemi, verilen koşullar altında yüklerin başlangıç noktalardan varış noktalarına en kısa zamanda taşınması şeklindeki problemleri kapsar. Problemin genel şekildeki matematiksel modeli aşağıdaki şekilde verilir:

55 TAŞIMA PROBLEMİ Veriler: m : başlangıç noktalar sayısı,
n: varış noktalar sayısı ui : i. Başlangıç noktasındaki yükleme miktarı vj : j. Varış noktasındaki alım miktarı cij : i. Başlangıçtan j. Varış noktasına gönderilen ürünün birim maliyeti

56 DEĞİŞKENLER: (karar değişkeni)
Xij : i. Başlangıç noktasından j. Varış noktasına olan sevk miktarı 𝑋 𝑖𝑗 ≥0 𝑖=1,…𝑚 𝑗= 1,…𝑛

57 KISITLAR: 𝑗 𝑥 𝑖𝑗 = 𝑢 𝑖 𝑖=1,..𝑚 𝑖 𝑥 𝑖𝑗 = 𝑣 𝑗 𝑗=1,..𝑛

58 AMAÇ FONKSİYONU 𝑧= 𝑖 𝑗 𝑐 𝑖𝑗 𝑥 𝑖𝑗 → 𝑚𝑖𝑛

59 ÖRNEK: Bu taşıma probleminde 3 başlangıç ve 3 varış noktası olsun (n=3, m=3) ve 𝑢 1 =2, 𝑢 2 =3, 𝑢 3 =4 𝑣 1 =5, 𝑣 2 =2, 𝑣 3 =2

60 U U U3 𝑥 𝑥 𝑥 13 𝑥 𝑥 𝑥 23 𝑥 𝑥 𝑥 33 V V V3

61 * 𝑥 11 𝑥 12 𝑥 13 𝑥 21 𝑥 22 𝑥 23 𝑥 31 𝑥 32 𝑥 33 =

62 Amacımız taşıma maliyetlerini minimize etmek olduğu için: 𝑚𝑖𝑛
𝐶= ; 𝑢= ; 𝑣= Amacımız taşıma maliyetlerini minimize etmek olduğu için: 𝑚𝑖𝑛 𝑍= 𝑥 𝑥 𝑥 𝑥 21 + 𝑥 𝑥 𝑥 𝑥 32 + 𝑥 33

63  SET I / I1*I3/ J / J1*J3/ ; PARAMETERS U(I) / I I I / V(J) / J J J / ; TABLE C(I,J) J1 J2 J3 I I I ; VARIABLES Z X(I,J) ; POSITIVE VARIABLE X(I,J) ;

64 EQUATIONS COST SHIP (I) RECEIVE (J ) ; COST Z =e= SUM( (I,J), C(I,J)*X(I,J)) ; SHIP(I) SUM(J, X(I,J) = e = U(I) ; RECEIVE (J) .. SUM(I, X(I,J) = e = V(J) ; MODEL transport /ALL/; SOLVE transport USING LP MINIMIZING Z ;

65 Diyet problemi Diyet problemini bir örnek üzerinde açıklayalım:
Bir anne çocuklarının kahvaltısı için besin seçmelidir. Kahvaltıda çocuklara süt veya yumurta vermek istiyor. 1 gr. Yumurta 0,10 mg. Yağ, 1,0 mg. Kalsiyum ve 110 kalori 1 gr. Süt 0,25 mg., Yağ 0,25 gr. Kalsiyum ve 120 kalori içeriyor. Bunun dışında, çocukların sağlıklı büyümesi için her sabah 1 mg. Yağ, 5 mg. Kalsiyum ve 400 kalori almaları gerekiyor. 1 gr. Yumurtanın fiyatı 3,8 kuruş, 1 gr. Sütün fiyatı da 4,2 kuruştur.

66 Diyet problemi Anne çocuklarının her sabah yeteri kadar yağ, kalsiyum, kalori almasını ve bunu nasıl ucuza getireceğinin yollarını arıyor. Bu işi dengeli çözmek için lineer programlamaya ihtiyaç duyulur. Problemin modelini oluşturmaya çalışalım ve bunu matematiksel şekilde gösterelim:

67 1 gr. yumurta 1 gr. süt Talep yağ 0,10 mg 0,25 mg 1 mg kalsiyum 1,00 mg 5 mg kalori 110 120 400 1 gr. maliyeti 3,8 kuruş 4,2 kuruş

68 Karar değişkenleri: Karar değişkenimizi 𝑥 𝑗 ile gösterelim: 𝑥 1 𝑖𝑙𝑒 𝑎𝑙𝚤𝑛𝑎𝑐𝑎𝑘 𝑦𝑢𝑚𝑢𝑟𝑡𝑎 𝑚𝑖𝑘𝑡𝑎𝑟𝚤𝑛𝚤, 𝑥 2 𝑖𝑙𝑒 𝑎𝑙𝚤𝑛𝑎𝑐𝑎𝑘 𝑠ü𝑡 𝑚𝑖𝑘𝑡𝑎𝑟𝚤𝑛𝚤 𝑖𝑓𝑎𝑑𝑒 𝑒𝑡𝑠𝑖𝑛.

69 Kısıtlar 0,10 𝑥 1 +0,25 𝑥 2 ≥1 (yağ) 1,00 𝑥 1 +0,25 𝑥 2 ≥5 (kalsiyum) 110, 0 𝑥 , 0 𝑥 2 ≥400 (kalori) 𝑥 1 ≥0; 𝑥 2 ≥0

70 Amaç fonksiyonu min 𝑍=3,8 x 1 +4,2 x 2 Dolayısı ile problem, verilen koşulları sağlamakla maliyeti en küçüklemek şeklinde veriliyor.

71 Diyet problemi Bu problemin optimal çözümü: «Anne çocuklarına 60/9 gr. yumurta, 20/9 gr. süt vermekle kahvaltıyı 26,2 kuruşa getirebilir» şeklindedir. Fakat, bu durumda çocuklar gereken besinleri almakla beraber 755,5 kalori de almış oluyorlar (yani gerekenden 355,5 kalori fazla). Problem maliyeti en küçüklemek olduğu için bunu göze alabiliriz

72 Genel Şekilde DIYET PROBLEMİ (Diet):
Veriler: m : besin sayısı, n: farklı gıda sayısı, aij : j. Gıdadaki i.besin miktarı, bi : i. besinin min. Kullanım miktarı, cj : j. Gıdanın birim maliyeti.

73 Karar değişkeni ve Kısıtlar
Xj : alınan j. Gıda miktarı 𝑗 𝑎 𝑖𝑗 𝑥 𝑗 ≥ 𝑏 𝑖 𝑖=1,..𝑚 𝑥 𝑗 ≥0 ; 𝑗=1,….,𝑛

74 AMAÇ FONKSİYONU 𝑧= 𝑗 𝑐 𝑗 𝑥 𝑗 → 𝑚𝑖𝑛
𝑧= 𝑗 𝑐 𝑗 𝑥 𝑗 → 𝑚𝑖𝑛 Buradaki 𝑐 𝑗 j. Gıdanın birim maliyetidir.

75 ÖRNEK: Bu diyet probleminde verilen parametreler:

76 ÖRNEK 𝐴𝑋= 𝑥 1 𝑥 2 𝑥 3 𝑥 4 𝑥 5 ≥ 𝑥 1 , 𝑥 2 , 𝑥 3 , 𝑥 4 , 𝑥 5 ≥0

77 ÖRNEK Amacımız satın alma maliyetlerini minimize etmek olduğu için:
𝑚𝑖𝑛 𝑍= 𝑥 1 +0,5 𝑥 2 +2 𝑥 3 +1,2 𝑥 4 + 3𝑥 5 Sonuç: 𝑧=0,793

78 Problemin GAMS kodu $ title DIET problem ** I besin indisi
** J Gıda indisidir  SET I / I1*I4/ J / J1*J5/ ; PARAMETERS B(I) / I I I I / C(J) J. Gıdanın birim maliyeti / J J J J J / ;

79 ÖRNEK 𝑍 𝑜𝑝𝑡 =0.793 𝑋= 0, 1.53, 0, 0.023, 0 𝑇 TABLE A(I,J)
J J J J J5 I I I I ; VARIABLES Z X(J) ; POSITIVE VARIABLE X(J) ; EQUATIONS COST NUTFOOD (I) COST Z =e= SUM( (J), C(J)*X(J)) ; NUTFOOD(I) SUM(J, A(I,J) *X(J) =G= B(I); MODEL DIET /ALL/; SOLVE DIET USING LP MINIMIZING Z ; 𝑍 𝑜𝑝𝑡 = 𝑋= 0, 1.53, 0, , 0 𝑇

80 Ağ problemi Veriler G : G=(N,A) ağ taşımasını tanımlayan graftır. Burada N düğüm kümesi, A ise bağlantı kümesidir. n: ağdaki düğüm sayısı fi : i. Düğümden geçen akışlar (+ ise düğüme gelen, - ise düğümden çıkan) mij : i. Düğümden j. Düğüme akış kapasitesi cij : i. Düğümden j. Düğüme gönderim maliyeti

81 DEĞİŞKENLER: (karar değişkeni) ve Kısıtlar
𝑥 𝑖𝑗 : i. Düğümden j. Düğüme akış miktarı 𝑗 𝑥 𝑖𝑗 − 𝑥 𝑗𝑖 = 𝑓 𝑖 𝑖=1,..𝑛 (1) Tüm düğümlerden akış kontrol ediliyor ve kapasite aşılmıyor. −𝑚 𝑖𝑗 ≤ 𝑥 𝑖𝑗 ≤ 𝑚 𝑖𝑗 ∀𝑖<𝑗 (2)

82 AMAÇ FONKSİYONU 𝑧= 𝑖 𝑗 𝑐 𝑖𝑗 𝑥 𝑖𝑗 → 𝑚𝑖𝑛 (3)

83 ÖRNEK: Aşağıdaki şekilde bir ağ akış problemi verilmiştir. f2 2 1 x12 x24 4 f1 x14 f4 x13 x34 f3 3

84 Kısıtlar 1 1 1 − − −1 −1 −1 𝑥 12 𝑥 13 𝑥 14 𝑥 24 𝑥 34 = 𝑓 1 𝑓 2 𝑓 3 𝑓 4 𝑥 𝑖𝑗 ≤ 𝑚 𝑖𝑗 ∀ 𝑖≤𝑗 −𝑥 𝑖𝑗 ≤ 𝑚 𝑖𝑗 ∀ 𝑖≤𝑗 𝑚 𝑖𝑗 =4 olduğu varsayılır, ∀ 𝑖<𝑗 ve 𝑓 1 , 𝑓 2 , 𝑓 3 , 𝑓 4 = 7, −4, −1, −2

85 Amaç fonksiyonu Z= 𝑖 𝑗 𝑐 𝑖𝑗 𝑥 𝑖𝑗 =𝑥 12 + 𝑥 13 + 𝑥 14 + 𝑥 24 + 𝑥 34
Hem de 𝑐 𝑖𝑗 = ∀𝑖,𝑗 olsun. O zaman minimize ettiğimiz fonksiyon : Z= 𝑖 𝑗 𝑐 𝑖𝑗 𝑥 𝑖𝑗 =𝑥 12 + 𝑥 13 + 𝑥 14 + 𝑥 24 + 𝑥 34 oluyor .

86 Problemin GAMS kodu SET I set of nodes in the network / I1*I4/ CONEX (I,I) set of node connections /I1.I2, I1.I3, I1.I4, I2.I4, I3.I4/; ALIAS (I,J) PARAMETERS F(I) the input or output flow at node I / I1 7 I2 -4 I3 -1 I4 -2/ FMAX (I,J) maximum flow capacity of conduction going from I to J ; FMAX (I,J)=4 VARIABLES Z objective function variable X(I,J) the flow going from node I to node J; X. lo(I,J) := - FMAX(I,J); X. up(I,J) := FMAX(I,J);

87 ÖRNEK EQUATIONS COST objective function BALANCE conservation of flow conditions COST.. Z =e= SUM(CONEX(I,J),X(I,J)) ; BALANCE(I).. SUM(J$CONEX(I,J),X(I,J))- SUM(J$CONEX(J,I),X(J,I)) = e = F(I) ; MODEL network /ALL/; SOLVE network USİNG LP MINIMIZING Z Z=5, 𝑥 12 =0, 𝑥 13 =3, 𝑥 14 =4, 𝑥 24 =−4, 𝑥 34 =2

88 Portföy problemi Önce problemle tanışalım: 𝐴 𝑖 hisse senetleri olsun ve bir yatırımcı da bu hisse senetlerinin 𝑏 𝑖 hissesine sahip olsun. (i=1,…m) Bu hisse senetlerinin mevcut fiyatı 𝑣 𝑖 olsun. Varsayalım ki, alındığı tarihten 1 yıl sonra bu hisse senetlerinin getirisi di, yeni fiyatları da wi olacaktır. Amacımız geliri maksimize etmek için hisse senetlerinin sayısını ayarlamaktır. 𝑥 𝑖 değişkeni 𝐴 𝑖 hisse senetleri sayısındaki değişimi göstersin. O zaman elimizde olan 𝑏 𝑖 hissesi ayarlamadan sonra 𝑏 𝑖 + 𝑥 𝑖 olacaktır.

89 Veriler: 𝐴 𝑖 – 𝑖. Stok (hisse senedi) 𝑖=1,..m
m – stok sayısı (yatırım aracı) 𝑏 𝑖 – 𝑖 hisse senedinin elimizde olan miktarı 𝑣 𝑖 - 𝐴𝑖 nin şimdiki değeri (fiyatı) 𝑑 𝑖 - alındığı tarihten 1 yıl sonra 𝑖. hisse senedinin getirisi (kar) 𝑤 𝑖 - 𝐴𝑖 nin 1 yıl sonraki değeri (fiyatı) 𝑟 – değişim sonrası portföyün vazgeçilmeyecek hissesi 𝑠 – enflasyona ayak uydurmak için, hisse senetlerinin gelecek toplam değerinin, şimdiki toplam değerinin belli bir katının üzerinde olmasını gösteren değer (kesir).

90 DEĞİŞKENLER: (karar değişkeni) ve Kısıtlar
𝑥 𝑖 – 𝑖. Stokun elimizdeki miktarının ne kadar değişeceğini gösteren sayı 1. Hisse senedi ne kadar değişirse değişsin, gelecekteki toplam miktar negatif olmasın: 𝒙 𝒊 + 𝒃 𝒊 ≥𝟎 veya 𝒙 𝒊 ≥− 𝒃 𝒊 2. Bu kısıt tek bir stoka yatırım yapmasını engellemek içindir. Bunun için her bir hisse senedinin gelecekteki miktarının şimdiki fiyata göre değerinin, toplam hisse senetlerinin şimdiki değerlerinin belli bir katının üzerinde olmasını talep etmektedir. Yani, 𝒓 𝒊 𝒗 𝒊 𝒃 𝒊 + 𝒙 𝒊 ≤ 𝒗 𝒋 𝒃 𝒋 + 𝒙 𝒋 ℎ𝑒𝑟 𝑗 𝑖ç𝑖𝑛

91 DEVAMI 3. 𝒊 𝒗 𝒊 𝒙 𝒊 =𝟎 Şimdiki fiyata göre değişmiş miktarların toplam değeri aşağıdaki gibi olacaktır. 𝑖 𝑣 𝑖 𝑏 𝑖 + 𝑥 𝑖 Burada 𝑖 𝑣 𝑖 𝑏 𝑖 + 𝑥 𝑖 = 𝑖 𝑣 𝑖 𝑏 𝑖 + 𝑖 𝑣 𝑖 𝑥 𝑖 Bu kısıt yatırım için ek para harcanmamasını ön görmektedir. Dolayısı ile 𝒊 𝒗 𝒊 𝒙 𝒊 =𝟎 olacaktır. 4. Enflasyona ayak uydurmak için elimizde olan yatırım araçlarının toplam gelecek değeri (fiyatı), şimdiki toplam değerin en az bir s hissesi kadar fazla olmalıdır. Yani, 𝑖 𝑤 𝑖 𝑏 𝑖 +𝑥 𝑖 ≥ 1+𝑠 𝒊 𝑣 𝑖 𝑏 𝑖

92 Amaç Fonksiyonu Amacımız toplam karı maksimize etmektir.
𝒊 𝒅 𝒊 𝒃 𝒊 + 𝒙 𝒊 →𝒎𝒂𝒙

93 ÖRNEK: Elimizde 3 yatırım aracı olsun; A, B, C (m=3 ) ve
A hisse senedinden 75 adet, B hisse senedinden 100 adet, C hisse senedinden 35 adet bulunsun. Bu hisse senetlerinin fiyatları da sırası ile 20$ , 20$, 100$ olsun. Ek olarak aşağıdaki bilgiye sahibiz: 1 yıl sonra A senedi kar getirmeyecek ve yeni fiyatı 18$ olacak, B senedi 3$ kar getirecek ve gelecek fiyatı 23$ olacak, C senedi de hisse başına 5 $ kar getirecek ve fiyatı 102$ olacaktır. Yatırımcı tarafından bize verilen değerler: 𝑟= ve 𝑠=0.03

94 Kısıtlar: 𝑥 𝐴 ≥−75 𝑥 𝐵 ≥−100 𝑥 𝐶 ≥−35

95 ÖRNEK 𝑥 𝐴 𝑥 𝐵 𝑥 𝐶 ≤20 75+𝑥 𝐴 𝑥 𝐴 𝑥 𝐵 𝑥 𝐶 ≤ 𝑥 𝐵 𝑥 𝐴 𝑥 𝐵 𝑥 𝐶 ≤ 𝑥 𝐶 20 𝑥 𝐴 +20 𝑥 𝐵 +100 𝑥 𝐶 = 𝑥 𝐴 𝑥 𝐵 𝑥 𝐶 ≥1.03∗7000

96 ÖRNEK 15 𝑥 𝐴 −5 𝑥 𝐵 −25 𝑥 𝐶 ≥250 −5 𝑥 𝐴 +15 𝑥 𝐵 −25 𝑥 𝐶 ≥−250 −5 𝑥 𝐴 −5 𝑥 𝐵 +75 𝑥 𝐶 ≥− 𝑥 𝐴 +20 𝑥 𝐵 +100 𝑥 𝐶 =0 18 𝑥 𝐴 +23 𝑥 𝐵 +102 𝑥 𝐶 ≥−10 Sonuç: 𝑧=612.5 $ 𝑣𝑒 𝑥 𝐴 =12.5 ; 𝑥 𝐵 =75; 𝑥 𝐶 =−17.5 Yani, toplam maksimum gelirimiz $ olacak. Bunun için A senedinden 12.5 adet, B senedinden 75 adet almak, C senedinden de 17.5 adet satmak gerekecek

97 Problemin GAMS Kodu $title the portfolio problem SET I set of stocks /A1,A2,A3/; ALIAS(I,J); SCALARS r percentage /0.25/ s percentage /0.03/;

98 GAMS Kodu TABLE data(I,*) B V D W * $ $ $ A A A ; Variables z objective function variable x(I) number of shares of stock I; POSITIVE VARIABLE x(I); x.lo(I)= - data(I,'B');

99 GAMS Kodu EQUATIONS COST objective function NOCHANGE no change in the current value INFLATION future value must be 3% greater than the current value BALANCE(I) to avoid excessive reliance on a single stock; COST.. z =E= SUM(I,data(I,'D')*(x(I)+data(I,'B'))); NOCHANGE.. SUM(I,data(I,'V')*x(I))=E= 0; INFLATION.. SUM(I,data(I,'W')*(x(I)+data(I,'B')))=G= (1+s)*SUM(I,data(I,'V')*data(I,'B')); BALANCE(I).. r*SUM(J,data(I,'V')*(x(J)+data(I,'B'))) =L= data(I,'V')*(x(I)+data(I,'B')); MODEL portfolio /ALL/; SOLVE portfolio USING lp MAXIMIZING z;

100 Sonuç Z=612.5 𝑥 𝐴 =12.5 𝑥 𝐵 =75.0 𝑥 𝐶 =−17.5

101 0-1 problemler 0-1 problemleri tam sayılı programlama problemler sınıfının önemli problemlerinden biridir. Bu tür problemlerde karar değişkeni sadece 0-1 değerlerini alır. Yani, 𝑥= 1, 𝑒ğ𝑒𝑟 𝑜𝑙𝑎𝑦 𝑔𝑒𝑟ç𝑒𝑘𝑙𝑒ş𝑖𝑦𝑜𝑟𝑠𝑎 0, 𝑑.𝑑.

102 SIRT ÇANTASI PROBLEMİ (KNAPSACK)
Bu problemlere örnek olarak SIRT ÇANTASI PROBLEMİ’ni gösterelim VERİLER: 𝑛−𝑜𝑏𝑗𝑒𝑙𝑒𝑟𝑖𝑛 𝑒ş𝑦𝑎𝑙𝑎𝑟ı𝑛 𝑠𝑎𝑦ı𝑠ı, 𝑎 𝑗 −𝑗. 𝑒ş𝑦𝑎𝑛ı𝑛 𝑎ğı𝑟𝑙ığı, 𝑐 𝑗 −𝑗. 𝑒ş𝑦𝑎𝑛ı𝑛 𝑓𝑎𝑦𝑑𝑎𝑙ı𝑙ığı, 𝑏−𝑠ı𝑟𝑡 ç𝑎𝑛𝑡𝑎𝑠ı𝑛ı𝑛 𝑘𝑎𝑝𝑎𝑠𝑖𝑡𝑒𝑠𝑖

103 DEĞİŞKENLER: (karar değişkeni)
𝑥 𝑗 = 1 , 𝑒ğ𝑒𝑟 𝑗. 𝑒ş𝑦𝑎 ç𝑎𝑛𝑡𝑎𝑦𝑎 𝑘𝑜𝑛𝑑𝑢𝑦𝑠𝑎, 0, 𝑑.𝑑.

104 KISITLAR ve AMAÇ FONKSİYONU
𝑗=1 𝑛 𝑎 𝑗 𝑥 𝑗 ≤𝑏 Çantaya konulacak eşyalar, çantanın kapasitesini aşmayacak. max 𝑍= 𝑗=1 𝑛 𝑐 𝑗 𝑥 𝑗 Bu problemin amacı, toplam faydalılığı maksimize etmektir.

105 ÖRNEK: Bir şirket, kapasitesi 700 ton olan bir yük gemisine sahiptir. Bu şirket belli bir rota ile farklı ağırlıklara sahip konteynerler taşımaktadır. Belli bir seyahat esnasında bu şirket aşağıdaki konteynerlerin bazılarını taşımalıdır:

106 Şirket, taşınacak yükü maksimize edecek yükleme şeklini belirlemelidir.
Bu problem 0-1 sırt çantası problemi olarak formüle edile bilir.

107 DEĞİŞKENLER ve KISITLAR:
𝑥 𝑗 = 1 , 𝑒ğ𝑒𝑟 𝑗.𝑘𝑜𝑛𝑡𝑒𝑦𝑛𝑒𝑟 𝑡𝑎şı𝑛𝑎𝑐𝑎𝑘𝑠𝑎, 0, 𝑑.𝑑. Toplam yük geminin kapasitesini aşmayacak. 100 𝑥 𝑥 𝑥 𝑥 𝑥 𝑥 𝑥 𝑥 𝑥 𝑥 10 ≤700 Burada 𝑎 𝑗 = 𝑐 𝑗 dir.

108 AMAÇ FONKSİYONU: Bu yük gemisinin taşıyacağı yükün maksimize edilmesidir. 𝑧= 𝑗=1 10 𝑐 𝑗 𝑥 𝑗 =100 𝑥 𝑥 𝑥 𝑥 𝑥 𝑥 𝑥 𝑥 𝑥 𝑥 10

109 Problemin GAMS Kodu $title The 0-1 Knapsack Problem SET J set of containers /c1*c10/; PARAMETERS C(J) benefit of container J /c1 100 c2 155 c3 50 c4 112 c5 70 c6 80 c7 60 c8 118 c9 110 c10 55/ ;

110 GAMS Kodu A(J) weight of ontainer J; A(J) = C(J); SCALAR B maximum capacity of the freighter /700/; Variables z objective function variable x(J) binary choice; BINARY VARIABLE x; EQUATIONS COST objective function equation CAPA is the loading of the freighter;

111 GAMS Kodu COST .. z =E= SUM(J, C(J)*x(J)); CAPA .. SUM(J, A(J)*x(J)) =L= B; MODEL knapsack /ALL/; SOLVE knapsack USING mip MAXIMIZING z; Sonuç: Z=700 Seçilen konteynerler: 𝐶 1 , 𝐶 3 , 𝐶 4 , 𝐶 5 , 𝐶 6 , 𝐶 7 , 𝐶 8 , 𝐶 9 .

112 AKADEMİ PROBLEMİ. Akademi problemini örnek üzerinde göstermeğe çalışalım: Varsayalım ki, mühendislik akademisinin m sayıda üyesi var ve J aday kümesinden r sayıda yeni üye seçilmesi gerekiyor. Bu amaçla her gerçek üyeye en az 0, en fazla r sayıda adayı desteklemek fırsatı verilmiştir. En çok destek alan r aday akademiye alınacaktır. Seçim iki aşamalı yapılıyor.

113 AKADEMİ PROBLEMİ. Final seçim sürecinin öncesinde her adayın destek derecesini öğrenmek için ön test yapılmaktadır Bu süreçte her gerçek üye P listesinde en fazla s adaya bir skor ataya bilir, fakat her kese de skor atamak zorunda değil. Her adayın sadece aldığı skorların toplamı bilinmektedir. Problem, test sonuçlarına dayanarak her adayın minimal ve maksimal sayıdaki final destek miktarlarının belirlenmesinden oluşmaktadır. Böyle ki, bir adaya skor atanması, bu adayın gerçek üye tarafından desteklenmesi anlamına gelir. Problem aşağıdaki gibi formüle edilir:

114 VERİLER: 𝐼 − 𝑀üℎ𝑒𝑛𝑑𝑖𝑠𝑙𝑖𝑘 𝑎𝑘𝑎𝑑𝑒𝑚𝑖𝑠𝑖𝑛𝑑𝑒𝑘𝑖 𝑔𝑒𝑟ç𝑒𝑘 ü𝑦𝑒 𝑠𝑎𝑦ı𝑠ı,
𝐽−𝑎𝑑𝑎𝑦 𝑠𝑎𝑦ı𝑠ı, 𝑆− 𝑎𝑡𝑎𝑛𝑎 𝑏𝑖𝑙𝑒𝑐𝑒𝑘 𝑓𝑎𝑟𝑘𝑙ı 𝑠𝑘𝑜𝑟 𝑚𝑖𝑘𝑡𝑎𝑟ı, 𝑝 𝑠 −𝑠. 𝑠𝑘𝑜𝑟, 𝑐 𝑗 −𝑗. 𝑎𝑑𝑎𝑦ı𝑛 𝑡𝑜𝑝𝑙𝑎𝑚 𝑠𝑘𝑜𝑟𝑢.

115 KARAR DEĞİŞKENİ: 𝑥 𝑖𝑗𝑠 = 1 , 𝑒ğ𝑒𝑟 𝑖.ü𝑦𝑒 𝑗. 𝑎𝑑𝑎𝑦𝑎 𝑝 𝑠 𝑠𝑘𝑜𝑟𝑢 𝑎𝑡𝑎𝑟𝑠𝑎, 0, 𝑑.𝑑.

116 KISITLAR: 𝑠=1 𝑆 𝑥 𝑖𝑗𝑠 ≤1 ∀𝑖=1,…𝐼 , ∀𝑗=1,…𝐽
 Her üye, her adaya en fazla 1 skor ataya bilir.   𝑠=1 𝑆 𝑥 𝑖𝑗𝑠 ≤ ∀𝑖=1,…𝐼 , ∀𝑗=1,…𝐽 Her üye, 𝑝 𝑠 skorunu en fazla 1 adaya ataya bilir. 𝑗=1 𝐽 𝑥 𝑖𝑗𝑠 ≤ ∀𝑖=1,…𝐼 , ∀𝑠=1,…𝑆

117 KISITLAR Her adayın atayabileceği toplam skor, önceden verilmiş olan sayıya eşit olmalıdır. 𝑖=1 𝐼 𝑠=1 𝑆 𝑝 𝑠 𝑥 𝑖𝑗𝑠 = 𝑐 𝑗 ∀𝑗=1,…𝐽

118 AMAÇ FONKSİYONU: Her aday için, aldığı destek sayısının hem minimum, hem de maksimum değerinin bulunması gerekiyor. 𝑧= 𝑖=1 𝐼 𝑠=1 𝑆 𝑥 𝑖𝑗𝑠 ∀𝑗=1,…𝐽  𝑧 →𝑚𝑖𝑛 𝑧 →𝑚𝑎𝑥

119 ÖRNEK: Varsayalım ki, mühendislik akademisinin 20 üyesi var. J=8 aday içerisinden r=4 adayın seçilmesi gerekiyor. Skorların (p1= 10 , p2= 8 , p3= 3 , p4= 1) olduğunu, dolayısı ile s=4 olduğu verilmektedir. Her adayın aldığı skor, tabloda verilmiştir:

120 ÖRNEK Varsayalım ki, atamalar aşağıdaki şekilde gerçekleşmiştir (bu bilgi bize konuyu anlamak için verilmiş, normalde bu bilgiye sahip değiliz.) :

121 ÖRNEK

122 Problemin GAMS Kodu $title the academy problem SETS I number of actual members /1*20/ J number of candidates /1*8/ DIN(J) S the number of different scores that can be assigned /1*4/; ALIAS(J,J1); PARAMETER P(S) the $s$-th score / /;

123 GAMS Kodu TABLE N(I,J) score assigned to candidate J by actual member I ;

124 GAMS Kodu SCALARS zmin, zmax; PARAMETER C(J) total score obtained by candidate J; C(J)=sum(I,N(I,J)); Variables z function to be optimized; BINARY VARIABLE x(I,J,S) if member I assigns score P(S) to candidate J takes on value 1. Otherwise 0. ; EQUATIONS OBJ function to be optimized L1(I,J) each member can assign at most one score to each candidate L2(I,S) each member I can assign score S to at most one candidate TOTALSCORE(J) totalscore given;

125 GAMS Kodu OBJ(J)$DIN(J)..z =e= sum(I,sum(S,x(I,J,S))) ; L1(I,J)..sum(S,x(I,J,S))=l=1; L2(I,S)..sum(J,x(I,J,S))=l=1; TOTALSCORE(J)..sum(I,sum(S,P(S)*x(I,J,S)))=e=C(J); ** The model includes all the constraints. MODEL academy /ALL/; ** The output file is open. file aux /academy.out/; put aux; ** First of all, the empty set is assigned to the dynamic set. DIN(J)=NO; loop(J1, DIN(J1)=YES;

126 GAMS Kodu Solve academy using mip Minimizing z; zmin=z.l; Solve academy using mip Maximizing z; zmax=z.l; put "J=",J1.tl:3, " zmin= ",zmin:3:0," zmax= ", zmax:3:0/; DIN(J1)=NO; );

127 Sonuç: J=1 Z min=8 Z max =20 J=2 Z min=3 Z max =14 J=3 Z min=15 Z max =20 J=4 Z min=2 Z max =13 J=5 Z min=15 Z max =20 J=6 Z min=2 Z max =18 J=7 Z min=3 Z max =20 J=8 Z min=1 Z max =8

128 Sonuç: 8 aday için minimum ve maksimum destek sayıları aşağıdaki tabloda verilmiştir:

129 ZAMAN DERS ÇİZELGELEME PROBLEMİ
Bu tür problemler gerçek hayatta sık kullanılan problemlerdir. Okullarda, üniversitelerde ders çizelgeleme, sınav çizelgelerinin oluşturulması, hastanelerde hemşirelerin nöbet çizelgelerinin oluşturulması, havacılıkta pilotların uçuş çizelgelerinin oluşturulması ve bu gibi problemler, bu problemler sınıfına aittir. Problemin matematiksel modelini oluşturalım:

130 Veriler: 𝑛ℎ – ders saatlerinin mevcut miktarı, 𝑛𝑐 – derslik sayısı,
𝑛𝑠 – ders sayısı, 𝑛𝑖 – 𝑖. Öğretim üyesi tarafından verilen ders miktarı, 𝑛𝑏 – akademik blok sayısı, Ω – verilecek tüm dersler kümesi, Ω 𝑖 – 𝑖. Öğretim üyesi tarafından verilecek dersler kümesi,

131 VERİLER (devamı): ∆ 𝑏 - b akademik blokundaki dersler kümesi,
𝑠− ders indisi, 𝑐− derslik indisi, ℎ− saat indisi, 𝑖− öğretim üyesi indisi, 𝑏− blok indisini gösterir.

132 KARAR DEĞİŞKENİ: 𝑣 𝑠𝑐ℎ = 1, 𝑒ğ𝑒𝑟 𝑠 𝑑𝑒𝑟𝑠𝑖, 𝑐 𝑑𝑒𝑟𝑙𝑖ğ𝑖𝑛𝑑𝑒 ℎ 𝑠𝑎𝑎𝑡𝑡𝑒 𝑣𝑒𝑟𝑖𝑙𝑖𝑟𝑠𝑒 0, 𝑑𝑖ğ𝑒𝑟 𝑑𝑢𝑟𝑢𝑚𝑑𝑎

133 KISITLAR: Her öğretim üyesi kendine ait tüm dersleri veriyor.
𝑠∈ Ω 𝑖 𝑐=1 𝑛 𝑐 ℎ=1 𝑛 ℎ 𝑣 𝑠,𝑐,ℎ = 𝑛 𝑖 (∀ 𝑖 için) Her öğretim üyesi her bir saatte en fazla bir ders vere bilir. (Bu kısıt her öğretim üyesi ve her saat için yazılacak). 𝑠∈ Ω 𝑖 𝑐=1 𝑛 𝑐 𝑣(𝑠,𝑐,ℎ) ≤ (∀ℎ , ∀𝑖 𝑖ç𝑖𝑛)

134 KISITLAR Her ders verilecek ve sadece 1 defa verilecek.
𝑐=1 𝑛 𝑐 ℎ=1 𝑛 ℎ 𝑣 𝑠,𝑐,ℎ = (∀𝑠 için) Her derslik ve her ders saatinde en fazla 1 ders verile bilir. 𝑠∈Ω 𝑣(𝑠,𝑐,ℎ)≤ (∀𝑐 𝑣𝑒 ∀ℎ 𝑖ç𝑖𝑛) Her bir saatte her bir akademik blokun en fazla 1 dersi verile bilir. 𝑠∈ ∆ 𝑏 𝑐=1 𝑛 𝑐 𝑣(𝑠,𝑐,ℎ) ≤ (∀ℎ 𝑣𝑒 ∀𝑏 𝑖ç𝑖𝑛)

135 AMAÇ FONKSİYONU Olabildiğine kompakt bir çizelgeleme yapılması öngörülüyor. Yani, mümkün derecede az sayıda derslik ve az sayıda ders saati kullanılmasını hedefleyen bir amaç fonksiyonu tasarlanmıştır. 𝑚𝑖𝑛 𝑧= 𝑠∈Ω 𝑐=1 𝑛 𝑐 ℎ=1 𝑛 ℎ 𝑐+ℎ 𝑣 𝑠,𝑐,ℎ   Amaç fonksiyonunda (𝑐+ℎ) bir ceza katsayısı rolünü oynuyor. Problem minimizasyon problemi olduğu için 𝑐+ℎ büyüdükçe model onu sıfırlamağa çalışacaktır.

136 ÖRNEK: 5 ders saati, (h=1,2,3,4,5) 8 tane ders, (s=1,2,3,4,5,6,7,8)
3 derslik , (c= 1,2,3) 5 ders saati, (h=1,2,3,4,5) 8 tane ders, (s=1,2,3,4,5,6,7,8) 2 öğretim üyesi, (i=1,2) 2 ders bloku, (b=1,2) olsun.

137 ÖRNEK Tüm derslerin kümesi: Ω= 𝑠 1 , 𝑠 2 , 𝑠 3 , 𝑠 4 , 𝑠 5 , 𝑠 6 , 𝑠 7 , 𝑠 8 1. Öğretim üyesinin ders kümesi: : Ω 1 = 𝑠 1 , 𝑠 2 , 𝑠 8 2. Öğretim üyesinin ders kümesi: : Ω 2 = 𝑠 3 , 𝑠 4 , 𝑠 5 , 𝑠 6 , 𝑠 7 1. Akademik blokun dersleri: ∆ 1= 𝑠 1 , 𝑠 2 , 𝑠 3 , 𝑠 4 2. Akademik blokun dersleri: ∆ 1= 𝑠 5 , 𝑠 6 , 𝑠 7 , 𝑠 8 Görüldüğü gibi Ω 1 ∪ Ω 2 =Ω 𝑣𝑒 Ω 1 ∩ Ω 2 =∅ ∆ 1 ∪ ∆ 2 =Ω 𝑣𝑒 ∆ 1 ∩ ∆ 2 =∅

138 Çözüm: Problemin çözümü aşağıdaki tabloda verilmiştir. H=1 H=2 H=3 H=4
C=1 𝑆 7 𝑆 6 𝑆 3 𝑆 4 𝑆 5 C=2 𝑆 2 𝑆 1 𝑆 8 - C=3

139 ÇÖZÜM Öğretim üyesinin programı: H=1 H=2 H=3 H=4 H=5 C=1 - C=2 𝑆 2 𝑆 1
𝑆 8 C=3

140 ÇÖZÜM 2. öğretim üyesinin programı: H=1 H=2 H=3 H=4 H=5 C=1 𝑆 7 𝑆 6
𝑆 3 𝑆 4 𝑆 5 C=2 - C=3

141 ÇÖZÜM Akademik bloğun çizelgesi: H=1 H=2 H=3 H=4 H=5 C=1 - 𝑆 3 𝑆 4 C=2
𝑆 2 𝑆 1 C=3

142 ÇÖZÜM 2. Akademik bloğun çizelgesi: H=1 H=2 H=3 H=4 H=5 C=1 𝑆 7 𝑆 6 -
𝑆 5 C=2 𝑆 8 C=3

143 GAMS kodu Bu verilere dayanarak çizelgelemeyi, modeli GAMS de çözerek oluşturalım. Bunun için GAMS kodunu yazalım:

144 GAMS Kodu SETS C classrooms / c1*c3/ H hours / h1*h5/ S subjects /s1*s8/ I instructors /i1*i2/ B blocks /b1,b2/ SI(S,I) maps subjects and instructors /(s1,s2,s8).i1,(s3*s7).i2/ SB(S,B) maps subjects and blocks / (s1*s4).b1,(s5*s8).b2/; VARIABLES Z ; BINARY VARIABLE 𝑣 𝑆,𝐶,𝐻 ; EQUATIONS COST compact the timetable Const1 (I) every instructor teaches all his (her) subjects Const2 (H,I) every instructor teaches at most 1 subject every hour Const3 (S) every subject is taught once

145 GAMS Kodu Const4 (C,H) in every classroom-hour pair at most 1 subject is taught Const5 (H,B) at every hour at most 1 subject of any academic block is taught; COST.. Z =e= SUM( (S,C,H),(ord(C)+ord(H))*v(S,C,H)) ; Const1 (I) .. SUM( (S,C,H)$SI(S,I),v (S,C,H)) =e= SUM(S$SI(S,I),1); Const2 (H,I) .. SUM( (S,C)$SI(S,I),v (S,C,H)) =l= 1; Const3 (S) .. SUM( (C,H),v (S,C,H)) =l= 1; Const4 (C,H) .. SUM( (S),v (S,C,H)) =l= 1; Const5 (H,B) .. SUM( (S,C)$SB(S,B),v (S,C,H)) =l= 1;

146 GAMS Kodu MODEL timetable /ALL/; SOLVE timetable USİNG MIP MİNİMİZİNG Z ; DISPLAY v.L;

147 ÇÖZÜM Problemin çözümü aşağıdaki tabloda verilmiştir:

148 ÇÖZÜM Yani, 3. Dersliğe ders atanmıyor.
derslikte 1. saatte s7 dersi, 2. saatte S6 dersi, 3. saatte S3 dersi,4. saatte S4 dersi, 5. saatte S5 dersi yapılacaktır; derslikte 1. saatte s2 dersi, 2. saatte S1 dersi, 3. saatte S8 dersi yapılacaktır;

149

150


"GAMS GAMS de karakterlerin büyük, ya da küçük olması önemli değildir;" indir ppt

Benzer bir sunumlar


Google Reklamları