poniedziałek, maja 22, 2006

Warunki rozmyte ;-)

Pisząc poprzedniego posta przypomniałem sobie mój szalony pomysł warunków rozmytych w języku programowania ;-)
Myślałem o 2 możliwych wersjach implementacji warunków rozmytych, pierwsza polegałaby na tym, że w momencie dotarcia do warunku rozmytego program dzieliłby się na dwa nowe wątki z których każdy otrzymywałby pewne prawdopodobieństwo [zależne od parametrów warunku rozmytego ;-)] i dalej by działał już z takim ustawieniem prawdopodobieństwa.
Np. program wyglądający w taki sposób:

01: a=1;
02: b=2;
03: fuzzyif(0.7) c=a+b : c=a-b;
04: d=a*2+c;
05: fuzzyif(0.3)
06: {
07: d=d-1;
08: fuzzyif(0.7) d=d+3;
09: }

działałby tak:
na początku mielibyśmy wątek 1 o prawdopodobieństwie 1.
W linii 3 postałby wątek 2 z prawdopodobieństwem 0.3, prawdopodobieństwo wątku 1 zmieniłoby się na 0.7 i wykonałby on kod c=a+b, za to wątek 2 wykonałby kod c=a-b;
Mielibyśmy więc w linii 4 dla wątku 1 takie wartości: a=1, b=2, c=3, d=5, a dla wątku 2 a=1, b=2, c=-1, d=1
W linii 5 znów doszłoby do rozszczepienia naszych wątków, z wątku 1 o prawdopodobieństwie 0.7 powstałby nowy wątek 3 o prawdopodobieństwie 0.7*0.7, a prawdopodobieństwo wątka 1 zmieniłoby się na 0.7*0.3, wątek 2 zmieniłby swoje na 0.3*0.7, powstałby też nowy o prawdopodobieństwie 0.3*0.3 ;-)
I tak dalej i tak dalej, wyniki mojej symulacji na kartce są następujące:
wynik1: a=1, b=2, c=3, d=7, P=0.7*0.3*0.7=0.15
wynik2: a=1, b=2, c=3, d=5, P=0.7*0.7=0.49
wynik3: a=1, b=2, c=3, d=4, P=0.7*0.3*0.3=0.06
wynik4: a=1, b=2, c=-1, d=3, P=0.3*0.3*0.7=0.06
wynik5: a=1, b=2, c=-1, d=1, P=0.3*0.7=0.21
wynik6: a=1, b=2, c=-1, d=0, P=0.3*0.3*0.3=0.03



Co jeżeli uznać prawdopodobieństwa za wagi daje wyniki:
a=1, b=2, c=1.8, d=4.13.
W celu obliczenia tych wartości konieczne byłoby stworzenie 6 wątków.

Drugie podejście mogłoby polegać na tym, że w każdym fuzzyif'ie odbywałoby się losowanie i zależnie od wyniku kod zaczynałby działać w odpowiedniej ścieżce kodu ;-)

Przyznam, że zastosowanie żadnego nie widzę dla warunków rozmytych ;-) widzę nawet wielkie problemy z nimi, ale idea i tak jest zabawna.


Podobne postybeta
I tak żle i tak niedobrze
Java i liczby pierwsze, odsłona druga
Szkoła, a ja zaczynam rozumieć ClassLoader'a
Thread.stop() i "nieśmiertelne" wątki ;-)
Matematyczne podstawy zakupu skarpetek ;-)