Java Code Examples for java.lang.Math#atan()

The following examples show how to use java.lang.Math#atan() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: ArcTangent.java    From Llunatic with GNU General Public License v3.0 5 votes vote down vote up
public Object atan(Object param)
	throws ParseException
{
	if (param instanceof Complex)
	{
		return ((Complex)param).atan();
	}
	else if (param instanceof Number)
	{
		return new Double(Math.atan(((Number)param).doubleValue()));
	}

	throw new ParseException("Invalid parameter type");
}
 
Example 2
Source File: Vector.java    From GiantTrees with GNU General Public License v3.0 5 votes vote down vote up
/**
 * Returns the angle of a 2-dimensional vector (u,v) with the u-axis 
 *
 * @param v v-coordinate of the vector
 * @param u u-coordinate of the vector
 * @return a value from (-180..180)
 */
static public double atan2(double v, double u)  {
	if (u==0) {
		if (v>=0) return 90;
		else return -90;
	} 
	if (u>0)  return Math.atan(v/u)*180/Math.PI;
	if (v>=0) return 180 + Math.atan(v/u)*180/Math.PI;
	return Math.atan(v/u)*180/Math.PI-180;
}
 
Example 3
Source File: AG.java    From KEEL with GNU General Public License v3.0 4 votes vote down vote up
/** Inicialization of the population */
public void Initialize () {
	int i, j, temp, mitad_Pob;
	double Valor_Inicial_Sigma = 0.001;

	if (prob_mutacion < 1.0)
		Mu_next = ceil (Math.log(Randomize.Rand()) / Math.log(1.0 - prob_mutacion));
	else  Mu_next = 1;

	Trials=0;

	/* Los conjuntos difusos de los antecedentes de las reglas constituyen la
	primera parte del primer cromosoma de la poblacion inicial.
	Se inicializa C1 en el primer cromosoma. */
	New[0].n_e = 1;
	primer_gen_C2 = 0;

	for (i=0; i<base_reglas.n_reglas; i++) {
		for (j=0; j<base_reglas.tabla.n_var_estado; j++) {
			New[0].Gene[primer_gen_C2] = base_reglas.BaseReglas[i].Ant[j].x0;
			New[0].Gene[primer_gen_C2+1] = base_reglas.BaseReglas[i].Ant[j].x1;
			New[0].Gene[primer_gen_C2+2] = base_reglas.BaseReglas[i].Ant[j].x3;
			primer_gen_C2 += 3;
		}
	}

	/* Se establecen los intervalos en los que varia cada gen de la primera
	parte en la primera generacion */
	for (i=0; i<primer_gen_C2; i+=3) {
		intervalos[i].min = New[0].Gene[i] - (New[0].Gene[i+1]-New[0].Gene[i])/2.0;
		intervalos[i].max = New[0].Gene[i] + (New[0].Gene[i+1]-New[0].Gene[i])/2.0;

		intervalos[i+1].min = New[0].Gene[i+1] - (New[0].Gene[i+1]-New[0].Gene[i])/2.0;
		intervalos[i+1].max = New[0].Gene[i+1] + (New[0].Gene[i+2]-New[0].Gene[i+1])/2.0;

		intervalos[i+2].min = New[0].Gene[i+2] - (New[0].Gene[i+2]-New[0].Gene[i+1])/2.0;
		intervalos[i+2].max = New[0].Gene[i+2] + (New[0].Gene[i+2]-New[0].Gene[i+1])/2.0;
	}


	/* Se inicializa la segunda parte del primer cromosoma con los parametros
	de los consecuentes de las reglas de la BC inicial, junto con los inter-
	valos correspondientes */
	for (i=0; i<base_reglas.n_reglas; i++) {
		for (j=0; j<base_reglas.tabla.n_variables; j++) {
			temp = primer_gen_C2 + i * (base_reglas.tabla.n_variables) + j;
			New[0].Gene[temp] = Math.atan (base_reglas.BaseReglas[i].Cons[j]);
			intervalos[temp].min = -(Math.PI/2) + 1E-10;
			intervalos[temp].max = (Math.PI/2) - 1E-10;
		}
	}

	/* Se genera la segunda mitad de la poblacion inicial generando aleatoriamen-
	te C1 y manteniendo C2 */
	mitad_Pob = ceil(long_poblacion/2);
	for (i=1; i<mitad_Pob; i++) {
		for (j=0; j<primer_gen_C2; j++)
			New[i].Gene[j] = Randomize.Randdouble(intervalos[j].min, intervalos[j].max);

		for (j=primer_gen_C2; j<n_genes; j++)
			New[i].Gene[j] = New[0].Gene[j];

		New[i].n_e = 1;
	}


	/* Se genera el resto de la poblacion inicial generando aleatoriamente C1
	a partir de los intervalos anteriores y mutando C2 */
	for (i=mitad_Pob; i<long_poblacion; i++) {
		for (j=0; j<primer_gen_C2; j++)
			New[i].Gene[j] = Randomize.Randdouble(intervalos[j].min,intervalos[j].max);

		for (j=primer_gen_C2; j<n_genes; j++)
		/* Comprobamos que no se salgan del intervalo permitido [-PI/2,PI/2] */
			do
				New[i].Gene[j] = New[0].Gene[j] + ValorNormal (Valor_Inicial_Sigma);
			while (New[i].Gene[j]<=-(Math.PI/2) || New[i].Gene[j]>=(Math.PI/2));

		New[i].n_e=1;
	}
}
 
Example 4
Source File: Est_evol.java    From KEEL with GNU General Public License v3.0 4 votes vote down vote up
/** Generates the initial population of fathers */
public void InicializaPadres () {
	int i, j, y, Mu_primer_grupo, pos_ep, total_mayor;
	double y_med, y_min, y_max, h_max, h_exigido, x;
	double imagen;

	/* we calculate the average, maximum and minimum high, and the matching with which a example is considerated in the initial population */
	y_med = y_min = y_max = tabla.datos[indices_ep[0]].ejemplo[tabla.n_var_estado];
	h_max = tabla.datos[indices_ep[0]].nivel_cubrimiento;

	for (i=1; i<fun_adap.n_ejemplos_positivos; i++) {
		if (tabla.datos[indices_ep[i]].ejemplo[tabla.n_var_estado] > y_max)
			y_max = tabla.datos[indices_ep[i]].ejemplo[tabla.n_var_estado];
		if (tabla.datos[indices_ep[i]].ejemplo[tabla.n_var_estado] < y_min)
			y_min = tabla.datos[indices_ep[i]].ejemplo[tabla.n_var_estado];
		
		y_med += tabla.datos[indices_ep[i]].ejemplo[tabla.n_var_estado];
		if (tabla.datos[indices_ep[i]].nivel_cubrimiento > h_max)
			h_max = tabla.datos[indices_ep[i]].nivel_cubrimiento;
	}

	y_med /= fun_adap.n_ejemplos_positivos;
	h_exigido = porcentaje_h * h_max;

	/* Inicialization of a individual with 'b' value same as the average high and with the 'a' values to 0 */
	for (j=0; j<tabla.n_var_estado; j++)  Padres[0].Gene[j] = 0;
	Padres[0].Gene[tabla.n_var_estado] = Math.atan(y_med);

	/* Inicialization of the porcentaje_Mu * Mu individuals with 'b' value equal to a random value in the rank [y_min,y_max] and with the 'a' values to 0 */
	Mu_primer_grupo = (int) (porcentaje_Mu * Mu + 1);
	for (i=1; i<Mu_primer_grupo; i++) {
		for (j=0; j<tabla.n_var_estado; j++)  Padres[i].Gene[j] = 0;
		Padres[i].Gene[tabla.n_var_estado] = Math.atan(Randomize.Randdouble (y_min,y_max));
	}

	/* Inicialization of the remaining individuals with the random 'a' values and with a the 'b' value for any to example is in the plane */
	for (i=Mu_primer_grupo; i<Mu; i++) {
		for (j=0; j<tabla.n_var_estado; j++) {
			if (Randomize.Rand ()<.5)  y = -1;
			else  y=1;

			x = Randomize.Rand ();
			Padres[i].Gene[j] = f(x,y);
		}
		
		/* we select randomly a example with a matching more high than "h_exigido" */
		for (total_mayor=pos_ep=0; pos_ep<fun_adap.n_ejemplos_positivos; pos_ep++)
			if (tabla.datos[indices_ep[pos_ep]].nivel_cubrimiento >= h_exigido)
				ind_mayor[total_mayor++] = pos_ep;
		
		if (total_mayor==0) {
			System.out.println("Error: The matching, with which a example is considerated in the initial population, isn't surmounted");
		}
		
		pos_ep = ind_mayor[Randomize.RandintClosed (0,total_mayor-1)];
		for (imagen=0.0,j=0; j<tabla.n_var_estado; j++)
			imagen += Math.tan (Padres[i].Gene[j]) * tabla.datos[indices_ep[pos_ep]].ejemplo[j];
		
		Padres[i].Gene[tabla.n_var_estado] = Math.atan(tabla.datos[indices_ep[pos_ep]].ejemplo[tabla.n_var_estado]-imagen);
	}


	/* Inicialization of the vector of tipical desviations */
	for (i=0; i<Mu; i++)
		for (j=tabla.n_variables; j<tabla.n_variables+n_sigma; j++)  Padres[i].Gene[j] = Valor_Inicial_Sigma;

	/* Inicialization of the vector of angles: arcotangente of 1.0 */
	for (i=0; i<Mu; i++)
		for (j=tabla.n_variables + n_sigma; j<tabla.n_variables+n_sigma+n_alfa; j++)  
			Padres[i].Gene[j] = Math.atan (1.0);
}
 
Example 5
Source File: Est_evol_M2TSK.java    From KEEL with GNU General Public License v3.0 4 votes vote down vote up
/** Generates the initial population of fathers */
public void InicializaPadres () {
	int i, j, y, Mu_primer_grupo, pos_ep, total_mayor;
	double y_med, y_min, y_max, h_max, h_exigido, x;
	double imagen;

	/* we calculate the average, maximum and minimum high, and the matching with which a example is considerated in the initial population */
	y_med = y_min = y_max = tabla.datos[fun_adap.indices_ep[0]].ejemplo[tabla.n_var_estado];
	h_max = tabla.datos[fun_adap.indices_ep[0]].nivel_cubrimiento;


	for (i=1; i<fun_adap.n_ejemplos_positivos; i++) {
		if (tabla.datos[fun_adap.indices_ep[i]].ejemplo[tabla.n_var_estado] > y_max)  y_max = tabla.datos[fun_adap.indices_ep[i]].ejemplo[tabla.n_var_estado];
		if (tabla.datos[fun_adap.indices_ep[i]].ejemplo[tabla.n_var_estado] < y_min)  y_min = tabla.datos[fun_adap.indices_ep[i]].ejemplo[tabla.n_var_estado];

		y_med += tabla.datos[fun_adap.indices_ep[i]].ejemplo[tabla.n_var_estado];
		if (tabla.datos[fun_adap.indices_ep[i]].nivel_cubrimiento > h_max)  h_max = tabla.datos[fun_adap.indices_ep[i]].nivel_cubrimiento;
	    
	}

	y_med /= fun_adap.n_ejemplos_positivos;
	h_exigido = porcentaje_h * h_max;



	/* Inicialization of a individual with 'b' value same as the average high and with the 'a' values to 0 */
	for (j=0; j<tabla.n_var_estado; j++)  Padres[0].Gene[j] = 0;
	Padres[0].Gene[tabla.n_var_estado] = Math.atan(y_med);

	/* Inicialization of the porcentaje_Mu * Mu individuals with 'b' value equal to a random value in the rank [y_min,y_max] and with the 'a' values to 0 */
	Mu_primer_grupo = (int) (porcentaje_Mu * Mu + 1);
	for (i=1; i<=Mu_primer_grupo; i++) {
		for (j=0; j<tabla.n_var_estado; j++)  Padres[i].Gene[j] = 0;
		Padres[i].Gene[tabla.n_var_estado] = Math.atan(Randomize.Randdouble (y_min,y_max));
	}

	/* Inicialization of the remaining individuals with the random 'a' values and with a the 'b' value for any to example is in the plane */
	for (i=Mu_primer_grupo+1; i<Mu; i++) {
		for (j=0; j<tabla.n_var_estado; j++) {
			if (Randomize.Rand () < 0.5)  y = -1;
			else  y=1;

			x = Randomize.Rand ();
			Padres[i].Gene[j] = f(x,y);
		}

		/* we select randomly a example with a matching more high than "h_exigido" */
		for (total_mayor=pos_ep=0; pos_ep<fun_adap.n_ejemplos_positivos; pos_ep++)
			if (tabla.datos[fun_adap.indices_ep[pos_ep]].nivel_cubrimiento >= h_exigido)  ind_mayor[total_mayor++] = pos_ep;

		if (total_mayor==0) {
			System.out.println("Error: The matching, with which a example is considerated in the initial population, isn't surmounted");
		}

		pos_ep = ind_mayor[Randomize.RandintClosed (0,total_mayor-1)];
		for (imagen=0.0,j=0; j<tabla.n_var_estado; j++)
			imagen += Math.tan (Padres[i].Gene[j]) * tabla.datos[fun_adap.indices_ep[pos_ep]].ejemplo[j];

		Padres[i].Gene[tabla.n_var_estado] = Math.atan(tabla.datos[fun_adap.indices_ep[pos_ep]].ejemplo[tabla.n_var_estado]-imagen);
	}


	/* Inicialization of the vector of tipical desviations */
	for (i=0; i<Mu; i++)
		for (j=tabla.n_variables; j<tabla.n_variables+n_sigma; j++)  Padres[i].Gene[j] = Valor_Inicial_Sigma;

	/* Inicialization of the vector of angles: arcotangente of 1.0 */
	for (i=0; i<Mu; i++)
		for (j=tabla.n_variables + n_sigma; j<tabla.n_variables+n_sigma+n_alfa; j++)
			Padres[i].Gene[j] = Math.atan (1.0);
}
 
Example 6
Source File: AG_Tun.java    From KEEL with GNU General Public License v3.0 4 votes vote down vote up
/** Inicialization of the population */
public void Initialize() {
  int i, j, temp, mitad_Pob;
  double Valor_Inicial_Sigma = 0.001;


  if (prob_mutacion < 1.0) {
    Mu_next = (int) Math.ceil(Math.log(Randomize.Rand()) / Math.log(1.0 - prob_mutacion));
  }
  else {
    Mu_next = 1;
  }

  Trials = 0;

  /* Los conjuntos difusos de los antecedentes de las reglas constituyen la
     primera parte del primer cromosoma de la poblacion inicial.
     Se inicializa C1 en el primer cromosoma. */
  New[0].n_e = 1;
  primer_gen_C2 = 0;

  for (i = 0; i < base_reglas.n_reglas; i++) {
    for (j = 0; j < tabla.n_var_estado; j++) {
      New[0].Gene[primer_gen_C2] = base_reglas.BaseReglas[i].Ant[j].x0;
      New[0].Gene[primer_gen_C2 + 1] = base_reglas.BaseReglas[i].Ant[j].x1;
      New[0].Gene[primer_gen_C2 + 2] = base_reglas.BaseReglas[i].Ant[j].x3;
      primer_gen_C2 += 3;
    }
  }

  /* Se establecen los intervalos en los que varia cada gen de la primera
     parte en la primera generacion */
  for (i = 0; i < primer_gen_C2; i += 3) {
    intervalos[i].min = New[0].Gene[i] - (New[0].Gene[i + 1] - New[0].Gene[i]) / 2.0;
    intervalos[i].max = New[0].Gene[i] + (New[0].Gene[i + 1] - New[0].Gene[i]) / 2.0;

    intervalos[i + 1].min = New[0].Gene[i + 1] - (New[0].Gene[i + 1] - New[0].Gene[i]) / 2.0;
    intervalos[i + 1].max = New[0].Gene[i + 1] + (New[0].Gene[i + 2] - New[0].Gene[i + 1]) / 2.0;

    intervalos[i + 2].min = New[0].Gene[i + 2] - (New[0].Gene[i + 2] - New[0].Gene[i + 1]) / 2.0;
    intervalos[i + 2].max = New[0].Gene[i + 2] + (New[0].Gene[i + 2] - New[0].Gene[i + 1]) / 2.0;
  }

  /* Se inicializa la segunda parte del primer cromosoma con los parametros
     de los consecuentes de las reglas de la BC inicial, junto con los inter-
     valos correspondientes */
  for (i = 0; i < base_reglas.n_reglas; i++) {
    for (j = 0; j < tabla.n_variables; j++) {
      temp = primer_gen_C2 + i * (tabla.n_variables) + j;
      New[0].Gene[temp] = Math.atan(base_reglas.BaseReglas[i].Cons[j]);
      intervalos[temp].min = (-1.0 * PI / 2.0) + 1E-10;
      intervalos[temp].max = (PI / 2.0) - 1E-10;
    }
  }

  /* Se genera la segunda mitad de la poblacion inicial generando aleatoriamen-
     te C1 y manteniendo C2 */
  mitad_Pob = (int) Math.ceil(long_poblacion / 2.0);
  for (i = 1; i < mitad_Pob; i++) {
    for (j = 0; j < primer_gen_C2; j++) {
      New[i].Gene[j] = intervalos[j].min + Randomize.Randdouble(intervalos[j].min, intervalos[j].max);
    }

    for (j = primer_gen_C2; j < n_genes; j++) {
      New[i].Gene[j] = New[0].Gene[j];
    }

    New[i].n_e = 1;
  }

  /* Se genera el resto de la poblacion inicial generando aleatoriamente C1
     a partir de los intervalos anteriores y mutando C2 */
  for (i = mitad_Pob; i < long_poblacion; i++) {
    for (j = 0; j < primer_gen_C2; j++) {
      New[i].Gene[j] = intervalos[j].min + Randomize.Randdouble(intervalos[j].min, intervalos[j].max);
    }

    for (j = primer_gen_C2; j < n_genes; j++) {
      /* Comprobamos que no se salgan del intervalo permitido [-PI/2,PI/2] */
      do {
        New[i].Gene[j] = New[0].Gene[j] + ValorNormal(Valor_Inicial_Sigma);
      }
      while (New[i].Gene[j] <= (-1.0 * PI / 2.0) || New[i].Gene[j] >= (PI / 2.0));
    }

    New[i].n_e = 1;
  }
}
 
Example 7
Source File: Est_mu_landa.java    From KEEL with GNU General Public License v3.0 4 votes vote down vote up
/** Generates the initial population of fathers */
public void InicializaPadres() {
  int i, j, y, Mu_primer_grupo, pos_ep, total_mayor;
  double y_med, y_min, y_max, h_max, h_exigido, x;
  double imagen;

  /* we calculate the average, maximum and minimum high, and the matching with which a example is considerated in the initial population */
  y_med = y_min = y_max = tabla.datos[fun_adap.indices_ep[0]].ejemplo[tabla.
      n_var_estado];
  h_max = tabla.datos[fun_adap.indices_ep[0]].nivel_cubrimiento;

  for (i = 1; i < fun_adap.n_ejemplos_positivos; i++) {
    if (tabla.datos[fun_adap.indices_ep[i]].ejemplo[tabla.n_var_estado] > y_max) {
      y_max = tabla.datos[fun_adap.indices_ep[i]].ejemplo[tabla.n_var_estado];
    }
    if (tabla.datos[fun_adap.indices_ep[i]].ejemplo[tabla.n_var_estado] < y_min) {
      y_min = tabla.datos[fun_adap.indices_ep[i]].ejemplo[tabla.n_var_estado];
    }

    y_med += tabla.datos[fun_adap.indices_ep[i]].ejemplo[tabla.n_var_estado];
    if (tabla.datos[fun_adap.indices_ep[i]].nivel_cubrimiento > h_max) {
      h_max = tabla.datos[fun_adap.indices_ep[i]].nivel_cubrimiento;
    }
  }

  if (fun_adap.n_ejemplos_positivos > 0) {
    y_med /= fun_adap.n_ejemplos_positivos;
  }
  else {
    y_med = Double.MAX_VALUE;
  }
  h_exigido = porcentaje_h * h_max;

  /* Inicialization of a individual with 'b' value same as the average high and with the 'a' values to 0 */
  for (j = 0; j < tabla.n_var_estado; j++) {
    Padres[0].Gene[j] = 0;
  }
  Padres[0].Gene[tabla.n_var_estado] = Math.atan(y_med);

  /* Inicialization of the porcentaje_Mu * Mu individuals with 'b' value equal to a random value in the rank [y_min,y_max] and with the 'a' values to 0 */
  Mu_primer_grupo = (int) (porcentaje_Mu * Mu + 1);
  for (i = 1; i <= Mu_primer_grupo; i++) {
    for (j = 0; j < tabla.n_var_estado; j++) {
      Padres[i].Gene[j] = 0;
    }
    Padres[i].Gene[tabla.n_var_estado] = Math.atan(Randomize.Randdouble(y_min,
        y_max));
  }

  /* Inicialization of the remaining individuals with the random 'a' values and with a the 'b' value for any to example is in the plane */
  for (i = Mu_primer_grupo + 1; i < Mu; i++) {
    for (j = 0; j < tabla.n_var_estado; j++) {
      if (Randomize.Rand() < 0.5) {
        y = -1;
      }
      else {
        y = 1;
      }

      x = Randomize.Rand();
      Padres[i].Gene[j] = f(x, y);
    }

    /* we select randomly a example with a matching more high than "h_exigido" */
    for (total_mayor = pos_ep = 0; pos_ep < fun_adap.n_ejemplos_positivos;
         pos_ep++) {
      if (tabla.datos[fun_adap.indices_ep[pos_ep]].nivel_cubrimiento >= h_exigido) {
        ind_mayor[total_mayor++] = pos_ep;
      }
    }

    if (total_mayor == 0) {
      System.out.println("Error: The matching, with which a example is considerated in the initial population, isn't surmounted");
    }

    pos_ep = ind_mayor[Randomize.RandintClosed(0, total_mayor - 1)];
    for (imagen = 0.0, j = 0; j < tabla.n_var_estado; j++) {
      imagen += Math.tan(Padres[i].Gene[j]) *
          tabla.datos[fun_adap.indices_ep[pos_ep]].ejemplo[j];
    }

    Padres[i].Gene[tabla.n_var_estado] = Math.atan(tabla.datos[fun_adap.indices_ep[
        pos_ep]].ejemplo[tabla.n_var_estado] - imagen);
  }

  /* Inicialization of the vector of tipical desviations */
  for (i = 0; i < Mu; i++) {
    for (j = tabla.n_variables; j < tabla.n_variables + n_sigma; j++) {
      Padres[i].Gene[j] = Valor_Inicial_Sigma;
    }
  }

  /* Inicialization of the vector of angles: arcotangente of 1.0 */
  for (i = 0; i < Mu; i++) {
    for (j = tabla.n_variables + n_sigma;
         j < tabla.n_variables + n_sigma + n_alfa; j++) {
      Padres[i].Gene[j] = Math.atan(1.0);
    }
  }
}
 
Example 8
Source File: SystemFunctions.java    From incubator-retired-mrql with Apache License 2.0 votes vote down vote up
public static MR_double atan ( MR_double x ) { return new MR_double(Math.atan(x.get())); }