Fuzzy Logic Hangi Programla Yazılır?

firzen

Bölüm Yöneticisi
Yönetici
Bölüm Yöneticisi
Katılım
14 Tem 2010
Mesajlar
360
Puanları
8
Yaş
29
Konum
Sheffield
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ü.
 

Erdem⁣

Katılımcı Üye
Katılım
14 Ocak 2013
Mesajlar
501
Puanları
58
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;
    /*
    [...]
    */
};
 

firzen

Bölüm Yöneticisi
Yönetici
Bölüm Yöneticisi
Katılım
14 Tem 2010
Mesajlar
360
Puanları
8
Yaş
29
Konum
Sheffield
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.
 

Sponsor Bağlantı

Forum istatistikleri

Konular
112,477
Mesajlar
791,690
Kullanıcılar
413,340
Son üye
Adnancebeci
Üst