Simülasyon; gerçek dünyanın belli bir bölümünün modelinin tasarlanması işlemidir. Daha sonra gerçek sistemin davranışlarını tanımlamak, açıklamak ve önceden tahmin etmek için, modelle ilgili deneyler yapmak gerekir. Yöneticilerin ve tasarımcıların hedefi; yüksek performansı en düşük maliyetle elde etmektir. Bir sistem tasarlanırken, modelleme ve simülasyon, gerçek dünyadaki mühendislik kararları için iyi bir hazırlıktır. Simülasyon, sistemin performansının ve güvenilirliğinin anlaşılması ve optimum kılınması için kullanıldığı gibi tasarımın doğruluğunun test edilmesinde de kullanılır. Örneğin uçak tasarımcıları, önerilen tasarımın ölçekli bir modelini kurduklarında ve bu modeli dışarıda, rüzgar tünelinde test ettiklerinde, bu modelin, uçakla ilgili her ayrıntıyı kapsamasını ve rüzgar tünelinin de uçuş şartlarını yeterli ve uygun olarak yansıtmasını isterler.
Tasarımda simülasyon önemlidir çünkü; ortaya çıkan
hataların onarım masrafı, ürünün hayat eğrisi boyunca artmaktadır. Tasarımcılar
önce, gerçek sistemin belli bir bölümü ile ilgilenirler. (Örneğin bir uçak
ve onun havadaki davranışları) sonra, gerçek sistemin bu kısmını çok
daha kolay kullanılabilecek bir araca çevirirler. (Model kurarlar) ve daha
sonra modelde çeşitli denemeler yaparlar. (Rüzgar tünelinde test etmek gibi)
Sonuçları tekrar sistemde kullandıktan sonra sistemle ilgili kararı
verirler. Eğer ilgili açılardan
dönüşüm yanlışsız ise, model ve yapılan denemelerin sonuçları gerçeği
yansıtır. Fakat dönüşümler hiçbir zaman tamamlanmaz. Örneğin rüzgar tüneli
için hazırlanan model, sağlam bir ağaçtan yapılmış olabilir, bu modelle
tasarlanan uçağın şeklidir. Ağırlık dağılımı, dayanıklılığı, yapısı
ve güç sistemi tasarlanmaz. Ancak bunların bir kısmı gerçekten modelle
ilgili olabilir. Modelin gerçeğe
oldukça yakın kurmak için, modele bir çok detay eklenmesi ve bunların gerçeği
yansıtması için dikkatli kontroller yapılması gerekir. Örneğin, model,
fiziksel boyutların ölçülmesi için kurulmuşsa, modelde mikroskobik perçinler
ve çok ince metal folyonun kullanılması gerekir. Ancak bu durumda model gerçek
uçağın esnekliğini ve sağlamlığını yansıtmaz. Yani tüm fiziksel özellikler
aynı yolla ölçülmez. Yeni Boeing 777’ler tamamen bilgisayarlı iş
istasyonlarında tasarlanmıştır. Uçaklar, başlangıçtan itibaren, CAD/CAM
sistemleri kullanılarak dizayn edilmiştir. Bu sistemler kapsamlı bilgisayar
simülasyonlarında model olarak kullanılmışlardır. Böylece, aynı veri
tabanını kullanarak tasarım ve denemeler birlikte yapılmıştır. Yani tasarım
tamamen bittiğinde, bilgisayar testleri de bitmiştir. Böylece uçak CAD/CAM
veri tabanına göre yapılmış ve beklenildiği gibi başarılı bir şekilde
uçmuştur.
Simülasyonun bir diğer önemli uygulama alanı ise;
“görsel çevreler” yaratılmasıdır. Ünlü televizyon dizisi Star
Trek’te olduğu gibi, simülasyon aracılığıyla, kullanıcıların “Eğer
gerçekten var olsaydı ne olurdu?” sorularının cevapları bulunabilir. Bu
tip simülasyonlar günümüzde, savaş durumları için, askeri personelin eğitiminde
kullanılmaktadır. Böylece, gerçek uçak ya da tank kullanımının yaratacağı
yüksek maliyetin önüne geçilmektedir.
Sistem simülasyonu, gerçek bir sisteme ait bir işlemin
davranışlarını canlandırmaktadır. Örneğin; bir bankanın günlük işlemleri,
bir fabrikanın belli bir zaman içindeki stok hareketleri, bir fabrikadaki
montaj hattı çalışması ya da bir hastanede personel ataması gibi işlemlerin
sonuçları simülasyonla önceden belirlenebilir. Uzmanlar, geniş çaplı
matematiksel modeller kurmak yerine, var olan simülasyon yazılımlarını
kullanarak, gerçek bir sistemle ilgili bir işlemi modelleyebilmekte ve sonuçlarını
analiz edebilmektedir. Hatta bu işi yapmak için uzman olmaya da gerek yoktur,
herhangi bir yönetici kolaylıkla gerçekleştirebilir.
Simülasyon, incelenen sistemle ilgili bilgileri
veren ve bilgisayar programı tarafından sunulan modelin bir uygulamasıdır.
Model analizinde simülasyon yaklaşımı, analitik yaklaşımın karşısında
yer almaktadır. Bu yöntemin daha güvenilir olmasına rağmen simülasyon daha
fazla esneklik ve kolaylık sağlar. Bir model, çeşitli zamanlarda meydana
gelen ve tüm sistemi etkileyen olaylardan meydana gelir. Herhangi bir olayın
gerçekleştiği zaman noktası rasgele olduğu için, simülasyon, sistem
bilgisi dışında başka bir bilgiye ihtiyaç duymaz. Olaylar kendiliğinden
ortay çıktığı ve tek tek oluştuğu için, iki olay arasında hiçbir olay
meydana gelmez.
Şu senaryo üzerinde düşünelim: siz ATM ağları
için yeni bir switch tasarımcısısınız. Ürününüzün başarılı olacağını
garanti etmek için, ürününüzün makul bir maliyetle mümkün olan en yüksek
performansı önemlidir. Bir switch
içine ne kadar hafıza yerleştirilebilir? Switch içinde kullanılması
gereken donanım kombinasyonlarının en iyisi hangisidir? Bunlar cevap vermek
zorunda olduğunuz sorulardan bazılarıdır.
Son dönemlerde çok popüler olan simülasyon teknolojisiyle, birçok simülasyon yazılımı gerçekleştirilmiş ve oluşturulan yapay dünyalar yardımıyla “what-if” senaryolarının güvenle test edilmesi mümkün hale gelmiştir.
Genel anlamda simülasyon; kusursuz olarak işleyen bir taklitten yola çıkarak gerçek
dünyada ne olabileceğini bulma eğilimidir. Yöneylem araştırmalarında
taklitler, simüle edilmiş gerçekliğin bilgisayar modelidir. PC’lerdeki uçuş
simülasyonu; uçuşun çeşitli açılarının bilgisayar modelinden başka bir
şey değildir. Kumanda paneli ekrandadır ve pilot her şeyi kokpitten yani
sandalyesinden takip edebilir.
Şekil-1
Durum (state): Stok düzeyi ya da kuyrukta bekleyen iş sayısı
gibi nitelikleri kaarkterize eden değişken.
Olay (event): meydana geldiği anda, sistemin durumunu değiştirebilecek
oluşum (Bir müşterinin gelmesi ya da bir işe başlanması gibi)
Varlık (entity): Sistemin içinde yer alan bir nesne (fabrikaya
gelen bir sipariş) ya da olayla ortaya çıkan bir varlık (müşteri gelmesi)
Kuyruk (queue): Kuyruk, sadece kişilerin oluşturduğu fiziki
kuyruk değildir, görev listesi, sevkıyat bekleyen mamuller de kuyruk
olabilir.
Programlama (scheduling): Yeni bir olayı, var olanlar arasına
yerleştirme.
Rasgele değişken (random variable): Kesin olmayan bir niteliği
temsil eder. (İnen iki uçak arasında geçen zaman –interarrival time- gibi)
Yapay rasgele değişken (random variate): Yapay olarak belirlenmiş
rasgele değşken.
Dağılım (distribution): Rasgele değişkenin olasılık özelliklerini
belirleyen matematiksel kanun.
Neden modeller kullanılır?
Bir simülatörü uçurmak, gerçek
bir uçağı uçurmaktan daha güvenli ve daha ucuzdur.
Bu nedenle modeller genellikle ticari ve askeri sanayilerde kullanılır.
Gerçek sistemlerle deney yapmak pahalı, tehlikeli ve genellikle de imkansızdır.
Modeller, gerçeğe yeterince uygundur ve modellerle deneye yapmak paradan
tasarruf sağlar ve aynı zamanda insanların yaralanmasına engel olur.
Simülasyonlar ne zaman kullanılır?
Araçların giriş çıkış yaptığı bir benzin
istasyonu gibi (dinamik sistem) zamanla değişen ve rasgelelik (hiç kimse bir
sonraki aracın her zaman geleceğini tahmin edemez) gerektiren sistemler, simülasyon
için iyi adaylardır. Karmaşık dinamik sistemleri simüle etmek için, bir çok
basitleştirmeler gerektirir.
Şekil-2 bir simülasyon modelini oluşturma işleminin
sistematiğini gösterir. İşlem birkaç adımdan oluşur ve tatmin edici bir
model elde edilene kadar bu adımlar tekrarlanır. Öncelikle kavramsal bir
model kurmak için, üzerinde çalışılan sistem ve sistem girdileri
modellenir. Bu kavramsal model bilgisayar ortamına aktarılır ve her aşamada
sistemde bazı küçük değişikliklere yol açacak, basitleştirici varsayımlar
yapılır. Sistem girdileri, girdilerin matematiksel gösterimlerini oluşturmak
için analiz edilir ve bunlar bilgisayar simülasyonunu destekler. Simülasyonun
sonuçları, gerçek sistemin sonuçları ile karşılaştırılır. Eğer bir
farklılık varsa, simülasyon modelinde veya sistem girdilerinde düzeltmeler
yapılır ve bu işlem gerçeğe uygun bir model kurulana kadar tekrarlanır.
Şekil-2
Simülasyon
birbiri ile yakın ilişkili ve tekrarlanır bileşimlerden oluşmuştur:
1.
Model
kurma
2.
Modeli
uygulama
3.
Uygulama
analizi.
Problemin Formülasyonu:
Gerçek sistemin simülasyon modelini kurmanın ilk aşaması, sistemle
ilgili problemin tanımlanmasıdır.Kontrol edilebilir ve edilemez girdiler
belirlenir. Değişken sistemin performans ölçümleri çıkarılır.
Girdilerle performans ölçümü arasındaki ilişkiyi kurmak için bir başlangıç
modeli geliştirilir.
Verilerin toplanması ve analizi:
İkinci aşama sistemle ilgili verileri toplamaktır. Veriler sembolik veya sayısal
yapıda olabilir. Genellikle sayısal veriler, fiziksel veya beşeri şekilde
toplanır. Veri olmadan da modeller
oluşturulabilir. Ancak bu durumda modelin doğruluğu açısından sorunlar
ortaya çıkar. Böyle modellerde tahmin edilen parametreler kullanılır. Amaç
herhangi bir modeli açık şekilde ifade etmek olduğundan, model çoğunlukla
matematiksel olarak ifade edilir.
Simülasyon modelinin geliştirilmesi:
Veriler toplandıktan sonraki aşama; simülasyon modelinin geliştirilmesidir.
Sistemin yeterince doğru anlaşılmasından sonra, kavramsal, mantıklı bir
model geliştirmek simülasyon analizinin en zor adımlarından biridir.
Modeli doğrulama, onaylama ve kalibrasyon:
Genelde, doğrulama (validation), modelin iç
istikrarı üzerinde odaklanır. Doğrulama, modelle gerçek arasındaki
uygunlukla ilgilidir. Doğrulama, “Doğru sistemle mi ilgileniyoruz?”
sorusunun cevabıyla bağlantılıdır. Öte yandan, onaylama (verification);
“sistemi doğru oluşturuyor muyuz?” sorusuna yanıt araştırır. Onaylama,
simülasyon modelinin, modele uyup uymadığını kontrol eder. Doğrulama ise,
modelin gerçeğe uyup uymadığını kontrol eder. Kalibrasyonun (calibration)
işlevi, simülasyonun ürettiği bilgilerin gerçek bilgiye uyup uymadığını
kontrol etmektir.
Girdi ve çıktı analizi: Kesikli-olaylı
simülasyon modelleri genelde, incelenmekte olan sistemin olasılık yapısını
taklit eden stokastik elemanlar içerir. Başarılı bir girdi (input)
modellemesi, girdi modeli ile olasılıklı bir yapıya sahip sistem arasında güçlü
bir uyuşma gerektirir. Bu aşama, dışsal, rasgele veya deterministik girdiler
üzerinde duyarlık hata analizini gerçekleştirir.
Performans değerlendirme ve “What-if”
analizleri: “What-if”
analizleri simülasyon modelinin kalbidir.
Duyarlık tahminlemesi: kullanıcılar,
modelin hangi ilişkilerinin bir anlam taşıdığını anlayabilmek için çeşitli
teknikler kullanarak duyarlık analizleri yaparlar.
Optimizasyon: Geleneksel optimizasyon teknikleri büyük ölçüde
tahminlemelere dayanmaktadır. Duyarlık analizleriyle birlikte, optimizasyon için
günümüzde kullanılan yaklaşımlar, yaklaşık bir çözüm kümesi oluşturmak
için daha çok simülasyonlardan yararlanmaktadır.
Bir Örnek:
Tek görevlinin çalıştığı, tek pompalı bir benzin istasyonu simülasyonu.
Araçların gelişleri ve hizmet alma sürelerinin rasgele olduğunu kabul
edelim. Önce çeşitli değişkenleri
tanımlayalım:
Durum: herhangi bir anda hizmet bekleyen ve hizmet
almış araba sayısı
Olaylar: araçların gelişi, hizmetin başlaması,
hizmetin sona ermesi
Varlıklar: araçlar
Kuyruk: pompanın önündeki araba kuyruğu
Rasgele yapay değişkenler: araçların varışları
arasında geçen süre, hizmet süreleri
Dağılımlar: varışlar arası süre ve hizmet sürelerinin
ikisi için de üstel (exponential) dağılım gösterdiğin varsayalım.
İkinci olarak; her olay için ne yapılacağını belirleyelim. Örneğimiz
için:
Varlığın geliş anında: Bir sonraki gelişi
yarat. Eğer pompa boşsa varlığı hizmetin başlaması için pompaya gönder.
Aksi durumda, kuyruğa ekle.
Servisin başladığı anda: Görevli meşgul duruma
geçer. Bu varlık için hizmetin sonunu programla.
Hizmetin bitiş anında: Görevli boş duruma geçer.
Eğer kuyrukta bekleyen varsa, ilk sıradakini kuyruktan al, hizmetin başlaması
için pompaya gönder.
Hala bazı başlatmalar gereklidir: Örneğin ilk
aracın gelişi.
Son olarak yukarıdakiler, kullanılan programlama diline veya yazılıma
ait kodlara çevrilir.
Program, her değişiklikten önce ve sonra, araç sayısın ve her olayın
süresini kaydeder.
Simülasyonun avantajları model kurmanın avantajlarıdır. Kolayca
kullanılabilen model, planlama ve deneme için çok uygundur. Gerçek ortamda,
zor veya imkansız denemelerden kaçınılabilir. Matematiksel örneklemede de
olduğu gibi gerçek durumun mevcut olması gibi bir zorunluluk yoktur.
Soyutlama ve matematiksel örneklemenin zor işlemlerinden kaçınılır, böylece
çok zor durumlar bile taklit edilebilir. Simülasyon bir defa oluşturulduğunda,
tasarım değişikliklerinin etkilerine göre simülasyonda kolay ve hızlı küçük
değişiklikler yapmak mümkün olur. Aynı zamanda simülasyon sayesinde gözden
kaçan bağlantılar veya düzensiz durumlar da fark edilebilir. Simülasyon
zaman içinde sık sık geliştirilebilir, kullanılabilir veya simülasyon
animasyonlar yapmak için kullanılabilir. Simülasyonlar aynı zamanda eğitim
için de kullanılabilir ya da simülasyon sayesinde belli bir sitem için bazı
sorunları önceden sezme imkanı kazanılır.
Ancak simülasyonun dezavantajları da vardır. Simülasyonlar kesin sonuçlar
vermeyebilir. Genellikle simülasyonlarda bir takım soyutlamaların ve
matematiksel modellerin yapılma zorunluluğu vardır. Bu da hatalara yol açar.
Karmaşık simülasyonlarda bu küçük hatalar çok hızlı bir şekilde ortaya
çıkar. Bu da modelin geçerliliğini sağlamayı zorlaştırır. Diğer bir
dezavantajı da; bazen simülasyondan genel sonuçlar çıkarmak zorlaşır.
Buna bağlı olarak da simülasyon yardımıyla optimum bir çözüm bulmak da
çok zordur.
Avantajları:
·
Analitik
metotlara başvurulmadan birkaç stokastik elemanla karmaşık gerçek sistemler
modellenebilir.
·
Değişik
çalışma koşulları altında mevcut sistemlerin performansları değerlendirilebilir.
·
Alternatif
sistemler ve çalışma politikaları kararlaştırılabilir.
·
Deneysel
ortamlarda daha iyi kontrol imkanı sağlar.
·
Simülasyon
denemeleri kopyalanabilir.
·
Kısa sürede
uzun vadeli etkiler üzerinde çalışma yapmak mümkündür.
·
Simülasyonlar,
istisnalar dahil, mevcut ve potansiyel ve muhtemel durumları yansıtır.
·
Basit
veya karmaşık durumlarda uygulanabilir.
Dezavantajları:
·
Her bir
simülasyon uygulaması sadece gerçek sistem performans tahminine yöneliktir.
Kesin sonuçlar elde etmek için istatistiksel metotlara ihtiyaç vardır.
·
Simülasyon
modellerini geliştirme maliyetli ve zaman alan bir işlemdir.
·
Modelleri
geçerli kılmak genelde zordur.
·
Geniş
hacimli çıktı verisi ve etkileyici grafikler genellikle varsayımlardaki
problemleri gizleyebilir.
Gizli Tehlikeler:
·
Çalışmaların
amaçlarını tanımlamadan başarısız olunabilir.
·
Detayların
seviyeleri uygun olmayabilir.
·
Sadece
bilgisayar programlamada uygulanamayabilir.
·
Uygun
analitik ve istatistiksel tekniklerin uygulanması başarısız olabilir.
·
Animasyonların
yanlış kullanılma ihtimali vardır.
·
Performansların
yanlış ölçülmesi tehlikesi vardır.
Simülasyon yazılımlarının çok büyük bir bölümü, yeni kullanıcılar için çok zor olabilir. Aşağıdakiler, bugün piyasada bulunan yazılımların bir bölümüdür:
ACSL, APROS, ARTIFEX, Arena, AutoMod, C++SIM, CSIM, Call$im, FluidFlow,
GPSS, Gepasi, JavSim, MJX, MedModel, Mesquite, Multiverse, NETWORK, OPNET,
Modeler, POSES++, Simulat8, Powersim, QUEST, REAL, SHIFT, SIMPLE++, SIMSCRIPT,
SLAM, SMPL, SimBank, SimPlusPlus, TIERRA, Witness and javasim.
Bir yazılımı ideal bir paket yapan çeşitli noktalar vardır. Bu
noktaların bazıları paketlerin (support, reactivity to bug notification,
interface vs), bazıları da kullanıcıların özellikleridir.( kullanıcının
ihtiyaçları, uzmanlık düzeyleri vs) Bu nedenle, hangi yazılım paketinin en
iyi olduğunu sormak genellikle değerlendirme hatasına yol açar.
Asıl sorun; “Bir paket program için, önemli taraflar nelerdir?”
sorusudur. Cevap, uygulama alanlarına göre değişir. Ancak bazı genel
kriterler de vardır: Girdi kolaylığı sağlaması, programlamaya izin vererek
işlem yapması, optimizasyon yeteneği, çıktı kolaylığı sağlaması, eğitim
ve destek olanakları, girdi-çıktı istatistiksel veri analizi yeteneği ve
genellikle maliyet faktörü.
Sizin sorununuz için hangi özelliklerin önemli ve gerekli olduğunu
bilmeniz ve yazılımla ilgili son kararınızı buna dayandırmanız en iyi
sonucu verecektir.