// simulated annealing
// 
import java.io.*;
import javax.swing.JOptionPane;


class fa extends f_xj
{
//çözümü istenen fonksiyon	
 public double func(double x[])
 {
    double ff= (x[0]-1)*(x[0]-1)+(x[1]-2)*(x[1]-2)+(x[2]-3)*(x[2]-3);
    return ff; //maksimum testi
}
}

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;
fa fx=new fa();
return -fx.func(x); //maksimum testi
}
}

class OPO22
{
    public static void main(String args[]) throws IOException
    {
    int N=18;
	int POPSIZE=1;
    int MAXGENS=10;
    int NVARS=3;
    fa fax=new fa();
    fb fbx=new fb();
    SA xx=new SA(POPSIZE,NVARS,N,30);
    double low[]=new double[NVARS];
    double high[]=new double[NVARS];
    low[0]=-3.0;high[0]=3;
    low[1]=-3;high[0]=3;
    low[2]=-3;high[0]=3;
    double a[]=xx.calculate(low,high,fbx,true);
    double x0[]=new double[NVARS];
    for(int i=0;i<NVARS;i++) x0[i]=a[i];
    String s="simulated annealing (tavlama simulasyonu)metodu sonucu =\n"+Matrix.toStringT(a);
    String s2="simulated annealing  optimizasyonu :";
    JOptionPane.showMessageDialog(null,s,s2,JOptionPane.PLAIN_MESSAGE);     
    }
}
