Technically After dynamics calculations with the physical characteristics of the vehicle car speed by using timer in the form of animation at # programming language and made the speed of simulation also inclined roads, fuel consumption, cruise concept in detail validated, the project name of a user to shift the throw data implies key means of artificial intelligence user imitative automatic transmission was developed using the algorithm.
3. B˙ILD˙IR˙IM
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 kayna˘gına eksiksiz atıf yapıldı˘gını bildiririm.
DECLARATION
I hereby declare that all information in this document has been obtained and presented
in accordance with academic rules and ethical conduct. I also declare that, as required by
these rules and conduct, I have fully cited and referenced all materials and results that are
not original to this work.
˙Imza
Mustafa KÖSTEK
5.6.2015
ii
4. ÖZET
B˙IT˙IRME ÇALI¸SMASI
ARAÇ ¸SANZIMAN MODELLEMES˙I
Ö˘grencinin Adı SOYADI
B˙ILEC˙IK ¸SEYH EDEBAL˙I ÜN˙IVERS˙ITES˙I
MÜHEND˙ISL˙IK FAKÜLTES˙I
B˙ILG˙ISAYAR MÜHEND˙ISL˙I ˘G˙I 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ı olu¸sturulmu¸s,bunun yanında kullanıcı tarafından vites de˘gi¸stirme ve-
rilerini bir verikümesi olarak kaydetip bir tu¸s vasıtasıyla e˘gitilerek kullanıcının e˘gitti˘gi
verilere göre vites de˘gi¸stirme i¸slemlerini otomatik gerçekle¸stiren i-tronic vites tasarlan-
mı¸stır.Yanı sıra yakıt tüketimi,araç performansları,tork kavramına ciddi ¸sekilde de˘ginile-
cektir.
Anahtar Kelimeler: fizik motoru,makine ö˘grenmesi,yakıt tüketimi,döndürme kuvveti,performans
iii
5. ABSTRACT
THESIS
VEHICLE GEARBOX MODELLING
Mustaf Köstek
BILECIK ¸SEYH EDEBALI UNIVERSITY
ENGINEERING 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
6. ÖNSÖZ
Bu projenin yazımının ba¸sından sonuna kadar eme˘gi geçen ve beni bu konuya yönlen-
diren saygı de˘ger hocam ve danı¸smanım Sayın Murat ÖZALP’a tüm katkılarından ve
hiç eksiltmedi˘gi deste˘ginden dolayı te¸sekkür ederim.
Mustafa Köstek
v
10. 1 G˙IR˙I¸S
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 bulundu˘gu yolun e˘gimide 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
11. 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 sa˘glanır.
2.1 Tork nedir?
Her aracın motor karakteristi˘gine göre belirli devir bandlarında belli tork de˘gerleri üre-
tir.Bu tork döndürme kuvveti olarak tanımlanır.¸Sekil 1’de oldu˘gu gibi bir aracın motoruna
ait tork grafi˘gi gösterilmi¸stir.
¸Sekil 1: Bir araç farklı devir bantlarında farklı tork de˘gerleri üretir[1]
2
12. ¸Sekil 2: Yoku¸s yukarı ve a¸sa˘gı inen araça etkiyen kuvvetler
2.2 Dinamik kuvvetleri
Araçlar bulundu˘gu yolun e˘gim açısına göre bir ivmelenme söz konusudur.¸Sekil 2’de
buna örnekler nitelikte çözümlenmi¸stir.[2] Görüldü˘gü gibi yolun e˘gimine göre araç ini¸s
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 nitelendirilmi¸stir.
2.3 Sürtünme kuvvetleri
Temel olarak araça etki eden sürtünme kuvveti lastikler ile yol arasındaki kuvvet-
tir.Di˘ger bir kuvvet ise hava sürtünme kuvveti olarak nitelendirilmi¸stir.Bu iki kuvvet araca
negatif olarak etki eden kuvvetler olarak adlandırılabilir.
3
13. 2.3.1 Lastik yuvarlanma sürtünmesi
Yüzyıllar önce bulunan tekerlek icat edilerek hem sürtünmeden do˘gan negatif kuvvet
minimize edilmi¸stir.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
edilmi¸stir. Ba¸slıca yüzeylerin yuvarlanma sürtünme kuvvetleri a¸sa˘gıdaki gibidir:[3]
• Çelik ray üstünde çelik tekerlek 0.001-0.002
• ¸Sambrelsiz teker 0.002-0.005
• Kamyon lasti˘gi(asfalt) 0.006-0.01
• Beton-otomobil lasti˘gi 0.01-0.015
• Asfalt-otomobil lasti˘gi 0.03
• Katı kum otomobil lasti˘gi 0.04-0.08
• Gev¸sek kum-otomobil lasti˘gi 0.2-0.4
Mesela,beton üzerinde hareket eden 2 ton a˘gı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 bahsetti˘gim gibi yuvarlanmadan dolayı olan sürtünme
kaybı çok küçük. Sonucumuz 294 N oda yakla¸sık 30 kg civarında bir kuvvete denktir.
¸Sayet lastik ile beton arasındaki kaymadan mütevellit sürtünme sorulmu¸s olsaydı bu du-
rumda sürtünme katsayımız f=0,7 olacaktı ve sonucumuz 0,7*19620 =13734 N olacaktı ,
buda di˘gerinin yakla¸sık 47 katı büyüklükte bir sürtünme kuvveti olurdu.
4
14. 2.3.2 Aerodinamik
Dü¸sük hızlarda hava direnci di˘ger kayıplar yanında oldukça dü¸sük mertebelerdedir.
Ancak hız 30-40 km/h de˘gerine ula¸sınca hava direnci önem kazanır. Bunun sebebi hava
direncinin hızın karesiyle do˘gru orantılı olarak artmasıdır. Geometrik boyutları araç dı¸s
formuna ba˘glı 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·V2
(1)
Bura da ;
• d: Havanın yo˘gunlu˘gu ( 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 a˘gırlı˘gında bir kütleyi havaya kaldırmak için gerekli olan kuvvete
e¸sittir. Cw de˘geri bir cismin dı¸s formu sebebiyle düzgün do˘grusal akım içinde olu¸sturdu˘gu
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 ba˘glı 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 ba˘glı olan direnç
katsayısı Cw’yi azaltmaktır. Cw de˘gerinin azaltılması:
• Motor gücü sabit bir aracın daha yüksek hıza eri¸sebilmesi
5
15. • 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 hedeflendi˘ginden birinci ¸sık Cw de˘gerinin 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 özelli˘gi do˘grusal
akımda bilinen en az bozuntuya sebep olan yapı olmasıdır.
2.4 ¸Sanzıman Ve Di¸sli Oranları
Motordaki yüksek torklu kuvvetten optimum derecede verim elde etmek için di¸sli 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 di¸sli modeli ile anlatayım;Motordan ¸sanzı-
mana gücü aktaran a¸sa˘gıdaki en soldaki küçük di¸sli olsun. (ortadaki 2 katı, sa˘gdaki 4
katı büyüklü˘günde yani 1:1, 2:1 ve 4:1) Bizim motorumuzun üretti˘gi 1000 devirde tork
de˘geri 100 Nm olsun. (yani küçük di¸slideki gücümüz) ¸simdi ortadaki di¸sli ile küçük di¸s-
liyi birle¸stirelim. Ortadaki, küçü˘gün 2 katı oldu˘guna göre 1000 devir dönen küçük di¸sli
2 katı büyüklü˘gündeki di¸sliyi 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 ∗mesafe (mesafe
burada di¸slimizin oranı oluyor yani 2’yi kullanaca˘gız) formülünde bizim için i¸s elde ede-
ce˘gimiz 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 di¸sliyi 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 di¸sli birinci vites
di˘geri de 2. vites olacaktır. Birinci viteste tur sayısı az oldu˘gu için de aracımız hız kazan-
dıkça son devire ula¸sı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
ula¸stı˘gı için ilk ba¸staki kadar yüksek güce ihtiyacı kalmadı bu yüzden 200Nm gayet ye-
terli.˙I¸ste ¸sanzımanın en basit tanımı budur. ¸Sanzıman tabi bunun biraz daha karma¸sık hali
ama temel mantık yukarıdaki örnek ile aynı.
6
16. ¸Sekil 3: Bir aktarma organı [5]
¸Sanzıman di¸sli oranları otomobilde aracın 0-100 oranından son hızına gibi performans
de˘gerlerine etki eder, peki bizim ne i¸simize yarar? ¸Sanzıman di¸sli oranlarını bildi˘gimiz bir
otomobilin son hızını hesaplayabiliriz ya da lastik boyutu de˘gi¸stirlece˘gi zaman do˘gru hız
bilgisine ula¸sabiliriz. Bu hesaplama yukarıdaki 3 di¸sli örne˘ginden biraz daha karma¸sık.
O örnekte lastik ebatı ve di˘ger önemli etkenleri gözardı ederek kaba bir hesap yapmı¸stık.
Artık hesabımızda jant çapı, lastik yana˘gı, lastik ebatı ve son di¸sli 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 di¸sli oranı 4.100. Jant ölçüsü
17 inç, lastik ebatı 215 ve lastik yana˘gı 45.¸Simdi gelelim hesabımıza,Hızı bulmak için
önce tekerle˘gin yuvarlanma dairesini ve tekerle˘ge aktarılan devri bulmamız gerekiyor.
1.Formül:Tekerlek yuvarlanma dairesi = (( jant çapı(inc)*25,4)+(lastik geni¸sli˘gi*yanak
yüksekli˘gi*2))*Pi sayısı Hesabımız: ((17*25.4)+(215*0.45*2))*3,141= 1.963m
2. Formül:Tekerle˘ge aktarılan devir = Devir(rpm)/son di¸sli 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 tekerle˘ge 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
17. 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 de˘geri öngörülür.¸Sehir dı¸sı tüketim de˘gerleri 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 de˘gerleri tayin edilir. Temel olarak 20
km/saat hızda aracın tüketim de˘gerlerini iki adet de˘gi¸skenimiz vardır bu hızda iken bu-
lundu˘gu motorun devri ve motora ne kadar gaz verildi˘gidir. Bu iki parametreyi biz birinci
dereceden iki bilinmeyenli denklem sistemine çevirip bu parametrelerin cevabı olarakta
tüketim de˘gerlerini yazarsak bu iki katsayı aracılı˘gıyla biz anlık olarak tüketim de˘gerini
çı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 de˘geri ve dev de˘geri programda ko¸sturulacak 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 do˘gru orantılıdır.Yukarıdaki
denklemde görülen de˘gerler sırasıyla 20 ve 90 km/saat hızlarında giden aynı araca ait
olan tüketim de˘ger e¸sitsizli˘gi (4) nolu denklem ile temsil edilir.
x,y =
5 32
17 55
2.4
6.1
(4)
Buradan thr ve dev de˘gerleri elde edilir.Sonra ise bunlar formülde yerine konarak 100 km
de ve saatteki yakıt tüketimi bulunur.
8
18. 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 tu¸s vasıtasıyla i-tronic moduna geçilir.Bu
modda önceden kayıt edilmi¸s verilere i¸sleyip vites de˘gi¸stirmeye ait sınırlarını belirleye-
rek bu parametreler dahilinde ilgili vitesi her bir zaman tikinde sorgular.E˘ger bu modda
iken vites i¸slemi kullanıcı tarafından yapılırsa moddan çıkılır ve yeniden vites de˘gi¸sim-
lerinde parametreler sıfırlanan veritabanına kayıt edilir(sıfırlanır). Tablo 1’de bir e˘gitim
verisi gösterilmi¸stir.
9
19. 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 yakla¸sımdır. Bu
önerme örüntü tanıma da kullanılacak her bir tanımlayıcı nitelik ya da parametrenin is-
tatistik açıdan ba˘gımsız olması gereklili˘gidir. 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 ba˘gımsızlık ko¸sulu
esnetilerek kullanıldı˘gında da daha karma¸sık Yapay sinir a˘gları gibi metotlarla kar¸sıla¸s-
tırabilir sonuçlar vermektedir. Bayes Teoremi Naive Bayes sınıflandırıcısı Bayes teore-
minin ba˘gımsızlık önermesiyle basitle¸stirilmi¸s 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çekle¸sti˘gi durumda A olayının meydana gelme olasılı˘gıdır (bakınız
ko¸sullu olasılık)
P(B|A); A olayı gerçekle¸sti˘gi 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. Di˘ger bir ifadeyle örne˘gin P(A) henüz elde veri toplanmadan
A olayı hakkında sahip olunan bilgidir. Di˘ger taraftan P(B|A) ardıl olasılıktır çünkü veri
toplandıktan sonra, A olayının gerçekle¸smi¸s oldu˘gu durumlarda B olayının gerçekle¸sme
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 oldu˘gu bellidir. E-posta kutusuna gelen e-postaların spam olarak ayrı¸stırıl-
ması i¸slemi 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 ula¸sacak e-postaların spam olup olmadı˘gına karar verecek
10
20. bir Algoritma da ö˘greticili makina ö˘grenmesine örnektir. Sınıflandırma i¸sleminde genel
olarak elde bir örüntü (pattern) vardır. Buradaki i¸slem 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 örne˘ginden devam edilecek olunursa; Posta
kutumuzda bulunan spam e-postaları spam olmayan e-postalardan ayıran parametreler-
den olu¸san bir küme, meselaikramiye,ödül gibi sözcüklerden olu¸san, 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ü olu¸sturur. x ∈ RL verildi˘gine 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 yo˘gunluk fonksiyonu(oyf)
11
21. • P(x|Si);i = 1 = 2, ..., L, x’in ko¸sullu 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 örne˘ginden
gidecek olursak spam olup olmadı˘gını bilmedi˘gimiz yeni bir e-posta sınıfı belli olmayan
örüntüdür. Yine Si|x’in atanaca˘gı sınıf ise; Bayes karar teorisine göre x sınıf Si’ya aittir
e˘ger
P(Si|x) > P(Sj|x),∀j =,i (11)
di˘ger bir ifadeyle
P(x|Si)P(Si) > P(x|Sj)P(Sj),∀j =,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
ba˘gı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|Sj)P(Sj),∀j =,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
22. böylece Bayes karar teoremi a¸sa˘gıdaki ¸sekli alır.Bayes karar teorisine göre x sınıf Si ya
aittir e˘ger (15)’u sa˘glıyorsa
P(Si)
L
∏
k=1
P(xk|Si) > P(Sj)
L
∏
k=1
P(xk|Sj) (15)
P(Si) ve P(Sj) i ve j sınıflarının önsel olasılıklarıdır.Elde olan veri kümesinden de˘gerleri
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) bile¸senleri-
nin istatistik olarak ba˘gımsız olması ko¸sulu esnetilerek ba¸sarılı sonuçlar elde edilebilinir.
13
23. 4 C# nedir?
C# Programlama Dili,Microsoft’un geli¸stirmi¸s oldu˘gu yeni nesil programlama dilidir.[10]
C#, .NET orta seviyeli programlama dillerindendir. Yani hem makine diline hem de insan
algısına e¸sit seviyededir. Buradaki orta ifadesi dilin gücünü de˘gil makine dili ile günlük
konu¸sma diline olan mesafesini göstermektedir. Örne˘gin; Visual Basic .NET (VB.NET)
yüksek seviyeli bir dildir dersek bu, dilin insanların günlük ya¸santılarında konu¸sma 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 sa˘glamlılı˘gı, güvenirlili˘gi ve programcıların üretkenlili˘gi ö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 de˘gi¸skenlerin kullanım tespiti,
(source code portability), ve otomatik artık veri toplama gibi özelliklerine sahiptir.
• Programcı portatifli˘gi ö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 i¸slevselli fonksiyondan i¸sletim sistemini kullanan
en teferruatlısına kadar kapsamaktadır.
14
24. • C# uygulamaları hafıza ve i¸slemci gereksinimleri ile tutumlu olmak uzere tasarlan-
mı¸stır. Buna ra˘gmen C# programlama dili performans açısından C veya assembly
dili ile rekabet etmek için tasarlanmamı¸stır
4.2 Ele¸stiri
C# konusunda ele¸stiriler tabii ki var. En önemlisi using ile hangi referansları kullana-
ca˘gı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
Di˘gerleri gibiSanal Makine’ye dayalı dillerden biridir, C# programlama dili direkt yer-
le¸sik kod’a derleyen dillerden daha yava¸stı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 ba¸ska 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 i¸sletim sistemi dosyalarının bulun-
du˘gu yerde mutlaka kar¸sımıza çıkmı¸stır.[7]Dll dosyaları içinde çalı¸sabilir kod bulundu-
ran kendi ba¸sına çalı¸samayan,executable dosyalar tarafından dinamik ya da static olarak
ça˘grılıp kullanılabilen,içinde prosedur veya fonksiyon bulundurabilen dosyalardır. Niçin
kullanmalıyız?
15
25. ¸Sekil 4: Yeni bir proje açılması
Yaptı˘gınız uygulama büyük bir program olabilir. Programınızın bellekte tuttu˘gu alanı
azaltmak için bazı fonksiyonları dinamik olarak ça˘gırıp kullanmak gerekebilir.˙I¸ste tam
burada DLL kullanmak oldukça mantıklı ve gereksinim duyulan bir i¸stir. Bundan farklı
olarak Dll dosyası kullanarak Exe dosyalarınızın ¸si¸smesini engelleyebilirsiniz. ¸Si¸sersene
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 ta¸sınabilir-
lik.Bir i¸slem 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ı di˘ger
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 de˘gilse proje eksik çalı¸sabilir ya da hiç çalı¸smayabilir.
Örn;statik olarak ça˘grılan bir dll belirtilen klasorde mevcut de˘gilse dosya çalı¸smaz.Belle˘ge
ilk olarak dll dosyaları yuklendi˘ginden program açılmadan kapanır. ¸Simdi bir dll yazalım
ilk olarak resimde görüldü˘gü gibi ¸Sekil 5’te kullanım gösterilmi¸stir.
Class Library proje tipini seçiyoruz. Daha Sonra basit bir i¸slem olarak a¸sa˘gıdaki kodlar
yazıyoruz.
public int topla(int a, int b)
16
26. ¸Sekil 5: Sıralı olarak bir projede dll olu¸sturma ve ça˘gırma adımları
17
27. ¸Sekil 6: Dll referans gösterme i¸slemi
{
return a + b;
}
public double bol(Double a, Double b)
{
return a / b;
}
Daha Sonra Sadece Build edip i¸slemi 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 kar¸sımıza gelen tarayıcıya olu¸sturdu˘gumuz Dll dosyasının ye-
rini ¸Sekil 6’de oldu˘gu gibi gösteriyoruz.
Bunuda yaptıktan sonra Classımız solution’a eklendi.Sırada Classı ça˘gı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
28. ¸Sekil 7: Referans alınan komponentin içeri˘gi [8]
Convert.ToInt32(textBox2.Text)).ToString();
//Classmzdaki topla fonksiyonunu ça§rdk.
}
private void button2_Click(object sender, EventArgs e)
{
label4.Text = mydll.bol(Convert.ToDouble(textBox1.Text),
Convert.ToDouble(textBox2.Text)).ToString();
//Bol fonksiyonunu ça§rdk
}
4.6 Gösterge Ve Özelikleri
C#’ta bir önceki ba¸slıkta anlatıldı˘gı gibi çalı¸sma anında .dll uzantılı olarak projeye im-
port edilebildi˘ginden bahsettik ¸Sekil 7’da oldu˘gu gibi göstergeler projede referans olarak
eklendikten sonra tulbax’ta gözükecektir.
Göstergeye ait özelikler Tablo 2’de gösterilmi¸stir.
19
29. Tablo 2: Göstergeye ait i¸slevler
Özelik adı Tipi Tanımlaması
DialColor Color Arka plan rengini ayarlar
DialText String Göstergedeki yazıyı kontrol eder
EnableTransparent Background bool Transparan arkaplanı aktif eder
Glossiness Float Parlaklık
MaxValue Float En büyük alabilecek de˘geri
MinValue Float En küçük alabilece˘gi de˘geri
NoOfDivisions Int Numaralarla bölümlendirme
NoOfSubDivision Int Her bölme için görüntülenecek bölüm sayısı
RecommendedValu e Float E¸sik alan çizmek için pivot noktası olarak kullanılacaktır.
ThresholdPercent Float E¸sik alanının yüzde ölçe˘gini ayarlar.
Value Float De˘geri kontrol eder
4.7 Visual C# Chart Kullanımı ( Grafik )
Chart bildi˘gin grafik( Çubuk,pasta,çizgiler,e˘gilim çizgileri vs) hazırlamak için kulla-
nılan bir tür Microsoft tarafından geli¸stirilen Component’dir.[7] Bir çok projede i¸s gö-
rür niteliktedir ve tasarımını renklendirerek iyile¸stirebiliyorsunuz. 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 ki¸sisel 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 oldu˘gu gibidir bir chart. Ben network kim ne
20
30. kadar dosya indirmi¸s kim ne kadar dosya yüklemi¸s onların takibini yaptı˘gım için grafi˘gi
de ona göre hazırlayaca˘gı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;//Downloadn rengini
//belirledik.(Grafiksel iyile³tirmek için)
this.chart1.Series[1].Color = Color.Orange;//Uploadn rengini belirledik.
for (int i = 0; i 7; i++)//Ben 7 adet kayt 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 de˘gi¸skenleri 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 deste˘gi olan veri kaynaklarına
eri¸sebilmesi amacıyla kullanılır. Veri kayna˘gının tipi tam olarak bilinmedi˘gi için, arada bu
i¸slevi ayırt etmeye yarayan bir COM+ nesnesi yer almaktadır. OleDbConnection sınıfına
ait bir nesne ileti¸sim kurmak istedi˘gi veri kayna˘gına ait ole db veri sa˘glayıcısını belirtmek
durumundadır. Bunu daha iyi kavramak için a¸sa˘gıdaki ¸Sekil 9 figüre bakalım.
21
31. ¸Sekil 9: Oledb veri sa˘glayıcıları
Görüldü˘gü gibi bir OleDbConnection nesnesi öncelikle bir Ole Db Data Provider (
Ole Db Veri Sa˘glayıcısı) ile ileti¸sim kurar. Ardından bu veri sa˘glayıcı istenen veri kay-
na˘gına eri¸serek, gerekli hattı tesis etmi¸s olur. Peki bu i¸slemi nasıl gerçekle¸stirece˘giz. ˙I¸ste
tüm Connection nesnelerinin en önemli özelli˘gi olan ConnectionString özelli˘gi bu nok-
tada devreye girmektedir. Kısaca ConnectionString özelli˘gi ile, veri kayna˘gı ile sa˘glana-
cak olan ileti¸sim hattının kurulum bilgileri belirlenir. OleDbConnection sınıfı için Con-
nectionString özelli˘gi a¸sa˘gıdaki prototipe sahiptir. public virtual string ConnectionString
get; set; ConnectionString özelli˘gi belirlenmi¸s bir OleDbConnection sınıfı nesne örne˘gini
açtı˘gımızda, yani veri kayna˘gına olan hattı kullanılabilir hale getirdi˘gimizde, bu özel-
lik yanlız-okunabilir (read-only) hale gelir. Dolayısıyla açık bir OleDbConnection nesne-
sinin ConnectionString özelli˘gini de˘gi¸stiremezsiniz. Bunun için bu ba˘glantıyı tekrardan
kapatmanız gerekecektir. ConnectionString özelli˘gi, bir takım anahtar-de˘ger çiftlerinin
noktalı virgül ile ayırlmasından olu¸sturulan string bir bilgi toplulu˘gudur. ConnectionSt-
ring özelli˘gi içinde kullanabilece˘gimiz bu anahtar-de˘ger çiftlerinin en önemlisi Provider
anahtarıdır. Bu anahtara verece˘gimiz de˘ger, hangi tip ole db veri sa˘glayıcısını kullanmak
istedi˘gimizi belirtmektedir. Örne˘gin Sql sunucusuna, Sql Ole Db Provider ile ba˘glanmak
istersek, Provider anahtarına, SQLOLEDB de˘gerini atarız. Provider anahtarı mutlaka be-
lirtilir. Daha sonraki anahtar-de˘ger çiftleri ise bu Provider seçimine ba˘glı olarak de˘gi¸siklik
gösterecektir. Veri kayna˘gına hangi tip Ole Db Veri Sa˘glayıcısından ba˘glandı˘gımızı seç-
tikten sonra, ba˘glanmak istedi˘gimiz veri kayna˘gıda belli olmu¸s olucaktır. Sırada bu veri
22
32. kayna˘gının adını veya adresine belirtece˘gimiz anahtar-de˘ger çiftlerinin belirlenmesi var-
dır. Örne˘gin bir Sql Sunucusuna ba˘glanıyorsak, sunucu adınıda Ole Db Data Provider(
Veri Sa˘glayıcısı) ’na bildirmemiz gerekir. Bunun için Data Source anahtarını kullanırız.
Bununla birlikte ba˘glandı˘gımız veri kayna˘gı, sql yada oracle gibi bir veritabanı yönetim
sistemi de˘gilde, Access gibi bir tablolama sistemi ise, Data Source anahtarı, tablonun fi-
ziki adresini alır. Sql ve Oracle gibi sunuculara yapılacak ba˘glantılarda Provider ve Data
Source seçiminin yanında hangi veritabanına ba˘glanılaca˘gınıda Initial Catalog anahtarı
yada Database anahtarı ile belirleriz. Bunların dı¸sında veri kayna˘gına yapılacak olan ba˘g-
lantının güvenlik ayarlarınıda belirtiriz. Ço˘gunlukla Integrated Security gibi bir anahtara
True de˘gerinin atandı˘gını görürüz. Bu anahtar, veri kayna˘gına ba˘glanmak istenen uygu-
lama için, makinenin windows authentication ayarlarına bakıldı˘gını belirtir. Dolayısıyla
sql sunucusuna ba˘glanma yetkisi olan her windows kullanıcısı bu ba˘glantıyı sa˘glayabilir.
Ancak istersek belli bir kullanıcı adı veya ¸sifresi ilede bir veritabanına ba˘glantı açılmasını
sa˘glayabiliriz. 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çekle¸stirece˘giz.
˙Ilk örne˘gimizde, Sql Sunucusundaki veritabanı için, bir ba˘glantı hattı olu¸sturup açaca˘gız.
using System;
using System.Data.OleDb; /* OleDbConnection snf, Data.OleDb isim uzaynda ye
almaktadr. */
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
33. ¸Sekil 10: Ba˘glantı olu¸suruldu˘guna dair çıktı
{
conFriends.Open(); /* Open metodu ile olu³turdu§umuz ileti³im hattn
kullanma açyoruz. */
Console.WriteLine(Ba§lant açld...);
conFriends.Close(); /* Close metodu ilede olu³turulan ileti³im hattn
kapatyoruz. */
Console.WriteLine(Ba§lant kapatld...);
}
catch(Exception hata)
{
Console.WriteLine(hata.Message.ToString());
}
}
}
Aynı örnekte bu kez belli bir kullanıcı ile ba˘glanmak istedi˘gimizi dü¸sünelim. Bu du-
rumda ConnectionString’imizi a¸sa˘gıdaki ¸sekilde de˘gi¸stirmemiz gerekir. Bu durumda User
ID ve Password anahtarlarına gerekli kullanıcı de˘gerlerini atarız.¸Sekil 12’de ba˘glantı olu¸s-
turulmu¸s bir çıktı gösterilmi¸stir.
conFriends.ConnectionString = ”Provider = SQLOLEDB;DataSource = localhost;Database =
Friends;UserId = sa;Password = CucP??80.”; ¸Simdide bir Access tablosuna nasıl ba˘g-
lanabilece˘gimizi görelim. Bunun için ConnectionString özelli˘gimizi a¸sa˘gıdaki gibi yaza-
rız.
OleDbConnection conYazarlar=new
OleDbConnection(Provider=Microsoft.Jet.OLEDB.4.0;data source=c:Authors.mdb)
24
34. ¸Sekil 11: Oledb nesne ile ba˘glantı olu¸sturuldu˘gunun çıktısı
try
{
conYazarlar.Open();
Console.WriteLine(Yazarlar Access veritabanna ba§lant açld...);
conYazarlar.Close();
Console.WriteLine(Yazarlar Access veritabanna olan ba§lant kapatld...);
}
catch(Exception hata)
{
Console.WriteLine(hata.Message.ToString());
}
Bu örnekte dikkat ederseniz ConnectionString özelli˘gini, OleDbConnection nesnemizin
di˘ger 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 ba˘glanmak istedi˘gimizi
bu Ole Db Provider’a bildirmi¸s olduk.Daha sonra bu veri sa˘glayıcı componenti, Data
Source anahtarındaki de˘gere bakarak, ilgili adresteki veritabanına bir hat çekti.
¸Sekil 11’de örnekte bu gösterilmi¸stir.
25
35. 5 Programlama
Araç simulasyon ortamına ait kullanılan eventler ve özelikler.
5.1 Algoritmalar
5.1.1 Gaza basma
Bu fonksiyon temel olarak a¸sa˘gıdaki kaba kodu gerçekler.timer belirlenen hassas peri-
yotlarda a¸sa˘gıdaki event’i denleyecektir ve program bu ko¸sullara göre ko¸sacaktır.
• e˘ger gaza basılırsa
• hız sabitleyicide de˘gilse
• gazı oku
• e˘ger sabitleyicide ise
• e˘ger sabitlenme hızı anlık hızdan küçükse ise
• gazı ver
• de˘gilse
• gazı sıfırla
5.1.2 Tekerler
Bu fonksiyonda parametre olarak aldı˘gı aracın lastik ölçüleri,maksimum motor devri,vites
di¸sli oranlarına göre a¸sa˘gıdaki hesaplamaları yapan i¸slevdir.
• tekerin yuvarlanma mesafesini bul
26
36. • her bir vites oranına göre maksimum hızları hesapla
5.1.3 Araç kuvveti
Bu fonksiyon ise vites konumu ve gaz kelebe˘ginden okudu˘gu de˘gerlere göre aracın
motor devrinin seyretti˘gi devir de˘gerine göre motor torkuna göre yola aktarılan kuvveti
hesaplayan i¸slevdir.
• e˘ger itronic mod aktifse
• ba˘glı parametrelere göre vites arttır
• eger vites 1 de ise
• birinci vitesin oranını al
• de˘gilse e˘ger vites 2 de ise
• birinci vitesin oranını al
• de˘gilse e˘ger vites 3 de ise
• birinci vitesin oranını al
• de˘gilse e˘ger vites 4 de ve ¸sanzımandan küçük ise
• birinci vitesin oranını al
• de˘gilse e˘ger vites 5 de ve ¸sanzımandan küçük ise
• birinci vitesin oranını al
• de˘gilse e˘ger vites 6 de ve ¸sanzımandan küçük ise
• birinci vitesin oranını al
27
37. • de˘gilse e˘ger vites 7 de ve ¸sanzımandan küçük ise
• birinci vitesin oranını al
• e˘ger dev tick degerinden kucukse
• dev e tik de˘gerini ata
• de˘gilse
• güncel devir hızını hesapla
• e˘ger
• dev maxdevirden buyukse
• dev e maksimum de˘geri ata
• yola aktarılan kuvveti hesapla
5.1.4 Dı¸s kuvvetler
Bu metotta e˘ger menzil olarak atanmı¸s alınacak yol tükenmi¸s ise yeni yol ba¸slı˘gı
olu¸sturur 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 ini¸s yada çıkı¸stan olu¸san rastgele e˘gimli belirli bir menzilden olu¸san harita
olu¸stur
28
38. • e˘ger harita seçilmi¸sse
• haritadan parametreleri çek
• e˘ger menzil sıfırdan küçük de˘gilse
• e˘gime 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 de˘gerini 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 ba¸slı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 tu¸su
Bu fonksiyonda hız sabitleme tu¸suna basıldı˘gında a¸sa˘gıdaki algoritmayı gerçekler.
29
39. • tu¸su devre dı¸sı bırak
• modu aktif et
• anlık hızı sabitltici hız olarak ata
• formda sabitlenmi¸s hızı göster
5.1.8 i-tronic tu¸su
• butonu disable et
• sınıflandrıcıyı aktif et
5.1.9 Gaza basma ve fren yapma
Mainform mousemove özeli˘gi ile ili¸skilendirilmi¸s fonksiyon
• belirtilen koordinatlar arasında ise imleç
• gaz verme koordinatları içinde ise gaz ver(kalibrasyona göre)
• de˘gilse
• fren verme koordinatları içinde ise fren yap(kalibrasyona göre)
• hız sabitleyici devre dı¸sı
• mod false
• sabitleyici tu¸su aktif et
30
40. 5.1.10 Vites artırma azaltma
Vites arttırıp azaltma artırma i¸slemi 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 sa˘g 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,i¸slev ve alanlar ¸Sekil 12’te görüldü˘gü gibidir
5.2.2 Anaforma ait i¸slev ve üyeleri
Anaforma ait i¸slevler ¸Sekil 13’deki gibidir.
31
41. ¸Sekil 12: Naive bayes sınıfına ait i¸slev ve alanları
¸Sekil 13: Ana forma ait i¸slev ve alanları
32
42. 5.3 Araç Ve Harita Veritabanı
Burada veritabanından çekilmek üzere bazı veriler kaydedilecektir.Veriler sırasıyla
a¸sa˘gıdaki gibidir.
• Bölünmü¸s devir bantlarına ait tork de˘gerleri
• Vites oranları
• Son di¸sli oranı
• A˘gırlık
• Tekerlek ölçüleri
• Tüketim katsayıları
• Vites sayisi
• Son deviri
• Geni¸slik,Yükseklik,cw de˘geri 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 e˘gimi,yukarımıı,mesafesi ve sürtünme
katsayılarını barındırır.
33
44. 6 SONUÇLAR VE ÖNER˙ILER
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ı sa˘glandı,ancak vites oranlarının biribirine
çok yakın oldu˘gu ve veri kümesinin kararsız,bulanık oldu˘gu durumlarda ba¸sarısız netice
vermesi olasılı˘gı yüksek oldu˘gu gözlenmi¸stir.
35