optimizasyon ve kararlı tasarım

Transkript

optimizasyon ve kararlı tasarım
OPTİMİZASYON VE KARARLI TASARIM
(modeFRONTIER)
Konuşmacı: Mehmet Ata Bodur
Yer: Atılım Üniversitesi Cengiz Yenerim Konferans Salonu
Tarih: 23.03.2009
Prof. Dr. Bilgin Kaftanoğlu: Optimizasyon ve Kararlı Tasarım konusunda
modeFRONTIER programını Mehmet Ata Bodur tanıtacak Mehmet Bey FİGES
Firmasından. FİGES Firması biliyorsunuz Türkiye’de çok önemli yazılım konularında
gerek Ansys aranızda bilenler çoktur. O programları temsil ediyorlar. ADAMS
Programını temsil ediyorlar. Değil mi? Ondan sonra modeFRONTIER var. Yeni
program olarak herhalde var değil mi? Nispeten yeni. Diğer böyle mühendislikle ilgili
çok önemli programları kendileri temsil ediyorlar. Aynı zamanda FİGES Firması
mühendislik hizmetleri de sunabiliyor, dolayısıyla bu alanda güçlü bir mühendislik
firması. Mehmet Bey de benim Ortadoğu Teknik Üniversitesinden eski
öğrencilerimden bana da benden bir ders aldığını hatırlattı biraz önce. Kendisi ODTÜ
Teknokent’te FİGES’in Ankara Bürosu orada hizmet ve destek de veriyorlar.
Teknokent Firması olarak da çalışıyorlar. Şimdi bize Mehmet Bey modeFRONTIER
konusunda sunumunu yapacak. Kendisini davet ediyorum sunumunu yapmaya
buyurun.
Mehmet Ata Bodur: Önce kısaca FİGES’i tanıtayım. 90 yılında kurulmuş özel bir
firma. Patronumuz Tarık Öğüt, Almanya’da doktorasını yapmış, Almanya’da
Mercedes’te çalışmış, titreşim üzerine doktora yapmış, sonra Türkiye’ye gelmiş ve bu
Sonlu Elemanlar Ansys Programını tanıtım satış gibi işleriyle ilgilenmiş. 90 yılından
beri bilgisayar destekli Mühendislik araçları, yazılım ve hizmetlerinde çözüm sunan
bir firma 80’ne yakın çalışanımız var. Üç şehirde çalışanlarımız ben Ankara
ofisindeyim, Merkez ofisimiz Bursa’da. TechNet Alliance AG kurucusu. Sertifikalar ve
üyelikler: NAFEMS, TechNet Alliance, Taysad: Türkiye Otomotiv ve Taşıt Araçları
Yan Sanayicileri Derneği, İSO sertifikası olan bir şirket. FİGES’in Fransız ortağı
SHERPA var. SHERPA’nın patronu da Türk ve Türkiye’de FİGES’le SHERPA’nın
ortak olarak kurduğu SANTOR şirketi var. Şuan SANTOR kağıt üzerinde. Aktif değil
şimdilik otomotiv üzerine, daha çok otomotiv elektroniği üzerine çalışan bir şirket.
modeFRONTIER Avrupa Birliği projesi olarak 93 yılında başlamış. Önce Akışkan
Mekaniği ile ilgili bir takım optimizasyonlar için çalışılmış. İlk kez 98 yılında
ticarileşmiş. 98 yılında Versiyon–1 piyasaya sürülmüş. Engin Soft bizim İtalyan
ortağımız, modeFRONTIER’ın sağlayıcısı şuan. Engin Soft da 84 yılından beri
yapısal analizler üzerine çalışan bir şirket daha sonra modeFRONTIER’i bünyesine
katarak ESTECO oluşturuluyor. ModeFRONTIER’ın şuan 4.11 versiyonu piyasada.
Ben FİGES’e girdiğimde 3 versiyonu piyasadaydı. Hemen ben girdikten sonra 4.0
versiyonu piyasaya sürüldü 2007 Aralık ayı gibi ya da 2008 başı gibi. Şuan 4.11
piyasada ve içerisinde yeni algoritmalar da eklenmiş durumda. Sürekli geliştirilen,
sürekli evrimleşen ve kendisi de optimize olan bir program. Dünya çapında
dağıtıcıları var. Dünyada yaygın kullanılan bir program. İtalyan menşeyli bir program.
Türkiye’de de dağıtıcısı FİGES. Gördüğünüz gibi 150’den fazla kullanıcısı olan bir
program, bu artmıştır muhtemelen. Otomotiv sanayinden beyaz eşyaya kadar birçok
alanda kullanılan bir program.
1
Optimizasyon nedir? Mühendislik problemlerinde optimizasyon nedir? Neyi optimize
ederiz ya da niye böyle bir şeye ihtiyaç duyarız? Nereden böyle bir ihtiyaç
doğmuştur? Her mühendislik problemi birçok farklı bakış açısını içerir. Aynı anda
birçok amacı gerçekleştirmeyi gerektirir. Mesela bir motor tasarımını düşünün,
içerisinde akışkan mekaniği de var, işte ısıl analizlerde var, yapısal analizlerde var.
Birçok farklı bakış açısını içinde barındırıyor ve aynı anda birçok amacı
gerçekleştirmek istiyoruz. Mesela performansını artırırken yakıt tüketimini minimize
etmek istiyoruz, ya da motoru hafif tasarlamak istiyoruz. Akışkan özelliklerini iyi
tasarlamak istiyoruz, ısı dağılımı mümkün olduğunca düzgün olsun, soğutma sistemi
yeterli olsun gibi. Bütün bu amaçları aynı anda gerçekleştirme işine optimizasyon
diyoruz. İyi tasarım bulma işine aslında optimizasyon diyoruz. İyi tasarımın tanımı
aynı anda birçok amacı gerçekleştirmek ya da birtakım amaçlarımızı ya da amacımızı
gerçekleştirmek. Amaçlarla dediğimiz gibi: Hafif tasarım, yüksek performans, düşük
maliyet gibi amaçlar var ve bunlar bir takım kısıtlara mağruz. Kısıtlarımızda mesela:
Kullandığımız malzemenin dayanımı bir kısıttır, ya da bu iş için harcayacağımız para
bir kısıttır, cebimizdeki para bir kısıttır, ya da kullandığınız yakıtın bir takım özellikleri
kısıt olabilir. Dolayısıyla tasarımlar arasından en iyi tasarım ya da tasarımları bulma
işine “Optimizasyon” diyoruz ya da Türkçesiyle “eniyileme” diye çevirdim ben,
“eniyileme” diyoruz. Yani tanım olarak mümkün olan en iyi çözümler ya da çözüm ya
da çözümleri mümkün olan seçenekler arasından elimizdeki tasarımlar arasından
seçebilmektir, bulmaktır optimizasyon. Ya da diğer bir deyişle tasarımdaki amaçlar
bakımından en iyi takas, ya da ferâgattır. Takas ya da feragat: Bunu daha sonra
açıklayacağım, “Pareto Frontier” ile tanımlanan bir şey.
Matematiksel olarak optimizasyonu tanımlayacak olursak: Elimizde bir takım
fonksiyonlar var ve bunlar birtakım serbest parametrelere bağlı. Fonksiyonlarınız:
Mesela kütle bir fonksiyon olabilir, maliyet bir fonksiyon olabilir, ya da performansı bir
fonksiyon haline getirebilirsiniz, ya da elinizde bir eğri vardır, o eğriye yakınlığı
“Square distance” (Mesafenin karesi) olarak tanımlayabilirsiniz. Bu mesafelerin
kareleri toplamını minimize etmekte bir amaç olabilir mesela. Dolayısıyla elimizde F1,
F2, ...Fk gibi bir takım fonksiyonlar var ve bu fonksiyonlar X1, X2, ...Xn gibi bir takım
değişkenlere bağlı ve bu fonksiyonlar Gi, Gj...Gk gibi küçük eşit, büyük eşit, ya da
eşitlik şeklinde bir takım kısıtlara maruz bırakılmıştır. Kısıtlarımız ne olabilir: Mesela
malzeme dayanımımız, mesela “Von Misses Stress” ler belli bir değerin altında olsun,
malzemenin dayandığı maksimum bir gerilme var, bu gerilmenin altında olsun, ya da
bu iş için harcayacağımız para şu kadar, bundan fazla olmasın, ya da ağırlık bunun
altında olsun gibi... Bir takım kısıtlarınız olabilir. Ağırlığı amaç olarak da
tanımlayabilirsiniz, bir kısıt olarak da tanımlayabilirsiniz. Kısıtla amaç arasındaki fark;
amaç minimize ya da maksimize etmek istediğimiz değerler, kısıtsa belli bir değerin
altında olsun dediğimiz, ya da belli bir değerin üstünde olsun, ya da şu aralıkta olsun
dediğimiz değerlerdir. Burada birden fazla fonksiyonumuz varsa eğer, o zaman çoklu
amaçlı optimizasyondan bahsediyoruz.
Yani
aynı
anda
birçok
amacı
gerçekleştirmek istiyoruz, o zaman çoklu
amaçlı optimizasyondan bahsediyoruz.
İngilizcesi “Multi-Objective Optimization”.
Klasik optimizasyon biraz bahsedeyim.
Hemen
her
mühendis
Newton’s
Method’u duymuştur. Newton’s Method,
2
“Gradient Based Optimization” diye tanımlanan optimizasyon türüdür.
Bu tür optimizasyonda Newton’s Methodu ne için kullanırız? Bir fonksiyonunun sıfırı
kestiği yerleri bulmak için kullanırız. Sıfır noktasını bulmak için kullanırız. Yani kökleri
bulmak için kullanırız. Şimdi elimizde bir minimizasyon problemi olsun: Bir
minimizasyon probleminde minimumu yakalamanın şartı nedir? Fonksiyonun
minimum olduğu yerde “Gradient” sıfır olur.
Gradient’in
sıfır
olduğu
yerde
fonksiyonumuz
minimum
ya
da
maksimumdur. Gradient’in sıfır olması
gerekli koşuttur fakat yeterli koşut değildir.
Bir minimizasyon problemi varsa elimizde
yeterli şart “Hessian matrix”inin “pozitive
definite” olmasıdır. Yani “Hessian Matrix”
“pozitive deffinite” ise, yani Gradient’in
Gradient’i “pozitive deffinite” ise lokal
minimumdayız. Fakat bu “Gradient Based
Optimization”
daha
çok
“convecs”
problemler
için
geçerlidir.
Yani
fonksiyonunuz böyle dalgalı inişli çıkışlı bir
şeyse global optimumu yakalamamız zordur. Yani tek bir noktadan başlarsak
herhangi bir “local minima” da program takılabilir ve bu tür optimizasyon problemleri,
bu tür optimizasyon teknikleri multiobjektive problemlere de, fonksiyonların belli
katsayılarla toplanması şeklinde dönüştürülüp, yani tek amaçlı optimizasyona
dönüştürülerek çözülebilmekte. Burada mesela, bir maliyet fonksiyonumuz olsun, bir
de ağırlık fonksiyonumuz olsun. Bunları alfa beta katsayılarıyla toplayıp, bu toplam
fonksiyonu minimize ya da maksimize etmeye kalktığımız vakit, elmalarla portakalları
toplamış oluyoruz. Yani bir tarafta maliyet var birimi TL, YTL ya da dolar, bir tarafta
da kütle var birimi kilogram. Dolayısıyla çok mantıklı bir yaklaşım değil, ama
fonksiyonlarımızın “convecs” olduğunu biliyorsak, iki “convecs” fonksiyonun toplamı
yine bir “convecs” fonksiyon verecektir. Dolayısıyla o zaman kullanabiliriz. “Gradient
Based Optimization” teknikleri son derece hızlıdır. Ama ne zaman hızlıdır? Elimizde
türev bilgisi varsa hızlıdır. Yani Hessian matrix’i varsa elimizde, son derece hızlı
“quadratic” bir hızla çözebiliriz problemimizi. Ama eğer problemimiz bir karanlık kutu
problemi ise, mesela ANSYS’te çözümü yapacağız. ANSYS’ten çıktı alacağız.
Elimizde türev bilgisi yok, yani stress’in türevini hesaplamamız için elimizdeki
parametrelerin yakınından, başka noktalarda da hesap yapıp, önce türev
hesaplamamız gerekiyor. Dolayısıyla bu tür teknikler her zaman geçerli teknikler
değil. Bunun yerine farklı algoritmalara da ihtiyaç duyulmuş. ModeFRONTIER’ın
arkasındaki kavram: Bir takım girdi değişkenlerimiz var bizim problemimizi
tanımlayan, bir takım parametrelerimiz var. Bunlar çeşitli geometrik boyutlar olabilir
mesela. CATIA’da bir çizim yaptınız, bir yerde bir deliğiniz var, mesela dairesel bir
delik. Bu deliğin çapı bu parametre olabilir, ya da deliğin merkez koordinatları bir
parametre olabilir, ya da ne bileyim yapının genişlik, yükseklik gibi değerleri
geometrik parametreleri olabilir, ya da malzeme parametremiz olabilir, ya da bir
yerden kesit seçeceksiniz “I kiriş” kullanacaksınız, standart kesit kullanmak
istiyorsunuz, elinizde bir kesit tablosu olabilir, bu tablodan bir seçim yapacaksınız. Bu
seçimle ilgili indeksiniz elinizde bir parametre olabilir. Bu parametreler bizim
problemimizi tanımlayan parametreler. Bunlar çeşitli programlara giriliyor ve bu
progranlardan bir takım çıktılar elde ediyor. Bu çalışan programlar bizim karanlık
kutumuzu oluşturuyor. Yani problemimizi çözen çözücüleri oluşturuyor. İçerisinde ne
3
olup bittiğini tam olarak bilmediğimiz, gradient bilgisinden ya da hessian’dan filan
haberimizin olmadığı, bize sadece bir takım girdilere karşılık çıktılar veren bir takım
çözücüler de bizim karanlık kutumuzu oluşturuyor ve bu karanlık kutudan bir takım
çıktılar elde ediyoruz. Bu değişkenlerden bahsetmiştim. Bunlar sürekli değişkenler
olabilir, ayrışık değişkenler olabilir. Sürekli değişkenler mesel, nokta koordinatları
olabilir, yani gerçel sayı olarak tanımlayabildiğimiz değişkenler, ya da ayrışık
değişkenler. Mesela bir katalog indeksi olabilir, ya da ne bileyim bir geometriyi,
mesela bir milimetre aralıklı değiştirmek isteyebilirsiniz. Çünkü 3,00999 milimetre gibi
bir değer mühendislik açısından ya da üretim açısından çok gerçekçi olmayabilir.
Mesela her bir milimetreyle değiştirmek isteyebilirsiniz ararıklarınızı. Bunlarda ayrışık
değişkenleri oluşturuyor. Ya da, malzeme parametrelerimizde ayrışık değişkenler
olabilir: Alüminyum, çelik, plastik gibi. Dolayısıyla ayrışık değişkenler üzerinde türev
almamız zor yani türev alamayız. Ya da plastikle alüminyum arasında nasıl bir türev
alacaksınız, nasıl gradient hesaplayacaksınız? Dolayısıyla bu tür problemlerde farklı
teknikler kullanmak gerekiyor. modeFRONTIER’da bu tür değişkenleri istediğiniz gibi
tanımlayabilirsiniz ve pratikte dediğimiz gibi bu değişkenler çok karmaşık şekilde
karşımıza gelebilir ve modeFRONTIER bunları çok iyi ele alabilir.
Karanlık
kutudan
bahsettim,
çeşitli
çözücüler dedim. Bu çözücüler mesela
akışkan mekaniğin çözücüsü olabilir, CFD
çözücüsü, işte CFX programı vardır
ANSYS’in altında, FULENT olabilir ya da
çeşitli CAD programları olabilir. Mesela
CATIA’da çizim yapabilirsiniz, UGS
kullanabilirsiniz,
Proengineer
kullanabilirsiniz çizim için. Ya da sizin
kendi evde yazdığınız bir programla da
modeFRONTIER’ı bağlayabilirsiniz. Yani
bir “text input” alıp “text output” veren bir
programınız olur. Bu programda girdi
text’in içerisinde bir yerlere bir şeyler yazıp, çıktılardan bir şeyleri okutabilirsiniz
modeFRONTIER’la. MATLAB’le bağlayabilirsiniz, EXCEL’le bağlayabilirsiniz, ya da
sonlu elemanlar programı NASTRAN, ANSYS, MADYMO, ABAQUS gibi.
Amaçlardan bahsetmiştim, minimize ya da maksimize etmek istediğimiz değerler.
Neyi maksimize etmek isteriz? Mesela verimliliği maksimize etmek isteriz.
Performansı maksimize etmek isteriz, ya da maliyeti minimize etmek isteriz, ağırlığı
minimize etmek isteriz. Tabii bunlarla ilgili elimizde fonksiyon olması lazım ya da
fonksiyon o kadar da gerekli değil. Yani bunları veren bir program olabilir. Yani bir
programın bu sonuçları vermesi lazım. Bir maksimizasyon problemi her zaman
minimizasyon problemini aşağıdaki gibi dönüştürülebilir. Pareto Baskınlığı: En iyi
çözüm ya da çözümlerden bahsetmiştim. En iyi takas ya da ferâgat demiştim. En iyi
takas ya da ferâgat “Pareto Baskınlığı” ile tanımlanır. Yani “Pareto Frontier” ile
tanımlanır. Eğer elimizde iki amaç varsa iki amaçlı bir problemde en iyiler kümesi bir
eğridir aslında. Ya da üç amaçlı bir amaç uzayımız varsa amaç uzayında en iyiler
kümesi bir yüzeydir. Yani n amacımız varsa Pareto (en iyiler) kümesi n-1 boyutludur.
Bunu biraz sonra açıklayacağım. Şimdi diyelim ki bu noktalar bizim amaç uzayımızda
bir takım çözümler olsun. AB ve SV değerleri bizim minimize etmek istediğimiz
değerler olsun. Yani bir programdan çıktılar aldık AB ve SV. Hem AB’yi hem SV’yi
aynı anda minimize etmek istiyoruz. Yani multiobjektive bir problem var, iki amaç var.
4
Burada en iyi çözüm ya da çözümler hangileridir? Tek bir en iyi çözümü vardır ya da
çok sayıda iyi çözümü vardır. Bunları nasıl buluruz?
Şimdi bu noktalarımızın her birisi amaç uzayında birer nokta yani birer tasarım olarak
düşünebilirsiniz. Burada mesela iki numaralı noktayla kırk numaralı noktayı
kıyaslamaya çalışalım: AB’yi de minimize etmek istiyoruz, SV’yi de minimize etmek
istiyoruz. AB bakımından iki numaralı nokta kötü bir noktadır. Çünkü AB bakımından
yüksek bir değere sahip iki numaralı nokta, fakat SV bakımından incelediğimiz vakit
iki numaralı nokta en iyi noktadır.
Şimdi mesela kırk numaralı noktayla iki numaralı noktayı kıyaslayacak olursak AB
bakımından benzer performans göstermekle beraber, SV bakımından kırk numaralı
kötü bir noktadır. Dolayısıyla iki numaralı nokta kırk numaralı noktayı baskılar. Yani
iki numaralı nokta kırk noktadan daha
iyidir. Mesela şu mavi noktayla, en sağ alt
köşedeki mavi noktayla, iki numaralı
noktayı
kıyaslayalım.
Şimdi
AB
bakımından iki numaralı nokta kötü bir
noktayken SV bakımından iyi bir nokta,
fakat bu mavi noktaya baktığınızda SV
bakımından mavi nokta kötüyken, AB
bakımından mavi nokta daha iyi bir nokta.
Dolayısıyla bir amaç bakımından diğerine
göre daha iyiyken, diğer amaç bakımından
daha kötü. Bu çizgiye, kırmızı çizgiye,
yakın olan bütün noktalar için benzer
kıyaslamayı yapabilirsiniz. Yani kırmızı
çizgiye yakın olan bütün noktalar bir amaç
bakımından diğerine göre daha iyiyken, bir
başka amaç bakımından diğerine göre
daha kötü noktadır. Dolayısıyla bu kırmızı
eğriye yakın olan bütün noktalar aslında iyi
noktalardır yani iyi tasarımlardır. Yani bu kırmızı çizgiye uzak olan diğer şu noktalarsa
kötü tasarımlardır. Ama her birisi de tasarımdır, çözümdür, fakat iyi tasarım değildir.
Bunları elemek ve atmak istiyoruz ve geriye sadece kırmızı çizgiye yakın olan
noktaların kalmasını istiyoruz, ve çözümlerimizin hep bu Pareto’ya yakın noktalarda
oluşmasını istiyoruz.
Soru: Pardon kırmızı çizgiyi nasıl çiziyoruz?
Mehmet Ata Bodur: Kırmızı çizgiyi ben çizdim yani o artık fiziksel sınırı belirliyor.
Yani kırmızı çizgi bizim fiziksel sınırımızı belirliyor. Yani mesela şurada nokta
üretemiyor. Buralarda fiziksel olarak tasarım bulamıyoruz. Bu kırmızı çizginin üst
tarafındaki noktalarda çözüm buluyoruz. Yani bizim kısıtlarımızı sağlıyor ve bize bir
çözüm veriyor. Fakat bunların arasından seçim yapmamız lazım. İyi noktayı
bulmamız lazım iyi nokta tanımını yapmamız lazım. Dolayısıyla iyi noktalar, fiziksel
sınıra yakın olan noktalar, aslında fiziksel olarak mümkün olan tasarımlarla, fiziksel
olarak mümkün olmayan tasarımları ayıran çizgiye yakın olan noktalar, aslında iyi
noktalar. Yani kırmızı çizgi bizim fiziksel tasarım sınırımızı belirliyor, Paretoyu
belirliyor. Dolayısıyla biz bu kırmızı çizgiye yakın olan çözümleri bulmaya çalışıyoruz.
ModeFRONTIER bu seçimleri kendi içerisinde kolaylıkla yapabiliyor ve
5
kullanacağımız algoritmaların özelliği bu kırmızı çizgiye mümkün olduğunca yakın
yerlerde çözüm üretmesidir. Yani gereksiz, fiziksel olarak mümkün ama iyi olmayan
yerlerde çözüm üretmesini istemiyoruz. Mümkün olduğunca bunlardan kaçınıp daha
paretoya yakın çözümler elde etmeye çalışıyoruz. Bunu genişletebilirsiniz. Yani üç
amacımız varsa fiziksel sınırımızı belirleyen aslında bir yüzey ortaya çıkar, ya da
yüzey benzeri bir şey ortaya çıkar. Yani bir “Curve Fitting” yok burada noktalar artıyor
fiziksel sınırı belirleyen böyle bir çizgi de ortaya çıkıyor.
Prof. Dr. Bilgin Kaftanoğlu: Mehmet Bey, esasen çizgi veya o noktaların
ağırlıklarını taşıyan bir bağıntı bulabilmek için çok amaçlı fonksiyonlardan
bahsediyoruz iki tane olur, üç tane, beş tane olur. Bunların belli bir ağırlıklarını
çarparsak, birinci amaç fonksiyonumuz %15 ağırlıklıdır, ötekisi %30 ağırlıklıdır toplam
%100 olmak şartıyla tabii. O zaman öyle bir çizgiyi ya da bağıntıyı elde edebiliriz. O
zaman hangi amaç fonksiyonunun daha çok ağırlıkta olmasını istiyorsak o çözüm
bizim için en uygun çözümdür.
Mehmet Ata Bodur: En başta bahsettim. Bu biraz elmalarla portakalları toplamaya
benziyordu. Bazen bir amacın ağırlığını arttırabilirsiniz, onun katsayısını arttırırsınız,
ama onun değerini düşürmüş olursunuz, ya da azaltmak istiyorsanız yükseltmiş
olabilirsiniz. Bunun için sensitivity analizleri gibi şeyler var. Ama dediğim gibi bu
“Gradient Based Optimization” daha çok “convecs” problemler için geçerlidir. Yani
böyle dalgalı bir şeyiniz varsa o zaman herhangi bir lokal minimada kalabilir.
Herhangi lokal minimaya gidebilir. “Global Optimim” u yakalayabilirsiniz mesela, ya
da “Global Optim” u yakalamak için birçok farklı başlangıç noktasıyla deneme
yapmanız gerekebilir. Yani bir “grid” oluşturup o “grid”in her bir noktası için bir
optimizasyon yapmanız gerekebilir. O yaptığınız optimizasyonların sonucunun
mesela minimumunu bulmaya çalışabilirsiniz. Bunlar teknikler. Bunlar
modeFRONTIER’ın içerisinde zaten var ama diğer teknikler de var, yani genetik
algoritmalar da var bu iş için. Yani o bahsettiğiniz gradyant best optimization var ama
ya siz single objective dönüştüreceksiniz. Yani sonuçta o alfa beta katsayılarıyla
yaptığınız zaman tek amaca dönüştürmüş oluyorsunuz probleminizi ve o şekilde
çözmüş oluyorsunuz. Dolayısıyla en iyi takas ya da ferâgat İngilizcesi best trade off
ben takas ya da ferâgat olarak çevirdim. Pareto üzerinde olmak demektir, yani o
eğriye yakın olmak demektir. Pareto üzerinde iseniz yani o eğriye yakın olan her
nokta bir amaç bakımından diğerine göre daha iyiyken başka bir amaç bakımından
daha kötüdür. Yani pareto üzerinde hareket ediyorsanız bir yerde verirken bir yerde
alıyorsunuz. Bir yerde verirken bir yerde alıyorsanız iyi bir yere gidiyorsunuz ya da o
da iyidir. Ama bir yerde verirken daha iyiye gidemiyorsanız, o zaman iyi bir noktaya
doğru gitmiyor demektir.
ModeFRONTIER herhangi bilgisayar destekli mühendislik aracıyla, ticari ya da evde
yazılmış kendi yazdığınız bir programda dahil olmak üzere bunlarla kolayca birleşme
yapabilen sizin bu programlarınızı otomatik olarak çalıştıran, gerçek anlamda çoklu
amaçlı optimizasyon yapan en iyileme ve tasarım ortamıdır. ModeFRONTIER en
önemli özelliği çoklu amaçlı en iyileme yapabilmesi, çoklu amaçlı gerçek anlamda
desteklemesi; bunun için birçok farklı algoritmayı içerisinde barındırması, evde
yazılmış ya da ticari herhangi bir programla bağlantı kurabilmesi. Çeşitli programların
içerisinde birtakım optimizasyon modülleri olmakla beraber bunlar sadece o
programa özgü çalışabiliyor. ModeFRONTIER’ın özelliği farklı programlarla bağlantı
kurabilmesi, bu algoritmaları birçok farklı programa uygulayabilmesi, üretim
6
mühendisleri ya da tasarımcılara çeşitli mühendislik araçlarının, çeşitli CAD çizim
araçları gibi, sonlu elemanlar gibi, akışkan mekaniği analizi yapan programlar gibi; bu
programları birleştiren, bunların bir arada çalışmasını sağlayan bir pencere sağlar, bir
ortam sağlar. İçerisinde gradient tabanından biraz önce bahsettiğim Newton’s
Methot’un uzantısı olan BFGS gibi gradient tabanlıdan genetik algoritmalara kadar
son teknoloji algoritmaları kullanır, içerisinde birçok algoritma vardır. İşlemleriniz ya
da tasarımlarınız sizin belirlediğiniz amaçlar doğrultusunda, sizin belirlediğiniz
değişkenlerle en iyiye götürülmeye çalışılır. ModeFRONTIER aslında sizin
mühendislik araçlarınızı paketleyen sarmalayan bir araçtır ve en iyileme işlemini girdi
değişkenlerini değiştirip, çıktıları gözlemleyip, çıkan çıktılara göre yeni girdi
değişkenleri oluşturup ve bunu sürekli bir döngü halinde yaparak gerçekleştirir.
ModeFRONTIER kendi başına bir çözücü program değildir. Yani kendisi bir şey
çözsün diye tasarlanmamıştır. İçerisinde bir takım algoritmaları barındırır. Sizin
programlarınızı çalıştırır, yani hali hazırda var olan programlarınızı çalıştırır.
İçerisinde diğer programları barındırmaz. İçerisinde sadece bir “calculator” modülü
vardır. Birçok optimizasyonda onu yapabilirsiniz ama asıl amacı o değildir, yani.
sağladığı faydalar nedir? Elinizdeki herhangi bir mühendislik aracıyla bağlanabilmesi
ve elinizdeki bu araçtan sonuna kadar faydalanma. Mesela elinizde bir ANSYS
programı var. Mühendis kullanmadığı vakit o program yatıyor. Hafta sonu o program
çalışmıyor ya da gece çalışmıyor. Siz bunu modeFRONTIER’a bağlayarak gün
içerisinde optimizasyonun yapısını belirlersiniz, nasıl bir optimizasyon yapacağınızı
belirlersiniz, birkaç deneme yaparsınız, sistemi kurup akşam çıkarken Run’a basıp
ertesi
sabah
geldiğinizde
yüzlerce
analizi
karşınızda
görebilirsiniz.
ModeFRONTIER’in sağladığı en önemli özelliklerden bir tanesi bu. Ürünlerinizi daha
kısa zamanda maliyetleri düşürerek elinizdeki araçları ve bilgiyi sonuna kadar
kullanarak geliştirmenizi sağlar. Aynı modeFRONTIER herhangi simülasyon aracına
uygulanabilir. Kullanımı ve öğrenmesi kolay, çok kolay bir arayüzü var. Java’da
yazılmıştır. Ürünleri daha kısa zamanda tasarlamak, mesela bir kişi akışkan analizi
yapıyor, bir kişi yapısal analizi yapıyor. Bunun çeşitli parametreleri var. Bir çizimle
başladınız bir konseptle modeFRONTIER’ın olmadığı durumu düşünün, çıkan
sonuçları bir akışkancıya gönderiyorsunuz, bir çiziminizi bir yapısalcıya
gönderiyorsunuz. Akışkancı diyor ki şurasını değiştirin, yapısalcı diyor ki burasını
değiştirin. Orayı değiştiriyorsunuz burayı değiştiriyorsunuz tekrar deniyorsunuz.
Deneye yanıla bir çözüme ulaşıyorsunuz. ModeFRONTIER bu deneme yanılma işini
belli bir mantığa göre gerçekleştirerek kısa zamanda daha az deneme yanılmayla ve
bu işi otomatik olarak yapmanızı sağlar. ModeFRONTIER özel kılan işlem
bütünleştirme “Process Integration” dediğimiz şey, yani çeşitli mühendislik araçlarıyla
bağlantı kurabilme, tasarımı optimize edebilme ve gerçek anlamda çoklu-disiplinli
optimizasyon yapabilme. Sağladığı şey elimizde bir problem var, çeşitli parametrelere
bağlı, bu problemi daha iyi anlamanızı sağlar. Yani etkin parametreyi mesela
bulmanızı sağlayabilir. Toplam proje zamanı ve maliyetleri azaltır. Daha tasarımın
aşamasında en iyi ürünü elde etmenizi sağlar. Performansı arttırılmış ürünler sunarak
müşteri memnuniyetini sağlar. Farklı disiplinler açısından probleminize bakmanızı
sağlar ve ürün değiştirme sırasında farklı disiplinleri birleştirmenizi sağlar. İçerisinde
18’den fazla yazıyor ama şuan 20 algoritma var. Gerçek çoklu amaçlı en iyileme
çözümleme yapıyor. Platformdan bağımsız, dediğim gibi Java’da yazılmış Linux
altında da çalışabiliyor, Windows altında da çalışabiliyor. İyi tasarlanmış bir ara yüzü
var ve bunlardan bahsettim. Bağlanabildiği araçlar gördüğünüz gibi “Direct” dediği
bağlantı araçları modeFRONTIER’ın doğrudan dosya yapısını tarayıp,
parametrelerini çekebildiği programlar “direct” olmayanlar ise çeşitli text-input text-
7
output ara yüzüyle programı “DOS Command Prompt” tan çalıştırmak şeklinde
bağlandığı araçlar. Ve kendi yazdığınız araçlarla da bağlıyabiliyorsunuz.
İçerisindeki araçlar Deney Tasarımları (DOE dediğimiz “Design of Experiments”),
İstatistiksel Araçlar, Tepki Yüzeyi Modellemesi, Kararlı Tasarım, “Multi-objective
Robust Design Optimization” dediğimiz ya da “Design for Six Sigma”. Bunların her
birisinden ayrı ayrı bahsedeceğim ve içerisinde algoritmayı seçmenizi sağlayan bir
“Optimization Vizard” bile var. Ben pek tercih etmiyorum ama böyle bir şeyde hani hiç
bilmeyenler hangi algoritmayı seçeceğiz, nereden bileceğiz diyenler için de böyle bir
aracı var.
Mimarisine gelince üç ana pencere var. Bir
ön işleme arayüzü var. Burada işlemlerinizi
tanımlıyorsunuz, girdilerinizi, çıktılarınızı,
hangi
programların
hangi
sırayla
çalışacağını, bu programlardan gelecek olan
çıktıları, amaçlarınızı, kısıtlarınızı, mantık
akışını tanımladığınız bir arayüz. Daha
sonra Run’a bastığınız zaman programların
çalışmasını gösteriyor. Bu programlardan
çıkan hata mesajlarını, logları tuttuğu bir
pencere açılıyor. Bu pencereden tasarım
klasörlerine
“brows”
edebiliyorsunuz.
HTML’le yazılmış bir takım HTML dosyaları
geliyor karşınıza ya da XML galiba. Son
işleme arayüzünde de veri analizleri, karar araçları gibi bir takım araçlar var;
istatistiksel analizler, sonuçlarınızı değerlendirdiğiniz çeşitli Chart’lar oluşturduğunuz
bir ara yüzü var. Ön işleme arayüzü böyle bir şey gördüğünüz gibi.
Şurada üç tane sekme görüyorsunuz ön işlemi
log ve sonuçları gördüğünüz son işlemi
arayüzünü açtığınız üç tane sekme var. Ön
işleme arayüzünde böyle menülerimiz var,
böyle ikonlarımız var. Burada çeşitli mantık
araçları, değişkenleri tanımladığınız girdiler
çıktılar, programlar arasında veri akışını
sağladığımız bir takım butonlar, araçlar var.
Amaçları tanımladığınız bir takım araçlar var,
kısıtları tanımladığınız birtakım ikonlar var,
çeşitli dosya araçları var. Mesela CATIA’da bir
çizim var, bunu İGS olarak CATIA’ya
kaydettirdiniz. Daha sonra bunu ANSYS’e
atacaksınız, ne yapmanız lazım?
Dosya transfer aracınızın olmazı lazım, o
dosyayı oradan alıp oraya aktaracak bir mekanizmanızın olması lazım. Bu tür araçları
var. Bunlar çeşitli uygulama araçları Excel, Mathcad, Matlab gibi araçları var, ya da
“Response Surface Module” var. Ya da çeşitli script kodları var. İçerisinde bir
calculator modulü var demiştim, basit bir hesap makinesi var, o kadar da basit değil,
içerisinde birçok fonksiyon var aslında. Bununla beraber “Command Prompt Shell”
var. Mesela bir programı DOS arayüzünden çalıştırabiliyorsanız, DOS’ta yazdığınız
şeyi buraya yazıyorsunuz, sizin o tanımladığınız command’i DOS arayüzüne kendisi
8
yazıp çalıştırabiliyor, ya da SH Script var, CYG Win gibi script var, Java Script
yazabiliyorsunuz içerisine gibi; bir takım araçları var. Bununla beraber çeşitli
mühendislik araçları var; ABAQUS, ANSYS gibi, CATIA gibi, Uni Graphics gibi,
Proengineer gibi, bunlara daha yenileri de eklendi bu biraz eski. Yeni araçlarla da
bağlanabiliyor. Tabii ben bunların hepsiyle bağlamayı bilmiyorum, çünkü
modeFRONTIER kullanabilmeniz için bir kere kullandığınız diğer araçları çok iyi
bilmeniz lazım. Yani kullandığınız aracınızı iyi bileceksiniz, ama temel mantık aynı.
Bununla beraber çeşitli network nodeları var, FTP, SSH ya da Mail gibi... Bunu ne
için kullanırsınız? Mesela modeFRONTIER bu bilgisayarda yüklü, ama sizin CFX
programınız ya da Fluent programınız merkezi bir bilgisayarda yüklü, ya da başka bir
yerde çalıştırmak istiyorsunuz, ya da bu bilgisayara yeni bir lisans almak istemiyor
olabilirsiniz, ya da bilgisayarınızın kapasitesi yetmiyor olabilir, daha kapasiteli
bilgisayarlar kullanıp işleminizi dağıtmak isteyebilirsiniz. Mesela akışkan mekaniği
analizini bir bilgisayarda, ya da yapısal analizli başka bir bilgisayarda yapmak
isteyebilirsiniz. Bu amaçla bu SSH’ı kullanabilirsiniz. SSH kullanan var mı? SSH’la
server’a bağlanırsınız server’a dosya transferi yaparsınız, dosya aktarırsınız, ya da
oradan kendinize dosyayı aktarabilirsiniz, ya da server’da bir script çalıştırabilirsiniz,
server’da bir programı çalıştırabilirsiniz, aynı DOS Command Prompt gibidir ama
uzaktaki bir makineye bağlanıp oradaki işlemleri yapmanızı sağlayan bir araçtır.
Dolayısıyla
SSH
kullanmayı
biliyorsanız
daha
önce
kullandıysanız,
modeFRONTIER’da bu tür bir iş yapmak son derece kolay, benim öyle bir denemem
olmuştu. Böyle bir örneğim var aslında ama gösteremiyorum, yani slaytlarımda yok
sunumlarımda yok. Yani karşı bilgisayarda bir SSH server’ın olması gerekiyor. Onun
altında bir FTP server çalışabilir. Bunun için mesela benim yaptığım uygulamada
ofisteki diğer bilgisayara CYG Win kurmuştum. CYG Win altında SSH ve FTP server
çalıştırdım. CYG Win ile o bilgisayardaki bir programı bir script ile
çalıştırabiliyorsunuz. Dolayısıyla bir “.exe” dosyasını ya da “input file” ı karşı
bilgisayara modeFRONTIER ile atıp, orada bir script ya da programı çalıştırıp, çıkan
sonucunu da kendi bilgisayarınıza otomatik olarak böyle bir döngüyle de
aktarabilirsiniz. Dolayısıyla bu tür araçları da içinde barındırıyor. Burada basit bir
sistem görüyoruz. Gördüğünüz gibi dört tane girdi değişkenimiz var, DOE dediğimiz
“Design of Experiments” (bundan biraz sonra bahsedeceğim) algoritmasını seçtiğiniz
bir menü var, bir ikon var. Bunlara sadece sağ tıkladığınız zaman karşınıza bir menü
çıkıyor. Buradan opsiyonlarını ayarlıyorsunuz. Daha sonra “Scheduler” dediğimiz,
algoritma seçtiğimiz, optimizasyon algoritmasını seçtiğimiz bir ikonumuz var.
Arkasından da siz ne istiyorsanız onu koyarsınız, burada ANSYS konmuş ve mantık
akışını bitirdiğiniz bir ikonumuz var. Bu girdiler çeşitli programları giriyor, bunlardan
çıktılar elde ediliyor ve mesela burada ANSYS’te bir hoparlör kutusu
optimizasyonunun bir ara yüzü görünüyor. Bu hoparlör kutusu için birinci mod
frekansı maksimize edilirken, kütle minimize edilmek isteniyor mesela. Böyle bir
problemimiz vardı. Burada frekans ve kütleyi ANSYS’ten okuyoruz. Frekansı
maksimimize etmek istiyoruz. Burada amaç ikonunu görüyoruz bir tane ve ağırlığı da
minimize etmek istiyoruz ve ağırlığa da bir tane de kısıt konmuş mesela. Bir de
modeFRONTIER’da oluşturulmuş başka bir iş akışı görüyoruz. Yine DOE’yle
başlanıyor her optimizasyonda olduğu gibi, arkasından “Scheduler”, algoritmayı
seçiyoruz ve bu standart arkasından CATIA çalıştırılmış. CATIA’dan “ICEM Mesh
Generator” a girilmiş. Buradan da “Star CD” diye bir frekans titreşim analizi yapan
akustik programına girilmiş. CATIA’dan çıkan IGS dosyası “ICEM Mesh Generator” a
giriyor ICEM dosyası ve Star CD’ye dosya transfer aracıyla geliyor. Buradan çeşitli
9
amaçlar minimize ya da maksimize ediliyor bir tane amaç vardı, zaten iki tane de girdi
değişkeni görülüyor.
Ön işleme ara yüzündeki ikonlardan bahsetmiştim girdiler, çıktılar, çözücüler. Mesela
“Logic Switch” denilen bir şey var. Bu mesela mantık akışını kesmenizi sağlayabilir.
Mesela bir analiz yaptınız o analizin sonucu işimize yaramıyor, dolayısıyla bir sonraki
programı çalıştırmak masraflı bir iş, orada durdurup bu artık çalışmıyor ve uygun
tasarım değildir deyip yeni girdi oluşturup yeni girdiyle devam etmek isteyebilirsiniz.
Dolayısıyla iş akışını sizin istediğiniz yerde kesebilirsiniz, diğer programı
çalıştırmayabilirsiniz. Bu tür swıtch opsiyonları var, ya da “Logic if” node’u var. Ya da
mesela bir programdan bir çıktı aldınız, çıktı şöyleyse şu programı çalıştır böyleyse
bu programı çalıştır gibi bir takım işlemler yapabilirsiniz.
D.O.E. burası önemli, bu başlı başına bir şey.
modeFRONTIER içerisine birçok farklı D.O.E
var, yani “Design of Experiments” (Deney
Tasarımları). Mesela her optimizasyon bir
başlangıç tahminiyle başlar, ya da bir grup
popülasyonla
başlar.
Mesela
genetik
algoritmalardan bahsedecek olursak elinizde
bir popülasyon olması lazım. Popülasyondaki
her bir parametre seti bizim bireyimizdir
(Individual). Bu bireyler arasında çifleşme
(crossover) tanımlanır ve mutasyon yapılır ve
bunlar arasında seçim (selection) yapılır. Yani
genetik algoritmanın üç kenar ayağı var
çiftleşme (crossover) mutasyon ve seçim
(selection). Genetik algoritma için elinizde bir
popülasyon olması lazım, bir grup çözüm ya
da deney olması lazım. Fakat global optimumu yakalamak önemli bir şey, yani
gerçek minimumu yakalamak bizim istediğimiz şey bunun için “domain” i mümkün
olduğunca cover etmeniz lazım, mümkün olduğunca kapsamanız lazım, uzayınızı,
tasarım uzayınızı. Yani değişkenlerinizi mümkün olduğunca uzayda, değişken
uzayınızda, dağıtmış olmanız lazım ki bu global optimumu yakalama şansınız artsın.
Dolayısıyla bununla ilgili, mesela şurada gördüğümüz son derece düzgün dağılım,
mesela üç değişkenimiz olsun değişken uzayımız bu. Üç değişken için son derece
düzgün noktalar görüyoruz, bu bizim istediğimiz bir şey. Buna full faktöriyel ile
generate edilmiş (oluşturulmuş) noktalar görüyoruz. Ama değişken sayımız arttıkça,
başlangıç popilasyonunuzun büyüklüğü hızla büyüyor, geometrik olarak büyüyor.
Dolayısıyla bunu kullanamıyoruz. Mesela üç değişkenimiz olsun, her birisinden üçer
tane alalım kendi aralıklarında. 27 tane başlangıç populasyonumuzun, başlangıç
noktamızın olması lazım. Diyelim ki dört değişkenimiz var, üçer tane alacağız 81’e
çıkıyor. Dolayısıyla geometrik olarak artıyor. Dolayısıyla pratikte her zaman
uygulayamıyoruz. Uygulayabilirsek bunu uygulayalım. Bunu uygulayamadığımız
yerlerde reduced faktöriyel ya da “Cubic Face Centered” ya da “Box Behnken” gibi bir
takım algoritmalarla uzayda düzgün dağılı noktalar oluşturabilirsiniz. Ya da başka
amaçlar içinde farklı noktalar oluşturabilirsiniz. Mesela “Robust Design Optimization”
biraz sonra açıklayacağım. Sağlam tasarımda bir nokta etrafında istatistiksel olarak
dağılmış bir “Claud of Points” bir noktalar bulutu yaratmanız gerekebilir. Dolayısıyla
bütün bunlar için farklı algoritmalar var. Ya da mesela random oluşturmak
10
istiyorsunuz. Ama random olarak noktaları oluşturduğunuz vakit belli bir bölgede
toplanabilir, kendi içerisinde “corralated” olabilir.
Random fakat “un corralated data” oluşturmak için mesela “Sobol” algoritması var.
Dolayısıyla bu noktaları, başlangıç noktalarını oluşturmak için farklı D.O.E.’ler var.
Burada mesela “corralation” dan bahsettim. Girdi noktalarınız kendi içerisinde “un
corralated” ise uzayda düzgün dağılmıştır ve girdi noktalarınız kendi içerisinde “un
corralated” ise girdiler ve çıktılar arasında bir “corralation” bir ilişki yakalayabilirsiniz.
Bu nerede ihtiyaç olur buna? Mesela çok sayıda parametreyle başladınız ama bu
parametrelerin hepsi aynı oranda sizin tasarımınızı etkilemiyor olabilir. Yoksa
parametre sayınız arttıkça yapmanız gereken çözüm sayısı geometrik olarak artıyor.
Parametre sayısını azaltmak isteyebilirsiniz. Mesela bir DOE’yle düzgün dağılı bir
takım noktalar oluşturup, bunlar için atıyorum elli kadar bir run attıktan sonra,
girdilerle çıktılar arasında bir “corralation” a bakabilirsiniz (ilişkiye bakabilirsiniz). Un
corralated olan, “corralation” ı sıfıra yakın olan noktaları, ya da parametreleri,
değişkenleri sabitleyip, diğer değişkenler üzerinden optimizasyon yapıp,
optimizasyon hızını arttırabilirsiniz. Dolayısıyla bu önemli bir şey, özellikle genetik
algoritmaları kullanıyorsanız noktaları nasıl oluşturduğunuz önemlidir. Burada mesela
“corralated” input data görüyoruz. Bu bizim istemediğimiz bir şey gördüğünüz gibi
değerler -1 ile 1 arasında değişiyor.
Burada noktalar, girdi değişkenleri kendi
içerisinde
“corralated”
görünüyor.
Buradaysa noktalar uzayda daha düzgün
dağılmış durumda dolayısıyla “uncorralated”
nokta
dağılımını
da
yakalayabiliyoruz.
Bu deney tasarımlarıyla ilgili bir internet sitesi var isterseniz yazabilirsiniz. Buradan
biraz daha detaylı bilgi elde edebilirsiniz. Mesela burada bir full faktöriyel nokta
dağılımını görüyoruz. Üç değişken
için
27
tane
farklı
nokta
oluşturulmuş. Yani başlangıç olarak
27 tane analiz yapacaksınız ondan
sonra
optimizasyona
başlayacaksınız. Ya da “Cubic Face
Centered” denilen bir algoritmayla
oluşturulmuş üç değişken için 15
tane nokta gerekli olmuş. Yani bir
“Curve Fitting” (Eğri uydurma)
yapacaksınız. İkinci derece etkilerin
yakalamak istiyorsunuz.
Bir parabol için, tek değişken olsun,
11
bir parabolu fit etmek için en az üç noktaya ihtiyacınız var. İki değişkeniniz varsa en
az 9 noktaya ihtiyacınız var, ya da üç değişkeniniz varsa 27 tane noktanız olmalı ki
ikinci derece etkileri görebildiğiniz ikinci dereceden bir fonksiyon fit edebilesiniz.
Bunlar için full faktöriyelde gördüğünüz gibi çok sayıda noktaya ihtiyacımız var, çok
sayıda analiz demek, ya da “Cubic Face Denterd” da daha da azalmış olduğunu
görüyorsunuz ya da “İnscribed Composit Disign” dediğimiz istatistiksel olarak daha
düzgün sonuçları elde etmenizi sağlayan, daha az noktayla daha düzgün istatistiksel,
ya da daha yeterli istatistiksel bilgi elde etmenizi sağlayan algoritmalar bunlar.
Bununla beraber girdi değişkenlerinin uzayda düzgün dağılmaması gerektiğini
söylemiştim. Mesela elinizde bir takım datalar var bir takım deneyleriniz ya da
çözümleriniz var. Bunları tekrarlamadan yeni noktalar oluşturulmak istiyorsunuz ki
düzgün dağılı noktalar elde edip düzgün bir “Curve Fit” elde edin mesela. Bunun için
“Incremental Space Filler” denilen bir algoritma var mesela. Bu şekilde sizin elinizde
var olan “data set” e mesafeleri mümkün olduğunca arttıracak şekilde, uzayda
mümkün olduğunca düzgün dağılacak şekilde sizin istediğiniz kadar nokta
ekleyebilirsiniz. Mesela bir optimizasyon yaptınız optimizasyonun sonucunda elinizde
bir takım çözümler var ve bunlar pareto üzerinde dağılmış durumda belli bir bölgede
gruplanmış durumda fakat siz bunun sonunda bir de “Curve Fit” elde etmek
istiyorsunuz. O zaman düzgün bir “Curve Fit” elde etmek için daha düzgün dağılı
noktalar elde etmek isteyebilirsiniz ya da bir corralation” bilgisi elde etmek
istiyorsunuz. Mesela optimizasyon sonucunda girdi değişkenlerinin “un-corralataed”
olma durumu kaybolabilir. Bunun için yeni analizler eklemek isteyebilirsiniz ya da
varolan analiz tablosundan, varolan nokta tablosundan noktaları düzgün bir şekilde
çıkartıp, ona göre girdileri “un-corralated” hale getirip girdilerle çıktılar arasında
“corralation” yakalamak isteyebilirsiniz. Bu tür algoritmalar var. ModeFRONTIER’ı
özel kılan şeyler bunlar aslında. Yani bu tür ince ayrıntılar optimizasyonla ilgili olan.
Yoksa hani birçok kişi bu Matlab’de de yapılıyor diyorlar mesela. Matlab’la da bir
ANSYS’i çalıştırabiliyorlar. Matlab rakip değil, yani Matlab’ı da biz satıyoruz sonuçta
ama bu iki programın farklı özellikleri açısından bunlar önemli ayrıntılar,
modeFRONTIER’ın kattığı; ModeFRONTIER’ın tamamlanmış bir araç olduğunu
anlatmaya çalışıyorum bunlarla aslında. D.O.E. için dört temel sebep: Bir kere
problem hakkında düzgün istatistiksel bilgi edinme, girdilerle çıktılar arasında düzgün
“corralation” elde etme, tepki yüzeyi oluşturmada tasarım uzayının düzgünce
taranmasını sağlama, düzgün tepki yüzeyleri elde etme, ve optimizasyon için iyi
başlangıç noktaları elde etme gibi... ModeFRONTIER’ın altında bir de en iyileme
sihirbazı var demiştim. Algoritmalardan “Scheduler” içerisinden “Optimization Vizard”
a bastığınız zaman bir tasarım için ne kadar süre ayırmak istiyorsunuz ya da bir
tasarımı, analizi ne kadar sürede yaptığınızı biliyorsunuz, toplam ne kadar süre
ayıracağınızı giriyorsunuz, buna göre size uygun bir algoritma vermeye çalışıyor;
veriyor diyemiyorum, yani çok yeterli değil, yeterli olması da mümkün değil ama size
bir öneri de bulunabiliyor. “Run Logs” a yani ikinci sekmeye geldiğim vakit burada
tasarım akışını görüyorsunuz. Her bir tasarım yapıldıkça bu logun içerisine ekleniyor.
Tamamlanmamış bir tasarım varsa, tamamlanamamış ya da bir şekilde
çözülememiş, bir hata oluşmuş bir tasarım varsa burada kırmızı olarak görüyorsunuz.
Mantık akışının nerede kesildiğini programlardan çıkan hata mesajlarının logların
görüp, buradan basitçe clicklerle ulaşabiliyorsunuz. Daha sonra bunları gösteririm
ayrıntılarıyla.
12
Son işleme ara yüzünde ise
birçok farklı chart araçları var.
Mesela burada burada paralel
charts
dediğimiz
bir
aracı
görüyoruz. Bu düşey eksenlerin
her birisi bir değişkenimiz olsun,
alt değerleri minimum değerleri,
üstte
maksimum
değerleri.
Girdilerle çıktıları bu şekilde bir
“Parallel Charts” üzerinde gezdirip
tasarımlar üzerinde filitreleme
yapabiliyorsunuz. Mesela sadece
optimalleri göster diyebilirsiniz.
Optimaller arasında bir filitreleme
yapabilirsiniz. Mühendislik olarak
seçim yapabilirsiniz. Ya da burada
“Response Surface” oluşturulmuş (tepki yüzeyi). Girdilerle çıktılar arasındaki ilişkiyi
belirleyen birtakım “Curve Fıttıng” ler yapıp değişimleri görebildiğiniz birtakım
fonksiyonlar elde edebilirsiniz ve bu fonksiyonları girdilere karşılık çıktılar olarak “plot”
ettirebilirsiniz ya da biraz önce bahsettiğim “corralation matrix”, istatistiksel olarak
girdilerle çıktılar arasında, ya da çıktıların kendi içerisinde “correlation”, ilişkilerini
istatistiksel olarak görebilirsiniz ve birçok farklı başka istatistiksel araçları da
içerisinde barındırıyor. Tepki yüzey modellemesinden bahsettim. İçerisinde birçok
farklı algoritma var, tepki yüzeyi modellemesi için de. En son 8 taneydi, herhalde arttı
bu. Bunlardan en önemlileri mesela “Radial Basis Functions”, “Neural Networks” ya
da “Polynomial Singular Value Decomposition” fiting gibi birçok farklı algoritmayla bu
tepki yüzeyi fonksiyonlarını oluşturabilirsiniz. Bunlarla ilgili bir örneğim var Arçelik’e
yaptığım bir çalışma. Bunun bir uygulaması. Bundan bahsedebilirim.
Gelelim Kararlı Tasarım’a (“Robust Design Optimization”). Şimdi diyelim ki bir üretim
yapıyorsunuz. Bir levhanız var, bir yere delik deleceksiniz mesela. Sizin üretim
esnasında matkabınız aşınabilir. Aşındığı zaman delik sizin tam tanımladığınız çapta
olmayabilir. Küçük istatistiksel değişimler olabilir, daha büyük ya da daha küçük
olabilir. Ya da delik tam sizin belirlediğiniz yere delinemeyebilir, sağa, sola, yukarı,
aşağı belli sapmalar olabilir; istatistiksel sapmalar olabilir. Dolayısıyla sizin üretim
hassasiyetlerinizden daha az etkilenecek tasarımı bulma işlemine “Robust Design
Optimization” deniyor. Yani sizin değişkenleriniz belli istatistiksel dağılımlar
gösterebilir, belli istatistiksel özellikler gösterebilir. Mesela burada düşey eksen amaç
ekseni olsun, yatay eksenler de bizim girdi değişkenlerimiz olsun. Şimdi burada A
tasarımı B tasarımına göre daha iyi görünmekle beraber A tasarımı girdi
değişkenlerindeki küçük değişimlerden daha fazla etkileniyor. Yani performansı daha
fazla düşüyor. Mesela delikteki yerin sapmasından A tasarımı daha fazla etkileniyor
olabilir. Dolayısıyla eğer sizin üretim hassasiyetiniz nispeten düşükse o zaman A
yerine B’yi üretip, daha az atıkla yine optimal, yani A’dan belki biraz daha, gerçek
optimal performans olarak biraz daha düşüktür ama daha az etkileniyordur ve
minimum performansı A’ya göre daha yüksek olabilir. Mesela A’da oluşabilecek
minimum performansa göre daha yüksek olabilir. Dolayısıyla üretim açısından,
mesela A yerine B tasarımı tercih edilebilir. Bu işleme “Robust Designn Optimization”
deniliyor. Bununla ilgili de içerisinde birtakım araçlar var. Bununla ilgili farklı D.O.E.
13
kullanmanız gerekiyor. Mesela bunu şimdi ne yapıyorsunuz? Önce bir optimizasyon
yapmanız gerekiyor. Optimal tasarımı buldunuz, “Curve Fit” ettiniz bir gözlem
yaptınız.
Sonra baktınız ki fit ettiğiniz “Curve” lerde A biraz daha sivri, iki tane nokta
seçebilirsiniz optimal nokta ya da optimale yakın nokta. Bu noktanın etrafında
istatistiksel dağılmış “Cloud of Points” (Noktalar Bulutu) yaratabilirsiniz D.O.E.’yle.
İstatiksel olarak yaratabilirsiniz bunu ve bu “Cloud of Points” için bu (noktalar bulutu)
için yeni analizler yapabilirsiniz. Bu analizlerin sonucunda girdilerle çıktılar arasında
bir
“corralation”
yakalayıp
çıktıların
istatistiksel
standart
sapmalarını
gözlemleyebilirsiniz. Bu işleme “Robust Design Optimization” deniyor.
Benim modeFRONTIER’da anlatacaklarım bu kadar bundan sonrası örnekler yani bu
giriş kısmıydı biraz uzun bir giriş oldu. Bunun dışında yaptığım bir CMS’ye bir çalışma
var, Arçelik’e bir çalışma yaptım, bir de benim kendi yaptığım bir “Crane
Optimization” denilen bir şey var. Üç tane örnek göstereceğim.
Bununla beraber burada da küçük bir örnek var. Mesela en basit optimizasyon
problemi bir kutu optimizasyonu. Bu
derslerde görülen bir optimizasyondur, ya
üstü açık bir kutu optimize edilir, ya
silindirik kutu optimize edilir. Optimizasyon
derslerinde
gösterilen
en
klasik
örneklerdendir. Burada mesela hacmini
333 cm3 tutmak istediğimiz, yüzey alanını
minimize etmek istediğimiz bir kutu olsun.
Bu kutu için, bu basit bir optimizasyon
problemidir,
burada
hacim
bizim
kısıtımızdır, çünkü sınırlamışız değerini. Şu değerde olsun demişiz. Yüzey alanını da
minimize etmek istediğimiz değer, bizim amacımızdır. ModeFRONTIER’da kurulmuş
ara yüzü böyle bir şeydir. Bu problem için iki tane değişkenimiz var, bizim girdi
parametrelerimiz iki tane, yarıçap ve yükseklik. Bunu modeFRONTIER’ın calculator
modülüne giriyorsunuz. D.O.E.’yi seçtiniz. BFGS algoritması seçilmiş. Burada yüzey
alanı ve hacim calculator’dan elde ediliyor. Yüzey alanı minimize edilmek istenirken,
hacim de 333 cm3 tutulmak isteniyor, böyle bir kısıt konmuş, bu şekilde
modeFRONTIER kurulabiliyor. Ya da bahsettiğim hoparlör kabini optimizasyonu:
Genişlik, yükseklik ve ayak yüksekliği gibi üç tane parametremiz var. Birinci mode
frekansı maksimize edilirken ağırlık minimize edilmek isteniyor. Kısıt yok, iki amaçlı
bir problem.
14
Burada mesela amaç uzayını
görüyoruz. Düşey eksen frekans
iken, yatay eksen ağırlık. Burada
yeşil bazı noktalar, biraz fazla
küçük ama bilmiyorum görebiliyor
musunuz? Şu üstte seçili olan yeşil
noktalar
modeFRONTIER
tarafından seçilmiş olan pareto
optimal tasarımlar. Buradaki her bir
nokta iki amaç için oluşturulmuş
amaç uzayında birer tasarım, yani
ANSYS tarafından analiz edilmiş,
ANSYS’ten elde edilmiş sonuçlar.
Amaç uzayında çizilmiş. Dolayısıyla
en iyilerin olduğu küme, burada tek
bir en iyiden bahsedemiyoruz, çünkü iki amacımız var.
En iyilerin, bu tasarımlar arasından, bu noktalar arasından en iyilerin oluşturduğu
küme paretoyla tanımlanıyor ve gördüğünüz gibi modeFRONTIER tarafından
seçilmiş olan yeşil tasarımlar bu hoparlör kutusu için en iyi tasarımlar. Dolayısıyla
gereksiz tasarımları ve kötü tasarımları elemiş oluyorsunuz. Elinizde az sayıda, her
birisi bir amaç bakımından diğerine göre daha iyi olan tasarımlar ortaya çıkmış
oluyor. Mesela böyle bir hoparlör kutusu üretiyorsunuz. Maliyeti de minimize
edeceksiniz, frekans özelliklerini maksimize edeceksiniz, iyi bir tasarımla piyasaya
çıkmak istiyorsunuz. Ama farklı müşterileriniz var, mesela farklı müşteriler farklı
paralar harcamak isteyebilir. Bunlardan o zaman ne olur? Piyasaya üç dört tane, ya
da beş tane farklı tasarımla çıkabilirsiniz. Dört beş tane, birisi diğerinden daha
ucuzdur ama performansı daha yüksektir diğeri biraz daha pahalıdır ama performansı
ucuz olanın performansı düşüktür, ne bileyim pahalı olanın performansı biraz daha
yüksektir. Dolayısıyla farklı ürünlerle çıkmanızı da modeFRONTIER sağlayabilir.
Gördüğünüz gibi elde edilmiş bir takım
optimal çözümler ve benim seçtiğim
birkaç çözümler ve bunların titreşim
frekansları, ağırlıkları görülüyor. Bu
şekilde birtakım sonuçlar elde edilmiş.
Bunlar Esteco’nun sayfasından aldığım,
Esteco makalalerinden aldığım bir örnek.
15
Yine bir motor en iyilemesi ve akışkan analizleri yapılmış. “Swirl number” denilen
burgu sayısı arttırılmaya çalışılmış, çıkış basıncı düşürülmeye çalışılmış, böyle bir
takım makaleler. Bunlar akışkan analizleri. Buzdolabıyla ilgili bir makale vardı. Beyaz
eşya sektörüyle ilgiliydi. Mesela motor gürültüsünün azaltılması, bir buzdolabının
motor gürültüsünün azaltılması.
Burada ne kullanmışlar tam bilmiyorum. Makalelerden alıntı bunlar. Titreşim
azaltılmaya çalışılmış. Bununla ilgili neler kullanılmış? “Sysnoise” kullanılmış. ANSYS
kullanılmış. “Modal Superposition” yapılmış. Dış, hava ortamını da modellemeniz
gerekiyor bunun için, akustik analiz... Bu şekilde bir takım çalışmalar yapılmış. Fren
diski uygulaması bu NASTRAN, PATRAN kullanılmış herhalde. CATIA çizimi bu. Bu
şekilde bağlantıları göstermiş.Bu bir alıntı: Bir C++ kitabı var benim çok okuduğum.
“Barnes Stroustrup”. O her ünitenin başında böyle bir alıntı koyar. Oradaki
ünitelerden bir tanesinde adamın birisinin söylediği bir laf: “Premature optimization is
the root of all evil” demiş. Diğeri de “On the other hand, we can not ignore efficiency”
demiş. Yani global optimal diye bir şey pek yok. Yani onu bulmak her zaman
mümkün olmayabilir. Ama bir şekilde, bir şeyleri optimize etmek durumundayız.
16