.
* @author Gündüz Can YILMAZ
* @copyright 2009
* @version 1.0.0
* @access public
* @site http://www.cnylmz.net
*/
class adaline extends YSA {
public $log;
public $iterasyonlar;
function ogren() {
$ornekSayisi=count($this->ogirdiler);
$girdiSayisi=count($this->agirliklar);
$ogrenme=false;
$i=0;
while($ogrenme==false) {
$ogrenmeDurumu=array();
for($ornek=0;$ornek<$ornekSayisi;$ornek++) {
$logtemp=array();
$i++;
$NET=0;
for($x=0;$x<$girdiSayisi;$x++) {
$NET += $this->ogirdiler[$ornek][$x] * $this->agirliklar[$x];
$logtemp['formul'][]='W'.$x.'*X'.$x.'';
$logtemp['degerler'][]=$this->agirliklar[$x].' * '.$this->ogirdiler[$ornek][$x];
}
$logtemp['formul'][]='Ø';
$logtemp['degerler'][]=$this->esikDegeri;
$NET=$NET+$this->esikDegeri;
$logtemp['net']=$NET;
if($NET >= 0)
{
$sonuc=1;
$logtemp['c1']='NET >= 0 olduğundan Ç1=1';
} else {
$sonuc=-1;
$logtemp['c1']='NET < 0 olduğundan Ç1=-1';
}
if($sonuc == $this->obeklenen[$ornek]) {
$ogrenmeDurumu[]=1;
$this->log[]=$i.' iterasyon: Ç1 = B1 değişiklik yapılmayacak';
$logtemp['sonuc']='Ç1 = B1 degişiklik yapılmıyor';
}
else {
$ogrenmeDurumu[]=0;
$this->log[]=$i.' iterasyon: Ç1 != B1 ağırlıklar değiştirilecek';
$logtemp['sonuc']='Ç1 != B1 Ağırlıklar Değiştiriliyor'.
'
Yeni Ağırlıklar: ';
for($x=0;$x<$girdiSayisi;$x++) {
$this->agirliklar[$x]=$this->agirliklar[$x] + $this->ogrenmeKatsayisi*($this->obeklenen[$ornek]-$sonuc)*$this->ogirdiler[$ornek][$x];
$logtemp['sonuc'].=' W'.$x.'='.$this->agirliklar[$x];
}
$this->esikDegeri=$this->esikDegeri + $this->ogrenmeKatsayisi*($this->obeklenen[$ornek]-$sonuc);
$this->log[]='Yeni Ağırlıklar: '.implode(',',$this->agirliklar);
}
$this->iterasyonlar[]=$logtemp;
}
if(in_array(0,$ogrenmeDurumu)===false) {
$ogrenme=true;
$this->log[]='Öğrenme Tamamlandı';
}
}
}
function karar($girisler){
$NET=0;
$girdiSayisi=count($girisler);
for($x=0;$x<$girdiSayisi;$x++) {
$NET += $this->ogirdiler[$ornek][$x] * $this->agirliklar[$x]+ $this->esikDegeri;
}
return ($NET >= 0) ? 1:0;
}
function iterasyonhtml() {
$itr=count($this->iterasyonlar);
echo '