// iterated hill climbing
// 
import java.io.*;
import javax.swing.JOptionPane;

class fb extends f_xj
{
public double func(double x[]) 
{
//çözümü istenen fonksiyon
// newton metodu minimumaçalışıyor bu yüzden 
//- işaretitanımladık.	
double ff;
double eps=1.0e-5;
double y=Math.sqrt(x[0]*x[0]+x[1]*x[1]+eps);
return Math.sin(y)/y; //maksimum testi
}
}

class OPO23
{
    public static void main(String args[]) throws IOException
    {
    int N=18;
	int POPSIZE=40;
    int MAXGENS=400;
    int NVARS=2;
    fb fbx=new fb();
    IHC xx=new IHC(POPSIZE,NVARS,N,20);
    double low[]=new double[NVARS];
    double high[]=new double[NVARS];
    low[0]=-20.0;high[0]=20;
    low[1]=-20.0;high[1]=20;
    double a[]=xx.calculate(low,high,fbx,false);
    double x0[]=new double[NVARS];
    for(int i=0;i<NVARS;i++) x0[i]=a[i];
    String s="iterasyonlu tepe tırmanma metodu sonucu =\n"+Matrix.toStringT(a);
    String s2="iterasyonlu tepe tırmanma çok değişkenli fonksiyon optimizasyonu:";
    JOptionPane.showMessageDialog(null,s,s2,JOptionPane.PLAIN_MESSAGE);     
    }
}
