View
40
Download
5
Category
Preview:
Citation preview
T.C.
BILECIK SEYH EDEBALI ÜNIVERSITESI
MÜHENDISLIK FAKÜLTESI
BILGISAYAR MÜHENDISLIGI
ARAÇ SANZIMAN MODELLEMESI
Mustafa Köstek
BITIRME ÇALISMASI
Ögr.Gör.Murat ÖZALP
HAZIRAN-2015
BILECIK
T.C.
BILECIK SEYH EDEBALI ÜNIVERSITESI
MÜHENDISLIK FAKÜLTESI
BILGISAYAR MÜHENDISLIGI
ARAÇ SANZIMAN MODELLEMESI
Mustafa Köstek
BITIRME ÇALISMASI
Ögr.Gör.Murat ÖZALP
HAZIRAN-2015
BILECIK
BILDIRIM
Bu kitaptaki bütün bilgilerin etik davranıs ve akademik kurallar çerçevesinde elde edildi-ginive yazım kurallarına uygun olarak hazırlanan bu çalısmada bana ait olmayan her türlüifade ve bilginin kaynagına eksiksiz atıf yapıldıgını bildiririm.
DECLARATION
I hereby declare that all information in this document has been obtained and presentedin accordance with academic rules and ethical conduct. I also declare that, as required bythese rules and conduct, I have fully cited and referenced all materials and results that arenot original to this work.
Imza
Mustafa KÖSTEK
5.6.2015
ii
ÖZET
BITIRME ÇALISMASI
ARAÇ SANZIMAN MODELLEMESI
Ögrencinin Adı SOYADI
BILECIK SEYH EDEBALI ÜNIVERSITESIMÜHENDISLIK FAKÜLTESI
BILGISAYAR MÜHENDISLIGI BÖLÜMÜ
Danısman:Ögr.Gör Murat ÖZALP
2015, 46 Sayfa
Jüri Üyeleri Imza
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Öncelikle bir aracın nasıl yürüdügü fiziksel olarak açıklanacak,daha sonra ise masaüstü
uygulama ortamında teorik bilgiler uygulamaya dökülerek uygulamada kullanılan C#
programlama dilinde kulanılan araç kutuları anlatılıp algoritma gerçeklenerek bir ma-
saüstü uygulaması olusturulmus,bunun yanında kullanıcı tarafından vites degistirme ve-
rilerini bir verikümesi olarak kaydetip bir tus vasıtasıyla egitilerek kullanıcının egittigi
verilere göre vites degistirme islemlerini otomatik gerçeklestiren i-tronic vites tasarlan-
mıstır.Yanı sıra yakıt tüketimi,araç performansları,tork kavramına ciddi sekilde deginile-
cektir.
Anahtar Kelimeler: fizik motoru,makine ögrenmesi,yakıt tüketimi,döndürme kuvveti,performans
iii
ABSTRACT
THESIS
VEHICLE GEARBOX MODELLING
Mustaf Köstek
BILECIK SEYH EDEBALI UNIVERSITYENGINEERING FACULTY
DEPARTMENT OF COMPUTER ENGINEERING
Advisor:Lect. Murat ÖZALP
2015, 46 Pages
Jury Sign
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
First, a car physics engine based on the physics knowledge will be carried out. In addition to
project into a vehicle shift of pre-gearbox data are recorded in a data set according to the user’s
data set via a button educating a prototype that performs the gear changes according to the limits
determined by the user’s interaction was conducted.
Keywords:the physics engine, machine learning, fuel consumption, torque, performance
iv
ÖNSÖZ
Bu projenin yazımının basından sonuna kadar emegi geçen ve beni bu konuya yönlen-
diren saygı deger hocam ve danısmanım Sayın Murat ÖZALP’a tüm katkılarından ve
hiç eksiltmedigi desteginden dolayı tesekkür ederim.
Mustafa Köstek
v
Içindekiler
* v
SEKILLER TABLOSU viii
1 GIRIS 1
2 Araç nasıl yürür? 2
2.1 Tork nedir? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2.2 Dinamik kuvvetleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.3 Sürtünme kuvvetleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.3.1 Lastik yuvarlanma sürtünmesi . . . . . . . . . . . . . . . . . . . 4
2.3.2 Aerodinamik . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.4 Sanzıman Ve Disli Oranları . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.5 Tüketim verileri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.6 I-tronic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3 Naive Bayes sınıflandırıcı 10
3.1 Sınıflandırma Problemi . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.2 Nicelik Kümesi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.3 Bayes Karar Teoremi . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.4 Naive Bayes Sınıflandırıcı . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4 C# nedir? 14
4.1 Tasarım hedefleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4.2 Elestiri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
4.3 Performans . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
4.4 Platform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
4.5 Projeye DLL’lerin Eklenmesi . . . . . . . . . . . . . . . . . . . . . . . . 15
4.6 Gösterge Ve Özelikleri . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
4.7 Visual C# Chart Kullanımı ( Grafik ) . . . . . . . . . . . . . . . . . . . . 20
4.8 OleDbConnection Sınıfı . . . . . . . . . . . . . . . . . . . . . . . . . . 21
vi
5 Programlama 26
5.1 Algoritmalar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
5.1.1 Gaza basma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
5.1.2 Tekerler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
5.1.3 Araç kuvveti . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
5.1.4 Dıs kuvvetler . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
5.1.5 Form yüklenirken . . . . . . . . . . . . . . . . . . . . . . . . . . 29
5.1.6 Her timer periyodunda . . . . . . . . . . . . . . . . . . . . . . . 29
5.1.7 Hız sabitleyici tusu . . . . . . . . . . . . . . . . . . . . . . . . . 29
5.1.8 i-tronic tusu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
5.1.9 Gaza basma ve fren yapma . . . . . . . . . . . . . . . . . . . . . 30
5.1.10 Vites artırma azaltma . . . . . . . . . . . . . . . . . . . . . . . . 31
5.2 UML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
5.2.1 Naif bayes algoritması . . . . . . . . . . . . . . . . . . . . . . . 31
5.2.2 Anaforma ait islev ve üyeleri . . . . . . . . . . . . . . . . . . . . 31
5.3 Araç Ve Harita Veritabanı . . . . . . . . . . . . . . . . . . . . . . . . . . 33
6 SONUÇLAR VE ÖNERILER 35
SONUÇLAR VE ÖNERILER 35
KAYNAKLAR 36
ÖZGEÇMIS 37
vii
SEKILLER TABLOSU
1 Bir araç farklı devir bantlarında farklı tork degerleri üretir[1] . . . . . . . 2
2 Yokus yukarı ve asagı inen araça etkiyen kuvvetler . . . . . . . . . . . . 3
3 Bir aktarma organı [5] . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
4 Yeni bir proje açılması . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
5 Sıralı olarak bir projede dll olusturma ve çagırma adımları . . . . . . . . 17
6 Dll referans gösterme islemi . . . . . . . . . . . . . . . . . . . . . . . . 18
7 Referans alınan komponentin içerigi [8] . . . . . . . . . . . . . . . . . . 19
8 C# bir chart görünümü . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
9 Oledb veri saglayıcıları . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
10 Baglantı olusurulduguna dair çıktı . . . . . . . . . . . . . . . . . . . . . 24
11 Oledb nesne ile baglantı olusturuldugunun çıktısı . . . . . . . . . . . . . 25
12 Naive bayes sınıfına ait islev ve alanları . . . . . . . . . . . . . . . . . . 32
13 Ana forma ait islev ve alanları . . . . . . . . . . . . . . . . . . . . . . . 32
14 Veritabanına ait bilgileri depolayan tablolar . . . . . . . . . . . . . . . . 34
viii
1 GIRIS
Bir arac nasıl hızlanır hızı nasıl limit hız olur bu soruların cevabı aslında iki bilinme-
yenli bir optimizasyon problemi olarak göze çarpar birinci parametre gaza basılma oranı
ikincisi vitesin pozisyonudur.Dıs etkenler olarak ise rüzgar ve yol sürtünmesi yanı sıra
araçın bulundugu yolun egimide bu optimizastonu etkileyen önemli unsurlardandır. Gü-
nümüzde gözde konulardan olan vites tipleri önemli hususlardandır.Genel olarak iki adet
mod bulunmaktadır;eco ve spor modu gibi.Bu teknolojiye yenilikçi bir teknoloji ile farklı
bir üslup getirmeyi amaçlamaktadır.
1
2 Araç nasıl yürür?
Aracın çalısması ile birlikte araca gaz vererek araçtan tork elde edilir.Bu tork araçta
aktarma organları ile harekete dönüstürülerek aracın hareket etmesi saglanır.
2.1 Tork nedir?
Her aracın motor karakteristigine göre belirli devir bandlarında belli tork degerleri üre-
tir.Bu tork döndürme kuvveti olarak tanımlanır.Sekil 1’de oldugu gibi bir aracın motoruna
ait tork grafigi gösterilmistir.
Sekil 1: Bir araç farklı devir bantlarında farklı tork degerleri üretir[1]
2
Sekil 2: Yokus yukarı ve asagı inen araça etkiyen kuvvetler
2.2 Dinamik kuvvetleri
Araçlar bulundugu yolun egim açısına göre bir ivmelenme söz konusudur.Sekil 2’de
buna örnekler nitelikte çözümlenmistir.[2] Görüldügü gibi yolun egimine göre araç inis
ve çıkıslarında araça etki eden kuvvetler .
k sürtünme katsayısı,F aracın motor kuvveti,g yerçekimi ivmesi,m ise arabanın kütlesi
olarak nitelendirilmistir.
2.3 Sürtünme kuvvetleri
Temel olarak araça etki eden sürtünme kuvveti lastikler ile yol arasındaki kuvvet-
tir.Diger bir kuvvet ise hava sürtünme kuvveti olarak nitelendirilmistir.Bu iki kuvvet araca
negatif olarak etki eden kuvvetler olarak adlandırılabilir.
3
2.3.1 Lastik yuvarlanma sürtünmesi
Yüzyıllar önce bulunan tekerlek icat edilerek hem sürtünmeden dogan negatif kuvvet
minimize edilmistir.Yuvarlanma sürtünmesi normal olarak sürüklenme kuvvetinin yakla-
sık olarak ellide biri kadardır.Böylelikle araç kuvvetinden daha büyük oranlarda istifade
edilmistir. Baslıca yüzeylerin yuvarlanma sürtünme kuvvetleri asagıdaki gibidir:[3]
• Çelik ray üstünde çelik tekerlek 0.001-0.002
• Sambrelsiz teker 0.002-0.005
• Kamyon lastigi(asfalt) 0.006-0.01
• Beton-otomobil lastigi 0.01-0.015
• Asfalt-otomobil lastigi 0.03
• Katı kum otomobil lastigi 0.04-0.08
• Gevsek kum-otomobil lastigi 0.2-0.4
Mesela,beton üzerinde hareket eden 2 ton agırlıgındaki bir otomobile etki eden sür-
tünme kuvvetini hesaplayalım... G=2000 * 9,81 =19.620 Newton c=0.015 alalım (yukar-
daki tablodan) Bu durumda yuvarlanma sürtünme kuvvetimiz Fy=19.620 * 0,015 = 294,3
N olarak hesaplanır. Yukarıda da bahsettigim gibi yuvarlanmadan dolayı olan sürtünme
kaybı çok küçük. Sonucumuz 294 N oda yaklasık 30 kg civarında bir kuvvete denktir.
Sayet lastik ile beton arasındaki kaymadan mütevellit sürtünme sorulmus olsaydı bu du-
rumda sürtünme katsayımız f=0,7 olacaktı ve sonucumuz 0,7*19620 =13734 N olacaktı ,
buda digerinin yaklasık 47 katı büyüklükte bir sürtünme kuvveti olurdu.
4
2.3.2 Aerodinamik
Düsük hızlarda hava direnci diger kayıplar yanında oldukça düsük mertebelerdedir.
Ancak hız 30-40 km/h degerine ulasınca hava direnci önem kazanır. Bunun sebebi hava
direncinin hızın karesiyle dogru orantılı olarak artmasıdır. Geometrik boyutları araç dıs
formuna baglı direnç katsayısı (cw) belli olan bir araca herhangi bir hızda etkiyen direnç
kuvveti hesaplanabilir. Örnek olarak; hızı 30 m/sn (108 km/h) olan bir aracın rüzgara dik
kesit yüzeyi 3m2kare olsun. Aracın direnç katsayısı Cw =0,45 ise bu araca etkiyen direnç
(1)’nolu ifade ile bulunur.[4]
D = 0,5 ·d · cw ·A ·V 2 (1)
Bura da ;
• d: Havanın yogunlugu ( 1.255kg/m2 )
• A: Aracın dik kesit alanı (m2 )
• V: aracın hızı ( m/sn ) dir.
• D = 0,5x1,255x0,45x3x(30)2
• D= 762,4 Newton
Bu kuvvet 80 kg agırlıgında bir kütleyi havaya kaldırmak için gerekli olan kuvvete
esittir. Cw degeri bir cismin dıs formu sebebiyle düzgün dogrusal akım içinde olusturdugu
süreksizlik ve girdaplar gibi akım bozuntularının sonucu ortaya çıkar. Dıs form itibariyle
cisim ne derece az bozuntuya sebep olursa direnç katsayısı ve buna baglı olarak direnç
kuvvetide o derece küçük olur. Görüldügü gibi hızı ve geometrik boyutları belli olan
bir aracın hava direnç kaybını azaltmanın tek yolu aracın dıs formuna baglı olan direnç
katsayısı Cw’yi azaltmaktır. Cw degerinin azaltılması:
• Motor gücü sabit bir aracın daha yüksek hıza erisebilmesi
5
• Belli hıza çıkması istenen araca daha küçük motor takılabilmesi
anlamına gelir.Binek araçları için ekonomi açısından ikinci sık yarıs arabalarında ise
yüksek performans hedeflendiginden birinci sık Cw degerinin nemini ortaya koyar. Di-
renç katsayısı Cw’nin azaltılabilmesi için araç formları gün geçtikçe aerodinamikteki
adıyla damla formuna benzetilmeye çalısılmaktadır. Damla formunun özelligi dogrusal
akımda bilinen en az bozuntuya sebep olan yapı olmasıdır.
2.4 Sanzıman Ve Disli Oranları
Motordaki yüksek torklu kuvvetten optimum derecede verim elde etmek için disli ve
aktarma organları kullanılır.Böylelikle hem yakıttan hemde hızlanma ve performansı en
yüksek derecede verim elde edilir. Basit bir disli modeli ile anlatayım;Motordan sanzı-
mana gücü aktaran asagıdaki en soldaki küçük disli olsun. (ortadaki 2 katı, sagdaki 4
katı büyüklügünde yani 1:1, 2:1 ve 4:1) Bizim motorumuzun ürettigi 1000 devirde tork
degeri 100 Nm olsun. (yani küçük dislideki gücümüz) simdi ortadaki disli ile küçük dis-
liyi birlestirelim. Ortadaki, küçügün 2 katı olduguna göre 1000 devir dönen küçük disli
2 katı büyüklügündeki disliyi 1000/2=500 kez döndürecektir. 1 dakikadaki tur (devir) sa-
yısı azaldı ancak bu durum ihtiyacımız olan torku arttıracak. is= kuvvet ∗mesa f e (mesafe
burada dislimizin oranı oluyor yani 2’yi kullanacagız) formülünde bizim için is elde ede-
cegimiz torku ifade ediyor, kuvvet ise motordan ilk çıkan güç yani 100 Nm. Hesabımız
100× 2 = 200Nm.Hızlıca en büyük disliyi de hesaplayacak olursak 100× 4 = 400Nm
oluyor. Ama tur sayısı (1000/4) 250 oluyor bu sefer.Birinci vitesde duran aracımız kalkıs
yapacak ve en yüksek güce ihtiyacımız var, bu yüzden 400Nm üreten disli birinci vites
digeri de 2. vites olacaktır. Birinci viteste tur sayısı az oldugu için de aracımız hız kazan-
dıkça son devire ulasılacak ve 2. vitese atıldıgında tur sayısı da artmıs olacak ve aracımız
hız kazanmaya devam edecek, bu arada araç ilk hareketini artık kazandı belirli bir hıza
ulastıgı için ilk bastaki kadar yüksek güce ihtiyacı kalmadı bu yüzden 200Nm gayet ye-
terli.Iste sanzımanın en basit tanımı budur. Sanzıman tabi bunun biraz daha karmasık hali
ama temel mantık yukarıdaki örnek ile aynı.
6
Sekil 3: Bir aktarma organı [5]
Sanzıman disli oranları otomobilde aracın 0-100 oranından son hızına gibi performans
degerlerine etki eder, peki bizim ne isimize yarar? Sanzıman disli oranlarını bildigimiz bir
otomobilin son hızını hesaplayabiliriz ya da lastik boyutu degistirlecegi zaman dogru hız
bilgisine ulasabiliriz. Bu hesaplama yukarıdaki 3 disli örneginden biraz daha karmasık.
O örnekte lastik ebatı ve diger önemli etkenleri gözardı ederek kaba bir hesap yapmıstık.
Artık hesabımızda jant çapı, lastik yanagı, lastik ebatı ve son disli oranını da kullanaca-
gız.Rastgele bir araç düsünelim.Düz viteste oranlar 1.vites: 3.626, 2. vites: 2.188, 3. vites:
1.541, 4. vites: 1.213, 5. vites: 1.000, 6. vites: 0.767 ve son disli oranı 4.100. Jant ölçüsü
17 inç, lastik ebatı 215 ve lastik yanagı 45.Simdi gelelim hesabımıza,Hızı bulmak için
önce tekerlegin yuvarlanma dairesini ve tekerlege aktarılan devri bulmamız gerekiyor.
1.Formül:Tekerlek yuvarlanma dairesi = (( jant çapı(inc)*25,4)+(lastik genisligi*yanak
yüksekligi*2))*Pi sayısı Hesabımız: ((17*25.4)+(215*0.45*2))*3,141= 1.963m
2. Formül:Tekerlege aktarılan devir = Devir(rpm)/son disli oranı/vites oranı/1000 Hesa-
bımız:6500/4.100/3.626/1000=0.437
3. ve son Formül:Hız = Tekerlek yuvarlanma dairesi x tekerlege aktarılan devir x 60
1.963*0.437*60= 55.35 km/saat Gördügümüz gibi aracın 1. vitesteki son hızı 55.35 km
çıktı.
7
2.5 Tüketim verileri
Araçların tüketim verileri genel olarak su sekilde tayin edilir;Sehir içi tüketim veri-
leri 50 km/saat ve ortalama hız 20 km/saat olacak sekilde dur kalklar ile mesafeye göre
ortalama alınarak 100 km’deki tüketim degeri öngörülür.Sehir dısı tüketim degerleri ise
maksimum 120 km/saat hızla ve ortalama hızı 90 km/saat olacak sekilde mesafeye göre
ortalama alınarak 100 km deki ortalama tüketim degerleri tayin edilir. Temel olarak 20
km/saat hızda aracın tüketim degerlerini iki adet degiskenimiz vardır bu hızda iken bu-
lundugu motorun devri ve motora ne kadar gaz verildigidir. Bu iki parametreyi biz birinci
dereceden iki bilinmeyenli denklem sistemine çevirip bu parametrelerin cevabı olarakta
tüketim degerlerini yazarsak bu iki katsayı aracılıgıyla biz anlık olarak tüketim degerini
çıkartabiliriz söyleki;bir araç var sehir içi 100 km’de 12 litre,sehir dısı 100 km’de 7 litre
yakıt tüketsin.O zaman:
7 = (100/90)∗ (17∗ thr+dev∗55) (2)
12 = (100/20)∗ (4∗ thr+dev∗30) (3)
thr degeri ve dev degeri programda kosturulacak olan katsayılardır.Bu katsayılar yuka-
rıdaki denklemde görüldügü gibi iki adet denklemden elde edilir.Mantıksal olarak yakıt
tüketimi gaza ne kadar basıldıgı,motor devir büyüklügü ile dogru orantılıdır.Yukarıdaki
denklemde görülen degerler sırasıyla 20 ve 90 km/saat hızlarında giden aynı araca ait
olan tüketim deger esitsizligi (4) nolu denklem ile temsil edilir.
x,y =
5 32
17 55
2.4
6.1
(4)
Buradan thr ve dev degerleri elde edilir.Sonra ise bunlar formülde yerine konarak 100 km
de ve saatteki yakıt tüketimi bulunur.
8
Tablo 1: Datatable’a kayıtları tutan soyut küme
Önceki geçilen vites devir hız
1 2 33 15
2 3 45 37
3 4 38 42
4 3 18 29
3 2 16 16
2 1 13 9
2.6 I-tronic
Bu vites tipinde kullanıcının kendi optimizasyonuna göre vites attırıp azaltma bilgile-
rini ait belirli parametreleri bir kayıtta tutarak bir tus vasıtasıyla i-tronic moduna geçilir.Bu
modda önceden kayıt edilmis verilere isleyip vites degistirmeye ait sınırlarını belirleye-
rek bu parametreler dahilinde ilgili vitesi her bir zaman tikinde sorgular.Eger bu modda
iken vites islemi kullanıcı tarafından yapılırsa moddan çıkılır ve yeniden vites degisim-
lerinde parametreler sıfırlanan veritabanına kayıt edilir(sıfırlanır). Tablo 1’de bir egitim
verisi gösterilmistir.
9
3 Naive Bayes sınıflandırıcı
Naïve Bayes Sınıflandırıcı adını Ingiliz matematikçi Thomas Bayes’ten (yak. 1701
- 7 Nisan 1761) alır. Naïve Bayes Sınıflandırıcı Örüntü tanıma problemine ilk bakısta
oldukca kısıtlayıcı görülen bir önerme ile kullanılabilen olasılıkcı bir yaklasımdır. Bu
önerme örüntü tanıma da kullanılacak her bir tanımlayıcı nitelik ya da parametrenin is-
tatistik açıdan bagımsız olması gerekliligidir. Her ne kadar bu önerme Naive Bayes Sı-
nıflandırıcısının kullanım alanını kısıtlandırsa da, genelde istatistik bagımsızlık kosulu
esnetilerek kullanıldıgında da daha karmasık Yapay sinir agları gibi metotlarla karsılas-
tırabilir sonuçlar vermektedir. Bayes Teoremi Naive Bayes sınıflandırıcısı Bayes teore-
minin bagımsızlık önermesiyle basitlestirilmis halidir. Bayes teoremi (5) nolu denklemle
ifade edilir.
P(A|B) = P(B|A)P(A)P(B)
(5)
P(A|B); B olayı gerçeklestigi durumda A olayının meydana gelme olasılıgıdır (bakınız
kosullu olasılık)
P(B|A); A olayı gerçeklestigi durumda B olayının meydana gelme olasılıgıdır
P(A) ve P(B); A ve B olaylarının önsel olasılıklarıdır. Burada önsel olasılık Bayes te-
oreminine öznellik katar. Diger bir ifadeyle örnegin P(A) henüz elde veri toplanmadan
A olayı hakkında sahip olunan bilgidir. Diger taraftan P(B|A) ardıl olasılıktır çünkü veri
toplandıktan sonra, A olayının gerçeklesmis oldugu durumlarda B olayının gerçeklesme
ihtimali hakkında bilgi verir.
3.1 Sınıflandırma Problemi
Naive Bayes Sınıflandırması Makine ögreniminde ögreticili ögrenme alt sınıfındadır.
Daha açık bir ifadeyle sınıflandırılması gereken sınıflar(kümeler) ve örnek verilerin hangi
sınıflara ait oldugu bellidir. E-posta kutusuna gelen e-postaların spam olarak ayrıstırıl-
ması islemi buna örnek verilebilir. Bu örnekte spam e-posta ve spam olmayan e-posta
ayrıstırılacak iki sınıfı temsil eder. Elimizdeki spam ve spam olmayan e-postalardan ya-
ralanarak gelecekte elimize ulasacak e-postaların spam olup olmadıgına karar verecek
10
bir Algoritma da ögreticili makina ögrenmesine örnektir. Sınıflandırma isleminde genel
olarak elde bir örüntü (pattern) vardır. Buradaki islem de bu örüntüyü daha önceden ta-
nımlanmıs sınıflara sınıflandırmaktır. Her örüntü nicelik (feature ya da parametre) kümesi
tarafından temsil edilir.
3.2 Nicelik Kümesi
Yine yukarıda bahsedilen spam e-posta örneginden devam edilecek olunursa; Posta
kutumuzda bulunan spam e-postaları spam olmayan e-postalardan ayıran parametreler-
den olusan bir küme, meselaikramiye,ödül gibi sözcüklerden olusan, nicelik kümesine
örnektir. Matematiksel bir ifadeyle nicelik kümesi (6) nolu ifade ile temsil edilir.
x(i), i = 1,2, . . . ,L (6)
, ise (7) nolu ifade edilecektir.
x = [x(1),x(2), . . . ,x(L)]T (7)
∈ RLL-boyutlu nicelik vektörünü olusturur. x ∈ RL verildigine göre ve S ayrıstırılacak
sınıflar kümesiyse, Bayes teoremine göre (8) numaralı ifade yazılır.
P(Si|x)∗P(x) = P(x|Si)∗P(Si) (8)
ve (9) nolu ifade ile tanımlanır.
P(x) =L
∑i=1
p(x|Si)P(Si) (9)
• P(Si); Si’nin öncel olasılıgı i=1,2,. . . ,L,
• P(Si|x); Si’nin ardıl olasılıgı
• P(x); x in Olasılık yogunluk fonksiyonu(oyf)
11
• P(x|Si); i = 1 = 2, . . . , L, x’in kosullu oyf’si
3.3 Bayes Karar Teoremi
Elimizde sınıfı belli olmayan bir örüntü olsun. Bu durumda (10) nolu ifade söz konu-
sudur.
x = [x(1),x(2), . . . ,x(L)]T ∈ RL (10)
sınıfı belli olmayan örüntünün L-boyutlu nicelik vektörüdür. Spam e-posta örneginden
gidecek olursak spam olup olmadıgını bilmedigimiz yeni bir e-posta sınıfı belli olmayan
örüntüdür. Yine Si|x’in atanacagı sınıf ise; Bayes karar teorisine göre x sınıf Si’ya aittir
eger
P(Si|x)> P(S j|x),∀ j 6=, i (11)
diger bir ifadeyle
P(x|Si)P(Si)> P(x|S j)P(S j),∀ j 6=, i (12)
3.4 Naive Bayes Sınıflandırıcı
Verilen bir x’in (x = [x(1),x(2), ...,x(L)]T ∈ RL) sınıf Si’ye ait olup olmadıgına karar
vermek için kullanılan yukarıda formüle edilen Bayes karar teoreminde istatistik olarak
bagımsızlık önermesinden yararlanılırsa bu tip sınıflandırmaya Naive bayes sınıflandırıl-
ması denir. Matematiksel bir ifadeyle (13) numaralı
P(x|Si)P(Si)> P(x|S j)P(S j),∀ j 6=, i (13)
ifadedeki P(x|Si) terimi yeniden yazılırsa (14) nolu ifade gibi olacaktır.
P(x|Si)≈L
∏k=1
P(xk|Si) (14)
12
böylece Bayes karar teoremi asagıdaki sekli alır.Bayes karar teorisine göre x sınıf Si ya
aittir eger (15)’u saglıyorsa
P(Si)L
∏k=1
P(xk|Si)> P(S j)L
∏k=1
P(xk|S j) (15)
P(Si) ve P(S j) i ve j sınıflarının önsel olasılıklarıdır.Elde olan veri kümesinden degerleri
kolayca hesaplanabilir. Naive bayes sınıflandırıcının kullanım alanı her nekadar kısıtlı gö-
züksede yüksek boyutlu uzayda ve yeterli sayıda veriyle x’in (nicelik kümesi) bilesenleri-
nin istatistik olarak bagımsız olması kosulu esnetilerek basarılı sonuçlar elde edilebilinir.
13
4 C# nedir?
C# Programlama Dili,Microsoft’un gelistirmis oldugu yeni nesil programlama dilidir.[10]
C#, .NET orta seviyeli programlama dillerindendir. Yani hem makine diline hem de insan
algısına esit seviyededir. Buradaki orta ifadesi dilin gücünü degil makine dili ile günlük
konusma diline olan mesafesini göstermektedir. Örnegin; Visual Basic .NET (VB.NET)
yüksek seviyeli bir dildir dersek bu, dilin insanların günlük yasantılarında konusma biçi-
mine yakın sekilde yazıldıgını ifade etmektedir. Dolayısıyla VB.NET, C#.NET’ten daha
güçlü bir dildir diyemeyiz. Programın çalısması istenen bilgisayarlarda framework kurulu
olması gerekmektedir. (Windows 7 ve Windows Vista’da .NET Framework kuruludur)
4.1 Tasarım hedefleri
ECMA tarafından C# dilinin tasarım hedefleri söyle sıralanır:
• C# basit, modern, genel-amaçlı, nesneye yönelik programlama dili olarak tasarlan-
mıstır.
• Çünkü yazılımın saglamlılıgı, güvenirliligi ve programcıların üretkenliligi önemli-
dir. C# yazılım dili, güçlü tipleme kontrolü (strong type checking), dizin sınırlar
kontrolü (array bounds checking), tanımlanmamıs degiskenlerin kullanım tespiti,
(source code portability), ve otomatik artık veri toplama gibi özelliklerine sahiptir.
• Programcı portatifligi özellikle C ve C++ dilleri ile tecrübesi olanlar için çok önem-
lidir.
• Enternasyonal hale koymak için verilen destek çok önemlidir.
• C# programlama dili sunucu ve gömülü sistemler için tasarlanmıstır. Bununla bir-
likte C# programlama dili en basit islevselli fonksiyondan isletim sistemini kullanan
en teferruatlısına kadar kapsamaktadır.
14
• C# uygulamaları hafıza ve islemci gereksinimleri ile tutumlu olmak uzere tasarlan-
mıstır. Buna ragmen C# programlama dili performans açısından C veya assembly
dili ile rekabet etmek için tasarlanmamıstır
4.2 Elestiri
C# konusunda elestiriler tabii ki var. En önemlisi using ile hangi referansları kullana-
cagımızı çok iyi bilmeliyiz. Ayrıca süslü parantez "" ve noktalı virgül ";" karakterlerini
çok sevmemiz ve asla unutmamamız gerekmektedir.
4.3 Performans
Digerleri gibiSanal Makine’ye dayalı dillerden biridir, C# programlama dili direkt yer-
lesik kod’a derleyen dillerden daha yavastır.
4.4 Platform
.NET Microsoft uygulama bonservisi Windows üzerinde geçerlidir. Fakat C# program-
larını Windows, Linux veya MacOs üzerinde yürüten baska uygulamalar da yer almakta-
dır. Mono(software)ve DotGnu
4.5 Projeye DLL’lerin Eklenmesi
Birçok progamda görmüsüzdür bu dosyayı.Ya da isletim sistemi dosyalarının bulun-
dugu yerde mutlaka karsımıza çıkmıstır.[7]Dll dosyaları içinde çalısabilir kod bulundu-
ran kendi basına çalısamayan,executable dosyalar tarafından dinamik ya da static olarak
çagrılıp kullanılabilen,içinde prosedur veya fonksiyon bulundurabilen dosyalardır. Niçin
kullanmalıyız?
15
Sekil 4: Yeni bir proje açılması
Yaptıgınız uygulama büyük bir program olabilir. Programınızın bellekte tuttugu alanı
azaltmak için bazı fonksiyonları dinamik olarak çagırıp kullanmak gerekebilir.Iste tam
burada DLL kullanmak oldukça mantıklı ve gereksinim duyulan bir istir. Bundan farklı
olarak Dll dosyası kullanarak Exe dosyalarınızın sismesini engelleyebilirsiniz. Sisersene
olur?
Ilk olarak exe dosyasında olabilecek bir hata tum programı etkiler.Bundan sakınmak için
dll dosyalarını kullanmak gerekir. Belki en önemli gerekliliklerden biri de tasınabilir-
lik.Bir islem birden çok exe dosyasında gerekebilir.Örn;bir dizi elemanlarının toplamını
birden çok program da kullanmak gerekebilir.Bunun için yazılan bir dll dosyasını diger
projelere import ederek çok rahat bir sekilde kullanabilirsiniz.DLL kullanmanın avanta-
jının yanında mutlaka dezavantajları da vardır...Mesela projeye gereken bir dll dosyası
mevcut degilse proje eksik çalısabilir ya da hiç çalısmayabilir.
Örn;statik olarak çagrılan bir dll belirtilen klasorde mevcut degilse dosya çalısmaz.Bellege
ilk olarak dll dosyaları yuklendiginden program açılmadan kapanır. Simdi bir dll yazalım
ilk olarak resimde görüldügü gibi Sekil 5’te kullanım gösterilmistir.
Class Library proje tipini seçiyoruz. Daha Sonra basit bir islem olarak asagıdaki kodlar
yazıyoruz.
public int topla(int a, int b)
16
Sekil 5: Sıralı olarak bir projede dll olusturma ve çagırma adımları
17
Sekil 6: Dll referans gösterme islemi
{
return a + b;
}
public double bol(Double a, Double b)
{
return a / b;
}
Daha Sonra Sadece Build edip islemi tamamlıyoruz.Dll hazırdır.Simdi en kolay yoldan
bir dll nasıl kullanılır onu gösterelim. Simdi Sekmesinden yeni bir WindowsApplication
projesi açıyoruz. Buradan karsımıza gelen tarayıcıya olusturdugumuz Dll dosyasının ye-
rini Sekil 6’de oldugu gibi gösteriyoruz.
Bunuda yaptıktan sonra Classımız solution’a eklendi.Sırada Classı çagırmak var...
ilk_dll.Class1 mydll = new ilk_dll.Class1();
//Class olu³turduk
private void button1_Click(object sender, EventArgs e)
{
label3.Text=mydll.topla(
Convert.ToInt32(textBox1.Text),
18
Sekil 7: Referans alınan komponentin içerigi [8]
Convert.ToInt32(textBox2.Text)).ToString();
//Class�m�zdaki topla fonksiyonunu ça§�rd�k.
}
private void button2_Click(object sender, EventArgs e)
{
label4.Text = mydll.bol(Convert.ToDouble(textBox1.Text),
Convert.ToDouble(textBox2.Text)).ToString();
//Bol fonksiyonunu ça§�rd�k
}
4.6 Gösterge Ve Özelikleri
C#’ta bir önceki baslıkta anlatıldıgı gibi çalısma anında .dll uzantılı olarak projeye im-
port edilebildiginden bahsettik Sekil 7’da oldugu gibi göstergeler projede referans olarak
eklendikten sonra tulbax’ta gözükecektir.
Göstergeye ait özelikler Tablo 2’de gösterilmistir.
19
Tablo 2: Göstergeye ait islevlerÖzelik adı Tipi TanımlamasıDialColor Color Arka plan rengini ayarlarDialText String Göstergedeki yazıyı kontrol eder
EnableTransparent Background bool Transparan arkaplanı aktif ederGlossiness Float ParlaklıkMaxValue Float En büyük alabilecek degeriMinValue Float En küçük alabilecegi degeri
NoOfDivisions Int Numaralarla bölümlendirmeNoOfSubDivision Int Her bölme için görüntülenecek bölüm sayısı
RecommendedValu e Float Esik alan çizmek için pivot noktası olarak kullanılacaktır.ThresholdPercent Float Esik alanının yüzde ölçegini ayarlar.
Value Float Degeri kontrol eder
4.7 Visual C# Chart Kullanımı ( Grafik )
Chart bildigin grafik( Çubuk,pasta,çizgiler,egilim çizgileri vs) hazırlamak için kulla-
nılan bir tür Microsoft tarafından gelistirilen Component’dir.[7] Bir çok projede is gö-
rür niteliktedir ve tasarımını renklendirerek iyilestirebiliyorsunuz. Microsoftun sitesinde
yazdıgı gibi’Microsoft Chart for .NET Framework 3.5 SP1’ den itibaren bulunur ve .net
framework 2.0 de yoktur.(Sahsen aradım). Chart Componentinden ufak bir ekran görün-
tüsü. Örneklerle anlatmaya geçeyim hemen.Chart componenti toolbox da data sekmesinin
altında mevcuttur. Oradan sürükleyerek formumuza ekleyelim.Boyutlarını ve kisisel ayar-
larınızı yapın
Sekil 8: C# bir chart görünümü
ve kod kısmına geçelim hemen.Sekil 8’da oldugu gibidir bir chart. Ben network kim ne
20
kadar dosya indirmis kim ne kadar dosya yüklemis onların takibini yaptıgım için grafigi
de ona göre hazırlayacagım.
this.chart1.Titles.Clear();
this.chart1.Series.Clear();
this.chart1.Series.Add("Download");.
this.chart1.Series.Add("Upload");//Upload� ekledik
this.chart1.Series[0].Color = Color.Red;//Download�n rengini
//belirledik.(Grafiksel iyile³tirmek için)
this.chart1.Series[1].Color = Color.Orange;//Upload�n rengini belirledik.
for (int i = 0; i < 7; i++)//Ben 7 adet kay�t gösteriyorum çünkü bu
{
this.chart1.Series[0].Points.AddXY(kisi[i].ToString(),
double.Parse(down[i].ToString())/1024.0/1024.0);//x parametresi altta
this.chart1.Series[1].Points.AddXY(kisi[i].ToString(),
double.Parse(up[i].ToString()) 1024.0 / 1024.0);
//Burda o ki³iye birde upload de§eri
}
Bu arada kisi, up, down degiskenleri bende arraylist isterseniz siz string, int ve double
dizi olarakta tanımlanabilir.
4.8 OleDbConnection Sınıfı
OleDbConnection sınıfı, ADO.NET sınıflarının , Ole Db destegi olan veri kaynaklarına
erisebilmesi amacıyla kullanılır. Veri kaynagının tipi tam olarak bilinmedigi için, arada bu
islevi ayırt etmeye yarayan bir COM+ nesnesi yer almaktadır. OleDbConnection sınıfına
ait bir nesne iletisim kurmak istedigi veri kaynagına ait ole db veri saglayıcısını belirtmek
durumundadır. Bunu daha iyi kavramak için asagıdaki Sekil 9 figüre bakalım.
21
Sekil 9: Oledb veri saglayıcıları
Görüldügü gibi bir OleDbConnection nesnesi öncelikle bir Ole Db Data Provider (
Ole Db Veri Saglayıcısı) ile iletisim kurar. Ardından bu veri saglayıcı istenen veri kay-
nagına eriserek, gerekli hattı tesis etmis olur. Peki bu islemi nasıl gerçeklestirecegiz. Iste
tüm Connection nesnelerinin en önemli özelligi olan ConnectionString özelligi bu nok-
tada devreye girmektedir. Kısaca ConnectionString özelligi ile, veri kaynagı ile saglana-
cak olan iletisim hattının kurulum bilgileri belirlenir. OleDbConnection sınıfı için Con-
nectionString özelligi asagıdaki prototipe sahiptir. public virtual string ConnectionString
get; set; ConnectionString özelligi belirlenmis bir OleDbConnection sınıfı nesne örnegini
açtıgımızda, yani veri kaynagına olan hattı kullanılabilir hale getirdigimizde, bu özel-
lik yanlız-okunabilir (read-only) hale gelir. Dolayısıyla açık bir OleDbConnection nesne-
sinin ConnectionString özelligini degistiremezsiniz. Bunun için bu baglantıyı tekrardan
kapatmanız gerekecektir. ConnectionString özelligi, bir takım anahtar-deger çiftlerinin
noktalı virgül ile ayırlmasından olusturulan string bir bilgi toplulugudur. ConnectionSt-
ring özelligi içinde kullanabilecegimiz bu anahtar-deger çiftlerinin en önemlisi Provider
anahtarıdır. Bu anahtara verecegimiz deger, hangi tip ole db veri saglayıcısını kullanmak
istedigimizi belirtmektedir. Örnegin Sql sunucusuna, Sql Ole Db Provider ile baglanmak
istersek, Provider anahtarına, SQLOLEDB degerini atarız. Provider anahtarı mutlaka be-
lirtilir. Daha sonraki anahtar-deger çiftleri ise bu Provider seçimine baglı olarak degisiklik
gösterecektir. Veri kaynagına hangi tip Ole Db Veri Saglayıcısından baglandıgımızı seç-
tikten sonra, baglanmak istedigimiz veri kaynagıda belli olmus olucaktır. Sırada bu veri
22
kaynagının adını veya adresine belirtecegimiz anahtar-deger çiftlerinin belirlenmesi var-
dır. Örnegin bir Sql Sunucusuna baglanıyorsak, sunucu adınıda Ole Db Data Provider(
Veri Saglayıcısı) ’na bildirmemiz gerekir. Bunun için Data Source anahtarını kullanırız.
Bununla birlikte baglandıgımız veri kaynagı, sql yada oracle gibi bir veritabanı yönetim
sistemi degilde, Access gibi bir tablolama sistemi ise, Data Source anahtarı, tablonun fi-
ziki adresini alır. Sql ve Oracle gibi sunuculara yapılacak baglantılarda Provider ve Data
Source seçiminin yanında hangi veritabanına baglanılacagınıda Initial Catalog anahtarı
yada Database anahtarı ile belirleriz. Bunların dısında veri kaynagına yapılacak olan bag-
lantının güvenlik ayarlarınıda belirtiriz. Çogunlukla Integrated Security gibi bir anahtara
True degerinin atandıgını görürüz. Bu anahtar, veri kaynagına baglanmak istenen uygu-
lama için, makinenin windows authentication ayarlarına bakıldıgını belirtir. Dolayısıyla
sql sunucusuna baglanma yetkisi olan her windows kullanıcısı bu baglantıyı saglayabilir.
Ancak istersek belli bir kullanıcı adı veya sifresi ilede bir veritabanına baglantı açılmasını
saglayabiliriz. Bunun için ise, User ID ve Password anahtarlarını kullanırız. Buraya kadar
bahsettiklerimiz kavramsal açıklamalardır. Dilerseniz basit örnekler ile konuyu daha iyi
açıklamaya çalısalım. Örneklerimizi Console uygulamaları seklinde gerçeklestirecegiz.
Ilk örnegimizde, Sql Sunucusundaki veritabanı için, bir baglantı hattı olusturup açacagız.
using System;
using System.Data.OleDb; /* OleDbConnection s�n�f�, Data.OleDb isim uzay�nda yer
almaktad�r. */
namespace OleDbCon1
{
class Class1
{
static void Main(string[] args)
{
OleDbConnection conFriends=new OleDbConnection();
conFriends.ConnectionString="Provider=SQLOLEDB;Data
Source=localhost;Database=Friends;Integrated Security=SSPI";
try
23
Sekil 10: Baglantı olusurulduguna dair çıktı
{
conFriends.Open(); /* Open metodu ile olu³turdu§umuz ileti³im hatt�n�
kullan�ma aç�yoruz. */
Console.WriteLine("Ba§lant� aç�ld�...");
conFriends.Close(); /* Close metodu ilede olu³turulan ileti³im hatt�n�
kapat�yoruz. */
Console.WriteLine("Ba§lant� kapat�ld�...");
}
catch(Exception hata)
{
Console.WriteLine(hata.Message.ToString());
}
}
}
Aynı örnekte bu kez belli bir kullanıcı ile baglanmak istedigimizi düsünelim. Bu du-
rumda ConnectionString’imizi asagıdaki sekilde degistirmemiz gerekir. Bu durumda User
ID ve Password anahtarlarına gerekli kullanıcı degerlerini atarız.Sekil 12’de baglantı olus-
turulmus bir çıktı gösterilmistir.
conFriends.ConnectionString= ”Provider = SQLOLEDB;DataSource= localhost;Database=
Friends;UserId = sa;Password =CucP??80.”; Simdide bir Access tablosuna nasıl bag-
lanabilecegimizi görelim. Bunun için ConnectionString özelligimizi asagıdaki gibi yaza-
rız.
OleDbConnection conYazarlar=new
OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;data source=c:\\Authors.mdb");
24
Sekil 11: Oledb nesne ile baglantı olusturuldugunun çıktısı
try
{
conYazarlar.Open();
Console.WriteLine("Yazarlar Access veritaban�na ba§lant� aç�ld�...");
conYazarlar.Close();
Console.WriteLine("Yazarlar Access veritaban�na olan ba§lant� kapat�ld�...");
}
catch(Exception hata)
{
Console.WriteLine(hata.Message.ToString());
}
Bu örnekte dikkat ederseniz ConnectionString özelligini, OleDbConnection nesnemizin
diger yapıcı metodu içerisinde parametre olarak belirledik. Ayıraca, Provider olarak bu
kez Microsoft.Jet.OLEDB.4.0 ’ı seçerek, bir Access veritabanına baglanmak istedigimizi
bu Ole Db Provider’a bildirmis olduk.Daha sonra bu veri saglayıcı componenti, Data
Source anahtarındaki degere bakarak, ilgili adresteki veritabanına bir hat çekti.
Sekil 11’de örnekte bu gösterilmistir.
25
5 Programlama
Araç simulasyon ortamına ait kullanılan eventler ve özelikler.
5.1 Algoritmalar
5.1.1 Gaza basma
Bu fonksiyon temel olarak asagıdaki kaba kodu gerçekler.timer belirlenen hassas peri-
yotlarda asagıdaki event’i denleyecektir ve program bu kosullara göre kosacaktır.
• eger gaza basılırsa
• hız sabitleyicide degilse
• gazı oku
• eger sabitleyicide ise
• eger sabitlenme hızı anlık hızdan küçükse ise
• gazı ver
• degilse
• gazı sıfırla
5.1.2 Tekerler
Bu fonksiyonda parametre olarak aldıgı aracın lastik ölçüleri,maksimum motor devri,vites
disli oranlarına göre asagıdaki hesaplamaları yapan islevdir.
• tekerin yuvarlanma mesafesini bul
26
• her bir vites oranına göre maksimum hızları hesapla
5.1.3 Araç kuvveti
Bu fonksiyon ise vites konumu ve gaz kelebeginden okudugu degerlere göre aracın
motor devrinin seyrettigi devir degerine göre motor torkuna göre yola aktarılan kuvveti
hesaplayan islevdir.
• eger itronic mod aktifse
• baglı parametrelere göre vites arttır
• eger vites 1 de ise
• birinci vitesin oranını al
• degilse eger vites 2 de ise
• birinci vitesin oranını al
• degilse eger vites 3 de ise
• birinci vitesin oranını al
• degilse eger vites 4 de ve sanzımandan küçük ise
• birinci vitesin oranını al
• degilse eger vites 5 de ve sanzımandan küçük ise
• birinci vitesin oranını al
• degilse eger vites 6 de ve sanzımandan küçük ise
• birinci vitesin oranını al
27
• degilse eger vites 7 de ve sanzımandan küçük ise
• birinci vitesin oranını al
• eger dev tick degerinden kucukse
• dev e tik degerini ata
• degilse
• güncel devir hızını hesapla
• eger
• dev maxdevirden buyukse
• dev e maksimum degeri ata
• yola aktarılan kuvveti hesapla
5.1.4 Dıs kuvvetler
Bu metotta eger menzil olarak atanmıs alınacak yol tükenmis ise yeni yol baslıgı
olusturur harita seçimi yapılmamıssa,yapıldıysa yukarıda açıklanmıs olan durum geçerli-
dir.Yolun parametrelerine göre araca etkiyen ivme hesaplanır.Sürtünme hesapları ve fren
kontrolüde yapıldıktan sonra güncel anlık hız hesaplanır.Menzilden çıkartılarak alınan yol
güncellenir.
• eger menzil sıfırdan küçükse
• eger harita seçimi yapılmamıssa
• rastgele inis yada çıkıstan olusan rastgele egimli belirli bir menzilden olusan harita
olustur
28
• eger harita seçilmisse
• haritadan parametreleri çek
• eger menzil sıfırdan küçük degilse
• egime göre neagatif yada pozitif ivmeyi hesapla
• hıza göre hava sürtünme kuvvetini hesapla
• torka göre aracın ivmesini hesapla
• frena basıldıysa fren degerini ata
• son olarakta anlık hızı hesapla
• menzilden anlık hızı çıkart
• programın çıktılarını yaz
5.1.5 Form yüklenirken
Veritabanından baslıkları çekip forma ekleyerek sorgularken seçilecek anahtarlar ekle-
nir
5.1.6 Her timer periyodunda
Gaz basma,araç kuvveti,dıs kuvvetleri her timer periyotta hesaplanarak bilgiler forma
göncerilir.
5.1.7 Hız sabitleyici tusu
Bu fonksiyonda hız sabitleme tusuna basıldıgında asagıdaki algoritmayı gerçekler.
29
• tusu devre dısı bırak
• modu aktif et
• anlık hızı sabitltici hız olarak ata
• formda sabitlenmis hızı göster
5.1.8 i-tronic tusu
• butonu disable et
• sınıflandrıcıyı aktif et
5.1.9 Gaza basma ve fren yapma
Mainform mousemove özeligi ile iliskilendirilmis fonksiyon
• belirtilen koordinatlar arasında ise imleç
• gaz verme koordinatları içinde ise gaz ver(kalibrasyona göre)
• degilse
• fren verme koordinatları içinde ise fren yap(kalibrasyona göre)
• hız sabitleyici devre dısı
• mod false
• sabitleyici tusu aktif et
30
5.1.10 Vites artırma azaltma
Vites arttırıp azaltma artırma islemi mouse’un butonlarının event’larına ait özelikler
atanmıstır.
• Datatable temizle
• listbox-ı temizle
• mouseun sol klik edildi ise
• vites artır
• datatable a ilgili parametreleri kaydet
• mouseun sag klik edildi ise
• vitesi azalt
• datatable a ilgili parametreleri kaydet
• i-tronic modu aktif edilebilir
5.2 UML
5.2.1 Naif bayes algoritması
Naive bayes algoritması hazır kod olarak alınarak projeye eklendi.Bu sınıfa ait öze-
lik,islev ve alanlar Sekil 12’te görüldügü gibidir
5.2.2 Anaforma ait islev ve üyeleri
Anaforma ait islevler Sekil 13’deki gibidir.
31
Sekil 12: Naive bayes sınıfına ait islev ve alanları
Sekil 13: Ana forma ait islev ve alanları
32
5.3 Araç Ve Harita Veritabanı
Burada veritabanından çekilmek üzere bazı veriler kaydedilecektir.Veriler sırasıyla
asagıdaki gibidir.
• Bölünmüs devir bantlarına ait tork degerleri
• Vites oranları
• Son disli oranı
• Agırlık
• Tekerlek ölçüleri
• Tüketim katsayıları
• Vites sayisi
• Son deviri
• Genislik,Yükseklik,cw degeri ve araca ait resmin yoluaraç adlı tabloda tutulmakta-
dır.
Ayrıca yol adlı tabloda yol tipleri ayrı bir tabloda ise bu yollara ait olan yolların nite-
lik ve niceliklerini tutan bilgiler Sekil 14’de tanımlandıgı gibi tablolarda tutulmaktadır
Yola ait nitelikler yol bilgilerinden farklı tabloda egimi,yukarımıı,mesafesi ve sürtünme
katsayılarını barındırır.
33
Sekil 14: Veritabanına ait bilgileri depolayan tablolar
34
6 SONUÇLAR VE ÖNERILER
Sonuç olarak c# ortamında bir araçın dinamik olarak hesapları,yakıt tüketimleri,
performansları ve bunlara ek olarak i-tronic adında bir kullanıcı davranıslarını modellene-
rek simulasyonda kendi kendine vites atılması saglandı,ancak vites oranlarının biribirine
çok yakın oldugu ve veri kümesinin kararsız,bulanık oldugu durumlarda basarısız netice
vermesi olasılıgı yüksek oldugu gözlenmistir.
35
Kaynaklar
[1] http://forum.donanimhaber.com
[2] http://yegitek.meb.gov.tr,
[3] http://www.muhendese.com/yuvarlanma-surtunmesi/
[4] htt p : //tr.wikipedia.org/wiki/Aerodinamik(otomobil)
[5] htt p : //www.tnoz.com/sanziman− nedir − disli− oranlari− ne− ise− yarar −
2526/
[6] htt p : //www.codepro ject.com/Articles/318126/Naive−Bayes−Classi f ier
[7] htt p : //www.abdullahaltintas.com/index.php/dll − olusturulmasi − ve −
dllkullanimi/
[8] AmbalavanarT hirugnanam,htt p : //www.codepro ject.com/Articles/20341/Aqua−
Gauge
[9] htt p : //www.csharpuygulamalar.com/20130414archive.html
[10] htt p : //tr.wikipedia.org/wiki/CSharp
36
ÖZGEÇMIS
KISISEL BILGILER
Adı Soyadı :Mustafa KÖSTEK
Uyrugu : T.C
Dogum Yeri ve Tarihi: Çayıralan 1993
Adres : Çayıralan
Telefon : +905549935366
e-mail : mustafakostek@gmail.com
EGITIM DURUMU
Lisans Ögrenimi : Bilecik Seyh Edebali Üniverstesi, Bilecik
Bitirme Yılı : 2015
Lise : Balıkesir Edremit Anadolu Lisesi
IS DENEYIMLERI
Yıl : 2013
Kurum : IZSU
Stajlar : IZSU
ILGI ALANLARI
Eskrim
YABANCI DILLER : Almanca,Ingilizce
37
Recommended