Fuzzy Logic Hangi Programla Yazılır?

Tamam nasıl öğrenebilirsiniz söylemem için ne mezunusun ona göre diyeyim. Mühendislik Fak. ise kitap yüksek lisans ise yayın vs önereceğim çünkü.
 
Arkadaşlar ben bulanık mantığın ne olduğunu biliyorum.

Ama arkadaşın soru soruş tarzından ben herhalde PIC programlamayı öğrenmek istiyor ama yanlış bir konu başlığı altına yazdı diye düşünmüştüm.

Bulanık mantık uygulamaları tüm programlama dilleri ile yazılabilir.

Bulanık mantık uygulamaları geliştirmek için hangi kütüphaneler kullanılabilir diye sorulursa Python'un Skfuzzy kütüphanesine bakabilirler.

Örneğin bir yerlere yemek yemeğe gittiniz. Bahşiş vereceksiniz. Vereceğiniz bahşiş miktarının bulanık mantıkla nasıl tasarlanacağı burada basit bir uygulamayla anlatılıyor.

https://bit.ly/3jL0QOV

Bulanık mantık ilk kez sanırım bu kitabı okurken karşıma çıkmıştı.

http://www.ai-junkie.com/books/toc_pgaibe.html

Bu kitapta Madenci Bob ve karısı Elisa'nın maceraları anlatılıyor. Madenci Bob madenden altın topluyor, yemek yiyor, odun kesiyor. Karısı da bir şeyler yapıyor. Tüm bunlar ilk başta konsolda yapay zekayla tasarlanıyor.

Sonra kitabın ileriki aşamalarında A* vs gibi arama algoritmaları anlatılıyor. Hatta adamlar bu kitabı çalışırken örneğin yol üzerinde trafik levhalarına vs. toslamayın gibisinden bir uyarı yazmışlardı. Çok ilginç geldi.

Daha da ileriki aşamalarda kuşların hareketlerinin modellenmesi ("steering behaviours for autonomous characters") ve FIFA benzeri 2D bir oyunun nasıl yapılacağı anlatılıyor.

Güzel kitap ama ortanın üzeri bir C++ bilgisi gerektiriyor. Görsel uygulamaların geliştirilmesi için win32api kullanmış.

Örneğin kitabın kaynak kodundan sadeleştirilmiş bir örnek. C++'nin şablon olanaklarını kullanan bu kodu okuyabiliyorsanız sıkıntı yok.

C++:
#include <vector>
#include <list>
#include <cassert>

#include "Vector2D.h"
#include "DugumTurKisaltmalari.h"

template <class dugum_turu, class kenar_turu>
class SeyrekGrafik
{

public:

    typedef kenar_turu KenarTuru;
    typedef dugum_turu DugumTuru;

    typedef std::vector <dugum_turu> Dugumler;
    typedef std::list <kenar_turu> KenarListe;
    typedef std::vector <KenarListe> Kenarlar;
    typedef typename KenarListe::const_iterator GecerliKenar;
    typedef typename KenarListe::iterator Gecerlikenar;

private:

    // bu grafiği oluşturan düğümler
    Dugumler dugumler_;

    // bitişik kenar listesinden oluşan bir vektör topluluğu
    // ( her düğümün sıra numarası bu düğümle bağlantılı bir
    // kenar listesi ile ilişkili)

    Kenarlar kenarlar_;

    // grafiğimiz yönlü mu?
    bool yonluGrafikMi_;

    int sonrakiDugumNo_;

    // Eğer grafikte bir kenar yoksa true döndürür. Kenar
    // eklerden bir kenarın birden fazla oluşturulmasını
    // engellemek için kullanılır
    bool kenarTekMi (int nerden, int nereye) const;

    // Grafikteki tüm kenarları gezer ve geçersiz olan
    // kenarları kaldirir
    void gecersizKenarlariYokEt ();

public:

    SeyrekGrafik (bool yonluGrafikMi)
        : sonrakiDugumNo_ (0),
          yonluGrafikMi_ (yonluGrafikMi)
    {}


    // Belirtilen sıradaki düğümü öğrenir
    const DugumTuru & dugumOgren (int no) const;


    // const olmayan versiyonu
    DugumTuru & dugumOgren (int no);

    const KenarTuru & kenarOgren (int nerden, int nereye) const;
    /*
    [...]
    */
};
 
Arkadaşlar ben bulanık mantığın ne olduğunu biliyorum.

Ama arkadaşın soru soruş tarzından ben herhalde PIC programlamayı öğrenmek istiyor ama yanlış bir konu başlığı altına yazdı diye düşünmüştüm.

Bulanık mantık uygulamaları tüm programlama dilleri ile yazılabilir.

Bulanık mantık uygulamaları geliştirmek için hangi kütüphaneler kullanılabilir diye sorulursa Python'un Skfuzzy kütüphanesine bakabilirler.

Örneğin bir yerlere yemek yemeğe gittiniz. Bahşiş vereceksiniz. Vereceğiniz bahşiş miktarının bulanık mantıkla nasıl tasarlanacağı burada basit bir uygulamayla anlatılıyor.

https://bit.ly/3jL0QOV

Bulanık mantık ilk kez sanırım bu kitabı okurken karşıma çıkmıştı.

http://www.ai-junkie.com/books/toc_pgaibe.html

Bu kitapta Madenci Bob ve karısı Elisa'nın maceraları anlatılıyor. Madenci Bob madenden altın topluyor, yemek yiyor, odun kesiyor. Karısı da bir şeyler yapıyor. Tüm bunlar ilk başta konsolda yapay zekayla tasarlanıyor.

Sonra kitabın ileriki aşamalarında A* vs gibi arama algoritmaları anlatılıyor. Hatta adamlar bu kitabı çalışırken örneğin yol üzerinde trafik levhalarına vs. toslamayın gibisinden bir uyarı yazmışlardı. Çok ilginç geldi.

Daha da ileriki aşamalarda kuşların hareketlerinin modellenmesi ("steering behaviours for autonomous characters") ve FIFA benzeri 2D bir oyunun nasıl yapılacağı anlatılıyor.

Güzel kitap ama ortanın üzeri bir C++ bilgisi gerektiriyor. Görsel uygulamaların geliştirilmesi için win32api kullanmış.

Örneğin kitabın kaynak kodundan sadeleştirilmiş bir örnek. C++'nin şablon olanaklarını kullanan bu kodu okuyabiliyorsanız sıkıntı yok.

C++:
#include <vector>
#include <list>
#include <cassert>

#include "Vector2D.h"
#include "DugumTurKisaltmalari.h"

template <class dugum_turu, class kenar_turu>
class SeyrekGrafik
{

public:

    typedef kenar_turu KenarTuru;
    typedef dugum_turu DugumTuru;

    typedef std::vector <dugum_turu> Dugumler;
    typedef std::list <kenar_turu> KenarListe;
    typedef std::vector <KenarListe> Kenarlar;
    typedef typename KenarListe::const_iterator GecerliKenar;
    typedef typename KenarListe::iterator Gecerlikenar;

private:

    // bu grafiği oluşturan düğümler
    Dugumler dugumler_;

    // bitişik kenar listesinden oluşan bir vektör topluluğu
    // ( her düğümün sıra numarası bu düğümle bağlantılı bir
    // kenar listesi ile ilişkili)

    Kenarlar kenarlar_;

    // grafiğimiz yönlü mu?
    bool yonluGrafikMi_;

    int sonrakiDugumNo_;

    // Eğer grafikte bir kenar yoksa true döndürür. Kenar
    // eklerden bir kenarın birden fazla oluşturulmasını
    // engellemek için kullanılır
    bool kenarTekMi (int nerden, int nereye) const;

    // Grafikteki tüm kenarları gezer ve geçersiz olan
    // kenarları kaldirir
    void gecersizKenarlariYokEt ();

public:

    SeyrekGrafik (bool yonluGrafikMi)
        : sonrakiDugumNo_ (0),
          yonluGrafikMi_ (yonluGrafikMi)
    {}


    // Belirtilen sıradaki düğümü öğrenir
    const DugumTuru & dugumOgren (int no) const;


    // const olmayan versiyonu
    DugumTuru & dugumOgren (int no);

    const KenarTuru & kenarOgren (int nerden, int nereye) const;
    /*
    [...]
    */
};

Yanlış anlama bu söyleyeceğimi kişisel değil. Benim "Bulanık Mantık" uygulayarak yaptığım 2 tane yayın var uluslararası ben bile tam anlamıyla biliyorum diyemiyorum. Çünkü Membership Functionların seçiminden ateşlemenin nasıl olacağı Crisp değerlerinin belirlenmesi vs...

Ama evet başlangıç için izlediğin yol doğru. Çünkü tüm kitaplarda hatta matlab bile bahşiş olayından bahseder. Arkadaşa da sormamın sebebi buydu nerede kullnacaksınız amaç nedir diye? Ona göre asıl öneri sunulabilir.
 
Tekrar Merhaba arkadaşlar, öncelikle cevaplarınız için teşekkür ederim, işin aslında meslek lisesi mezunuyum şuan ise teknikerlik okuyorum nasip olursa dgs ile elektrik elektronik mühendisliğine geçmeye niyetliyim pic programlamadan kastım;
- arduino
- pic entegreleri
- yapay zeka
- robotik kodlama gibi konularda bilgi sahibi olmaktı dediğim gibi sadece konu başlıklarını az çok biliyorum. Sizlerden istediğim ise bu konulara ilk nerden başlanmalı, nasıl bir yol izlenmesi gerektiğidir konu hakkında verdiğiniz cevaplarınız için size canı gönülden teşekkür eder çalışma hayatlarınızda başarılar dilerim.
 

Forum istatistikleri

Konular
130,126
Mesajlar
933,361
Kullanıcılar
453,199
Son üye
mosmanali01

Yeni konular

Çevrimiçi üyeler

Geri
Üst