Havuz Problemlerinin Simülasyonu Prof. Dr. E. Murat ESİN Argeritma Teknoloji Geliştirme ve Danışmanlık Hizmetleri San. ve Tic. Ltd. Şti. İşlevsel birimler (operational unit) ile bunlar arasında kütle, enerji ve bilgi taşıyan etkileşim bağlaçlarından (link) meydana gelmiş ve kendi içinde bir bütünlük sağlayan, özel bir amaç için tasarlanarak kurulmuş, herhangi bir birimin varlığı veya bağlaçları değiştirildiğinde amacının dışına çıkan yapılara sistem denir. Sistemler; sistemler teorisi adıyla analiz ve sentez edilir. Bir sistemin yapısal özelliklerini; yani, birimlerin işlevlerini ve bunlar arasında bağlaçlar yoluyla sağlanmış ilişkilerini tanımlayan bir dizi denklem yazılır ve bunların tümüne birden sistemin matematik modeli adı verilir. Bu teoriye göre sistemler ikiye ayrılır; Statik sistemler Kuruluşundan itibaren zamandan bağımsız davranış gösteren sistemlerdir. Rüzgâr, deprem, yük dağılımının değişimi gibi etkiler ile ortaya çıkan hareketlenmeler dışında durağan bir yapı gösteren binalar buna örnektir. Herhangi iki anda ölçülen parametreleri birbirinin aynıdır. Dolayısıyla; statik sistemleri temsil eden matematik modellerinin bünyesinde t zaman değişkeni yer almaz. Dinamik sistemler Kendilerini temsil eden matematik modelde t zaman değişkenine bağlı olarak her bir anda farklı durumlarda bulunurlar. Harekete geçirilmiş bir sarkaç topunun konumu; harekete geçtiği anda başlatılan zamana göre ve elbette başka parametrelere göre hesaplanır. Sistemlerin çoğu dinamiktir. Dinamik sistemin matematik modelinde yer alan zaman değişkeni ortaktır. Herhangi bir andaki durumu hesaplayabilmek için bütün t değişkenlerinin bu zamanı gösterecek şekilde eşit olması gerekir. Sistemde durumun değişmesi için elbette zamandan başka sistem değişkenleri de yer alır. Bunlar; zamana bağlı olarak sistemin işlevini; yani çıkışlarını belirlemede rol oynar. Belirli bir zamanda ortaya çıkacak; sonuç sadece o andaki etkilere değil, aynı zamanda geçmişten kalan birikimlere de bağlıdır. Örneğin, doldurulmakta olan bir kabın içindeki suyun hacmi; sadece seçilen anda ne kadar sıvı konduğuna değil, daha önceden ne kadar sıvının var olduğuna da bağlıdır. Diğer yandan; kabın içindeki sıvının hacmi gibi bir değişkenin değişiminde birden fazla etken değişken varsa, bunların her birisinin etkisini bulup toplam etkiyi hesaplamak gerekir. 1
Dinamik sistemlerde durum değişimi sağlayan bu etkenlerin etkilerini göstermek için yazılan ve sonuçta matematik modeli oluşturan denklem takımı aynı t değişkenine bağlı oldukları için matematikte eş zamanlı denklem takımları (simultane denklem takımları) adını alır. Bu tür denklemleri çözebilmek; yani ortak etkilerinden ortaya çıkacak durumu belirleyebilmek için kullanılan yöntemlerden birisi de üst üste bindirme (süperpozisyon) yöntemidir. Buna göre; sistemde durum değiştiren etkenlerden her birisi; sanki tek etken o imiş gibi ele alınır ve bir durum belirlenir. Sonra sırasıyla diğer etkenler için aynı yol izlenir. Sonuçta; durum değiştiren etkenlerin sayısı kadar durum hesaplanır. Ancak bunlardan hiç birisi gerçek durum değildir. Gerçek durum bunların toplamıdır. Okul kitaplarında -bir zamanlar- yer alan havuz problemleri; bilim (fizik, mühendislik) öğretilirken bu mantığın kavratılabilmesi için son derece etkin bir örnektir. Havuz problemleri yalnız bilimde değil, günlük hayatımızda da birçok etkenin tamamını dikkate alarak karar verebilme yeteneğinin geliştirilmesi açısından da değerlidir. Havuz problemleri Temel olarak belli bir hacme sahip, başlangıçta içinde belli bir miktar su olan bir havuzun; içindeki suyun miktarının değiştirilebilmesi için dolduran veya boşaltan bir dizi vananın zaman zaman açılıp kapatılmasıyla ortaya çıkacak durum değişimini irdeleyen problemlerdir. dv1 dv2 Yandaki şekilde 2 tane doldurma (dv1, dv2) ve iki tane boşaltma vanasına sahip bir havuz görülmektedir. Bunların debileri sırasıyla d1 [hacim/zaman], d2 [hacim/zaman], b1 [hacim/zaman] ve b2 [hacim/zaman] olsun. bv1 bv2 Şimdi örnek uygulamalar yapalım: Havuzun hacmi hh, başlangıçta havuzda bulunan su miktarı bh olarak adlandırılsın. Vana debileri d1 = 3 [hacim/zaman], d2 = 2[hacim/zaman], b1 =4 [hacim/zaman], b2 =2 [hacim/zaman] olsun. Havuz hacmini hh = 50 [hacim], başlangıçtaki su miktarını bh = 10 [hacim] kabul edelim. Uygulama 1: Havuzu dolduran dv1 vanası; t = 10 [zaman] da açılsın ve t = 15 [zaman] da kapatılsın. Havuzun içindeki suyun t 15 anındaki değeri ve bu ana kadarki değişim biçimi ne olur? Vanaların doldurma ya da boşaltma yönündeki etkileri açı bulundukları süre (burada t 15 t 10 ) boyunca debileri kadar su akıtmaktır. 2
Bu süre sonunda dv1 vanasının akıttığı su miktarı; ( t 15 t 10 )*d1 dir. Ancak başlangıçta havuzda bh kadar su bulunduğundan süre sonunda havuzda kadar su olmuş olur. h = ( t 15 t 10 )*d1[zaman*hacim/zaman] + bh [hacim] Dikkat edilirse; bu ifade matematikten bildiğimiz y = a.x + b doğrusal (linear) denkleme benzemektedir. Zaten bu tür dinamik sistemler de doğrusal (linear) sistemler olarak tanımlanır. Görülüyor ki; matematikte gördüğümüz denklemler; aslında doğada bir oluşumun karşılığıdır. Yukarıdaki hacim denklemine dönecek olursak; birim olarak verilen [zaman*hacim/zaman] de ilk zaman süreyi, hacim/zaman ise birim zamanda akan hacmi, yani debiyi göstermektedir. Burada iki zaman sadeleşeceğinden sadece hacim kalır. Başlangıç miktarının birimi de hacim olduğundan elde edilen sonuç hacim olur. Elbette; buradaki zamanlar saniye, dakika, saat, gün hatta yıl gibi herhangi bir zaman birimi olabilir. Yeter ki bütün zamanlar aynı cinsten verilsin. Eğer değillerse; uygun bir ortak zaman birimine çevrilir. Keza; hacim birimleri için de aynı şeyi söylemek mümkündür. Demek ki; işlem sonunda havuzdaki suyun miktarı h kadar oldu. Bu oluş bir anda olmaz. Geçen süre boyunca devam eder. Hesaplamaya geçersek; h = ( t 15 t 10 )*d1[zaman*hacim/zaman] + bh [hacim] = (15-10)*3 + 10 = 15 + 10 = 25 [hacim] bulunur. Değişimin grafiği aşağıdaki şekilde görülmektedir. Hacim 30 20 10 Zaman 0 10 15 Uygulama 2: Şimdi de 10. zamanda dv1 ve dv2 birlikte açılıp kapansın. Süperpozisyon yöntemine göre önce her bir vananın bağımsız etkilerini, sonra da bu etkilerin toplamını bulacağız. 3
Birinci vana h 1 = ( t 15 t 10 )*d1 = (15-10)*3= 15, ikinci vana h 2 = ( t 15 t 10 )*d2 = (15-10)*2 =10 kadar su eklediğine göre, başlangıç hacmini de dikkate alarak; h =h 1 + h 2 + bh = 15 + 10 + 10 = 35 [hacim] buluruz. Aşağıdaki şekle dikkat edilirse koyu mavi alanın diğerlerinin üstüne bindirilerek toplam hacim elde edilmiştir. Hacim 40 30 20 10 Zaman Uygulama 3: 0 10 15 Vanalardan dv1 5. zamanda açılsın 10. zamanda kapanırken, dv2 10. zamanda açılırken 15. zamanda kapansın. Hacimsel değişimin şekli aşağıda görülmektedir. Hacim 40 30 20 10 Zaman 0 5 10 15 Uygulama 4: Bu defa dv1 ve dv2 nin uygulama 3 deki durumlarına karşılık bv1 8. zamanda açılıp 12. zamanda kapansın. Dolduran vanaların hacmi arttırmaya, boşaltanların ise azaltmaya çalıştığını dikkate alır ve ara işlemleri atlarsak; 5-10 zaman aralığında h 1 = 15 [hacim], 10-15 zaman aralığında h 1 = 10 [hacim] artış sağlamaktaydı. Şimdi ise 4-8 zaman aralığında bv1, 4 [hacim/zaman] debi ile suyu azaltmaya çalışacaktır. H 3 = ( t 12 t 8 )*b1 = (12-8)*4= 16 [hacim] 4
Olur. Ancak bunun 4-10 zaman aralığındaki kısmı dv1, 10-12 zaman aralığındaki kısmı dv2 eşliğinde olacaktır. 5-8 zaman aralığında dv1 tek başına 3*3 = 9 [hacim] artışla havuz hacmini 19 [hacim] yapacaktır. Bu andan itibaren 4-10 zaman aralığında dv1 = 2*3 = 6 [hacim] artış sağlarken, bv1 = 2*4 = 8 [hacim] azaltacaktır. Sonuçta 10. zamanda havuz hacmi 19+6-8 = 11 [hacim] olur. Aynı şekilde; 10-12 aralığında dv2, 2*2 = 4 [hacim] artış, db1 ise, 2*4 = 8 [hacim] azaltır. 12. zamanda hacim 17+4-8 = 13 [hacim] olur. 12-15 zaman aralığında ise dv2 tek başına 3*2 = 6 hacim artış sağlayarak havuz hacmini 13+6 = 19 [hacim] e ulaştırır. Havuz hacminin değişimi aşağıdaki şekilde kırmızı çizgi ile gösterilmiştir. Hacim 40 30 20 19 0 5 8 10 12 15 Bu örneklere bakarak sizler de değişik denemelerde bulunabilirsiniz. Daha iyisi bu pakette yer alan PSL dilini kullanmaktır. PSL - Pool Simulation Language (Havuz Simulasyon Dili) Zaman PSL dili havuz problemlerinin simülasyonu için tasarlanmış çok basit birkaç kalıptan oluşur. Bu dilde her satır bir tek işlem komutu için kullanılır. Bir satıra birden fazla komut yazılamaz. Komutların sintaksı birbirine çok benzer. Komut içinde birbirinden : işareti ile ayrılmış ve bitişik yazılan 4 parametre yer alır. İlk parametre zamanı belirler. Eylemin gerçekleştirileceği anı gösterir. Özel bir zaman birimi yoktur. Ancak probleminizde farklı zaman birimleri varsa uygun bir tamsayı olacak şekilde uygun bir tanesine çevrilmelidir. Yazacağınız programda zamana göre sıralama fonksiyonu olmadığından artan sırada olmasını sağlamanız beklenir. Aksi halde bir hata vermez ancak sonuçlar uygunsuz çıkar. İkinci parametre eylemi gerçekleştirecek elemanı belirler. 4 çeşit eleman tanımlanabilir. Bunlar; 1. hk elemanı havuz kapasitesini, 2. bh elemanı başlangıçta havuzda bulunan sıvı miktarını, 3. dv elemanın havuzu doldurmaya katkı sağlayan vana olduğunu, 4. bv elemanın havuzu boşaltmaya katkı sağlayan vana olduğunu gösterir. 10 5
Üçüncü parametre aynı türden elemanları birbirinden ayırabilmek için tamsayı cinsinden verilecek eleman numarasını gösterir. Dördüncü parametre ise elemanın tanımlanan anda göstereceği durum değişkeni için kullanılır. Bu parametre; 1. Eleman hh ise tamsayı olarak havuzun kapasitesini 2. Eleman bh ise tamsayı olarak başlangıçta bulunan sıvı miktarını, 3. Eleman dv veya bv ise bu durumda 3 farklı durum söz konusudur; a. Tamsayı girilirse; o vananın bundan sonraki debisini, b. a girilirse bu andan itibaren açık olacağını, c. k girilirse vananın kapatılacağını gösterir. Program yazmak için özel bir editör yoktur. Doğrudan yazabileceğiniz gibi, text dosyası hazırlamak için kullanılacak notepad veya notepad++ gibi programlar kullanılır. Programınızı böyle bir editörde hazırladıktan sonra kopyalayıp, program girişi alanına yapıştırmanız, ardından Çalıştır butonuna tıklamanız yeterlidir. Kullanım hakkında fikir vermek üzere ekranın en solunda yer alan program örneğini bir başlangıç olmak üzere kopyalayıp yapıştırarak deneyebilirsiniz. Programınızı girdikten sonra Çalıştır butonuna tıklayarak simülasyon sonucunu grafik olarak görebilirsiniz. Bu grafikte mavi dolgu alan gerçekleşen hacim değişimlerini, siyah çizgi grafik ise; havuz kapasitesi kısıtı olmasaydı gerçekleşecek değişimi göstermektedir. Programın kullanıcı ekranı aşağıdaki şekilde görülmektedir. 6
Uygulamaların PSL ile denenmesi Program çalıştırıldığında ekranın üst sırasında yer alan menüde; Yeni, Çalıştır, Kapat ve Havuz Problemleri ve PSL seçenekleri görülmektedir. Alt sırada sağda ise Örnek başlığıyla verilen program listesi; hem yazım için bir klavuz, hem de ilk uygulamanız için yerleştirilmiştir. Başlangıç için; bu listeyi seçerek sağındaki Program alanına sürükleyebilirsiniz. Daha sonra Çalıştır butonuna tıkladığınızda aşağıdaki ekran görüntüsü oluşacaktır. Örnek 1: Örnek programın denenmesi 0:hh:1:200 0:dv:1:10 0:dv:2:10 10:bv:1:5 15:bv:1:a 20:dv:2:a 20:bv:1:k 25:dv:1:k 30:dv:2:k 35:bv:1:a 45:bv:1:k Ekranda görülen kalın siyah çizgi; herhangi bir kısıtlama olmaksızın vana hareketlerinin etkisini, mavi alan ise; havuz kapasitesi dikkate alındığında gerçekleşecek durumu göstermektedir. Kırmızı çizgi ise; havuz kapasitesini belirtmektedir. İsterseniz yeni bir program yazarak ya da mevcut programda değişiklik yaparak denemelerinize devam edebilirsiniz. Örnek 2: Bir önceki uygulamada havuz kapasitesi değiştirilerek yeniden simule edilmesi 0:hh:1:250 0:dv:1:10 0:dv:2:10 10:bv:1:5 15:bv:1:a 20:dv:2:a 20:bv:1:k 25:dv:1:k 30:dv:2:k 35:bv:1:a 45:bv:1:k 7
Örnek 3: 0:hh:1:150 0:dv:1:10 0:dv:2:10 10:bv:1:20 15:bv:1:a 20:dv:2:a 20:bv:1:k 25:dv:1:k 30:dv:2:k 35:bv:1:a 45:bv:1:k 50:dv:1:a 67:dv:1:k Örnek 4: 0:hh:1:150 0:dv:1:10 0:dv:2:10 10:bv:1:25 15:bv:1:a 20:dv:2:a 20:bv:1:k 25:dv:1:k 30:dv:2:k 35:bv:1:a 45:bv:1:k 50:dv:1:a 67:dv:1:k Şimdi de konunun esasları anlatılırken verilen örneklerin programlarını ve ekran çıktılarını deneyebilirsiniz. Örnek 5. Uygulama 1 in simülatör için PSL kodları ve ekran görüntüsü. 0:hh:1:50 0:dv:1:3 10:dv:1:a 15:dv:1:k 8
Örnek 6. 0:hh:1:50 0:dv:1:3 0:dv:2:2 10:dv:1:a 10:dv:2:a 15:dv:1:k 15:dv:2:k Örnek 7. 0:hh:1:50 0:dv:1:3 0:dv:2:2 10:dv:1:k 10:dv:2:a 15:dv:2:k Örnek 8: 0:hh:1:50 0:dv:1:12 0:dv:2:8 0:bv:1:16 8:bv:1:a 10:dv:1:k 10:dv:2:a 12:bv:1:k 15:dv:2:k Örnekleri değiştirerek ve hayal gücünüzü kullanarak yeni problemler oluşturabilirsiniz. 9