Bulanik Mantik Motor Performans Uygulamasi [Java]
- Sevdanur GENC

- Nov 19, 2012
- 4 min read
Bu makale iceriginde Suleyman Demirel Universitesi - Bilgisayar Muhendisligi bolumu'nun Yapay Zeka dersi icin gelistirilen Bulanik Mantik uygulamasinin Java'nin JSF ozelligi ile yapilmis bir ornegini paylasiyor olacagim. Bir sonraki makalemde ise .Net uzerindeki yapilmis hali ve icerisine katmis oldugumuz grafiksel ozellikleride paylasiyor olacagim. Bunun icin oncelikle uygulamamiz icin gerekli problemi inceleyelim, hemen ardindanda kaynak kodlarini inceleyelim...
Bir dizel otomobilin Tork (t), Saatlik yakit tüketimi (Y) miktarlarina göre Motor Performansini (MP) belirleyen bir bulanik kontrol sistemi tasarlaniyor olacak. Parametrelerin sinir degerleri asagida verilmistir.
Tork(t)=<0-23> , Y=<2-12 kg/h> , MP=<15-40 kw>
Motor performansini belirleyen kural tablosunda asagidaki degerler kullanilacaktir.
Çok Düsük, Düsük, Normal, Yüksek, Çok Yüksek...
Torku t=15 ve Saatlik Yakit Tüketimi Y=5 kg/h olan bir dizel otomobilin motor performansi kaç kW oldugunu bulunacaktir. Ve bunun icinde uygun Cikarim mekanizmasini ve durulastirma yöntemini secerek sonuclari uygulama uzerinde goruyor olacagiz.
Tork(t)=<0-23>
Çok Düsük, Düsük, Normal, Yüksek, Çok Yüksek
Tork Degerlerini Siniflandiracak Olursak;
Saatlik yakit tüketimi =<2-12 kg/h>
Çok Düsük, Düsük, Normal, Yüksek, Çok Yüksek
Saatlik Yakit Tüketim(Y) Degerlerini Siniflandiracak Olursak;
Motor Performansi=<15-40 kw>
Çok Düsük, Düsük, Normal, Yüksek, Çok Yüksek
Motor performansini belirleyen dilsel ifade tablosu:
Uygulamamizi Java Uzerinde JSF ve GlassFish yapilarini kullanarak gelistirelim.
Uygulama icin arayuzunuzu nasil hazirlayacaginiz hakkindaki gerekli bilgileri daha once blogumun diger makalelerinde yer almaktadir. Bu yuzden kisaca hemen tasarim ve kodlara gececek olursak uygulamanizi yandaki hiyerarsiya uyacak sekilde hazirlayabilirsiniz.
Tum islemleri ve metodlari BulanikMantik.Java uzerinde gerceklestiriyor olacagiz. Ana sayfamiz acildiginda ise Tork degerleri icin 0 ile 23 arasindaki sayilari acilir listeye yuklemek icin TorkLimit.Java sinifi kullaniyor olacagiz. YakitTuk.Java sinifi ile de 2 ile 12 arasindaki degerleri acilir listeye yuklettirmis oluyoruz. Index.Xhtml icerisinde de gerekli olan jsf kodlarimiz yer alacaktir. Kod tasarimina gececek olursak ;
BulanikMantik.Java Kaynak Kodlari ;
package com.bean;
import javax.faces.bean.ManagedBean;
@ManagedBean(name="bulanikMantik")
public class BulanikMantik {
private String sonuc;
private int Tork;
private double TorkSon;
private int Syt;
private double Ort;
private double MotorP;
private double SytSon;
private String mp;
public BulanikMantik(){}
public String motorPerformans()
{
TorkMd();
SaatYakitTuketimi();
Ort=((SytSon*0.3)+(TorkSon*0.7))/2;
MotorP=((10+(Syt*(6.25/2.5)))+(15+(Tork*(6.25/5.75))))/2;
if (Ort<=0.5)
{
if (MotorP<18)
{
mp="Cok Yuksek";
return mp;
}
if (MotorP>=18 && MotorP<24)
{
mp="Yuksek";
return mp;
}
if (MotorP>=24 && MotorP<31)
{
mp="Orta";
return mp;
}
if (MotorP>=31 && MotorP<37)
{
mp="Dusuk";
return mp;
}
if (MotorP>=37 )
{
mp="Cok Dusuk";
return mp;
}
}
if (Ort>0.5)
{
if (MotorP<21)
{
mp="Cok Yuksek";
return mp;
}
if (MotorP>=21 && MotorP<27)
{
mp="Yuksek";
return mp;
}
if (MotorP>=27 && MotorP<34)
{
mp="Orta";
return mp;
}
if (MotorP>=34)
{
mp="Dusuk";
return mp;
}
}
return mp;
}
public double TorkMd()
{
if (Tork<5.75)
{
TorkSon= ((5.75-Tork)/5.75);
return TorkSon;
}
if (Tork<11.5 && Tork>=5.75)
{
TorkSon= ((11.5-Tork)/5.75);
return TorkSon;
}
if (Tork<17.25 && Tork>=11.5)
{
TorkSon= ((17.25-Tork)/5.75);
return TorkSon;
}
if (Tork<23 && Tork>=17.25)
{
TorkSon= ((23-Tork)/5.75);
return TorkSon;
}
if (Syt<4.5)
{
SytSon= ((4.5-Syt)/2.5);
return SytSon;
}
if (Syt<7 && Syt>=4.5)
{
SytSon= ((7-Syt)/2.5);
return SytSon;
}
if (Syt<17.25 && Syt>=7)
{
SytSon= ((17.25-Syt)/2.5);
return SytSon;
}
if (Syt<23 && Syt>=17.25)
{
SytSon= ((23-Syt)/2.5);
return SytSon;
}
return (Double) null;
}
public double SaatYakitTuketimi()
{
if (Syt<4.5)
{
SytSon= ((4.5-Syt)/2.5);
return SytSon;
}
if (Syt<7 && Syt>=4.5)
{
SytSon= ((7-Syt)/2.5);
return SytSon;
}
if (Syt<17.25 && Syt>=7)
{
SytSon= ((17.25-Syt)/2.5);
return SytSon;
}
if (Syt<23 && Syt>=17.25)
{
SytSon= ((23-Syt)/2.5);
return SytSon;
}
return (Double) null;
}
public int getTork() { return Tork; }
public void setTork(int Tork) { this.Tork = Tork; }
public int getSyt() { return Syt; }
public void setSyt(int Syt) { this.Syt = Syt; }
public String getMp() { return mp; }
public void setMp(String mp) { this.mp = mp; }
public String getSonuc() { return sonuc; }
public void setSonuc(String sonuc) { this.sonuc = sonuc; }
public double TorkSon() { return TorkSon; }
public void setTorkSon(double TorkSon) { this.TorkSon = TorkSon; }
public double getOrt() { return Ort; }
public void setOrt(double Ort) { this.Ort = Ort; }
public double getSytSon() { return SytSon; }
public void setSytSon(double SytSon) { this.SytSon = SytSon; }
public double getMotorP() { return MotorP; }
public void setMotorP(double MotorP) { this.MotorP = MotorP; }
}
TorkLimit.Java Kaynak Kodlari ;
package com.bean;
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.model.SelectItem;
@ManagedBean(name="torkLimit")
@RequestScoped
public class TorkLimit {
private List<SelectItem> deger;
public TorkLimit() { }
public List<SelectItem> getDeger()
{
List<SelectItem> list = new ArrayList<SelectItem>();
for (int i = 0; i < 24; i++)
{
list.add(new SelectItem(i));
}
return list;
}
}
YakitTuk.Java Kaynak Kodlari ;
package com.bean;
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.model.SelectItem;
@ManagedBean(name="yakitTuk")
@RequestScoped
public class YakitTuk {
private List<SelectItem> deger;
public YakitTuk() { }
public List<SelectItem> getDeger()
{
List<SelectItem> list = new ArrayList<SelectItem>();
for (int i = 2; i < 13; i++)
{
list.add(new SelectItem(i));
}
return list;
}
}
Index.XHTML Kaynak Kodlari ;
<?xml version='1.0' encoding='UTF-8' ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core"> <h:head> <title>Yapay Zeka</title> </h:head> <body> <div> </div> <div> <div> <h1>Bulanik Mantik</h1> <h2> <h:form> <h:panelGrid columns="2"> <h:outputLabel value="Tork Degeri
:"></h:outputLabel> <h:selectOneMenu validatorMessage="required" value="#{bulanikMantik.tork}"> <f:selectItems value="#{torkLimit.deger}" /> </h:selectOneMenu> <h:outputLabel value="Saatlik Yakit Tukerimi
:"></h:outputLabel>
<h:selectOneMenu validatorMessage="required" value="#{bulanikMantik.syt}">
<f:selectItems value="#{yakitTuk.deger}" />
</h:selectOneMenu>
<h:commandButton value="Hesapla" action="#{bulanikMantik.motorPerformans()}"> </h:commandButton>
<h:outputLabel value="" />
<h:outputLabel value=" Tork Degeri :" />
<h:outputText value=" #{bulanikMantik.tork} " />
<h:outputLabel value=" Yakit Tuketimi Degeri :" />
<h:outputText value=" #{bulanikMantik.syt} " />
<h:outputLabel value=" Ortalama Degeri :" />
<h:outputText value=" #{bulanikMantik.ort} " />
<h:outputLabel value=" Genel Ortalama Degeri :" />
<h:outputText value=" #{bulanikMantik.motorP} " />
<h:outputLabel value="Motor Performansi Degeri :" />
<h:outputText value=" #{bulanikMantik.mp} " />
</h:panelGrid>
</h:form>
</h2>
<p>
</p>
</div>
</div>
</body>
</html>
Ekran Goruntusu ;
Bahsettigim gibi ilerleyen makalelerde .Net uygulamasi ile grafiksel arayuzlerinide paylasiyor olacagim. Keyifli Calismalar Dilerim.
Comments