top of page

Bulanik Mantik Motor Performans Uygulamasi [Java]

  • Writer: Sevdanur GENC
    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.

Recent Posts

See All
Oracle Java Cloud Service Uygulamasi

Bir onceki Oracle Cloud Computing yazisinda bahsettigim gibi JDeveloper Oracle Cloud icin gelistirmis oldugu surumu olan Oracle JDeveloper 11g (11.1.1.6.0) ile kucuk bir uygulama gelistirip bunu oracl

 
 
 
Oracle Cloud Computing Hakkinda

Bulut bilisim konusundaki arastirmalarima devam ederken bu kez solugu Oracle Cloud Computing'de aldim. Bu makalem ve ilerleyen makalelerimde Trial versiyonu ile user tarafini pek yormayan bir yapidan

 
 
 
Nested Parallel Loops

Matrix Multiplication / Matrix Carpma islemlerini OpenMP araciligi ile paralel alanda nasil yapilabilecegini incelerken ayni zamanda for construct'larin nested parallel loops alaninda nasil calistigin

 
 
 

Comments


©2035 by Sevdanur Genc. Powered and secured by Wix

bottom of page