package keel.Algorithms.Fuzzy_Rule_Learning.Genetic.ClassifierSLAVE2;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
public class variable_t implements Cloneable {
/**
* <p>
* It contains the methods for handling the information related to the variables
* </p>
*/
String nombre;
domain_t[] dominio;
boolean activa;
boolean antecedente;
variable_t (){
dominio = null;
nombre = "Sin asignar";
activa = false;
antecedente = true;
}
variable_t (variable_t x){
nombre = x.nombre;
activa = x.activa;
antecedente = x.antecedente;
if (x.dominio == null)
dominio = null;
else{
dominio = new domain_t[1];
dominio = x.dominio;
}
}
public Object clone(){
variable_t obj = null;
try{
obj = (variable_t) super.clone();
}catch (CloneNotSupportedException ex){
System.out.println ("\nError.\n");
}
obj.dominio = (domain_t[]) obj.dominio.clone();
for (int i=0; i<obj.dominio.length; i++){
obj.dominio[i] = (domain_t) obj.dominio[i].clone();
}
return obj;
}
public void Assign (int n, double inf, double sup, boolean menosinf, boolean masinf, String name){
nombre = name;
activa = true;
antecedente = true;
dominio = new domain_t[1];
dominio[0].Assign (n, inf, sup, menosinf, masinf);
}
public void Assign (int n, String varname, int status, double inf, double sup, double[] a, double[] b, double[] c, double[] d, String[] name){
nombre = varname;
if (status == -1){
activa = false;
antecedente = true;
}
else{
if (status == 0) {
activa = true;
antecedente = true;
}
else{
activa = true;
antecedente = false;
}
}
dominio = new domain_t[1];
dominio[0] = new domain_t ();
dominio[0].Assign (n, inf, sup, a, b, c, d, name);
}
/**
* <p>
* Calculates the adaptation degree of "x" with the variable
* </p>
* @param x double A value
* @return double The adaptation degree
*/
public double Adaptation (double x){
if (dominio == null){
System.out.println ("No domain associated to the variable..\n");
System.exit(1);
}
return dominio[0].Adaptation (x);
}
public double Adaptation (double x, int etiqueta){
if (dominio == null){
System.out.println ("No domain associated to the variable..\n");
System.exit(1);
}
return dominio[0].Adaptation (x,etiqueta);
}
public double Adaptation (double x, String etiquetas){
if (dominio == null){
System.out.println ("No domain associated to the variable..\n");
System.exit(1);
}
return dominio[0].Adaptation (x,etiquetas);
}
public void Paint (){
if (dominio == null){
System.out.println ("No domain associated to the variable..\n");
System.exit(1);
}
System.out.println ("Variable: "+nombre+"\n");
System.out.println ("========================\n");
dominio[0].Paint ();
}
public void PrintVar (){
System.out.println (nombre);
}
public String SPrintVar (){
return nombre;
}
public void PrintDomain (int value){
dominio[0].Print (value);
}
public String SPrintDomain (int value){
return dominio[0].SPrint (value);
}
public int SizeDomain (){
return dominio[0].Size ();
}
public boolean Active (){
return activa;
}
public boolean Antecedent (){
return antecedente;
}
public int N_labels (){
return dominio[0].N_labels ();
}
public fuzzy_t FuzzyLabel (int i){
fuzzy_t aux;
aux = dominio[0].FuzzyLabel (i);
return aux;
}
public double CenterLabel (int i){
return dominio[0].CenterLabel (i);
}
public boolean IsDiscrete (){
return dominio[0].IsDiscrete ();
}
public boolean IsInterval (){
return dominio[0].IsInterval ();
}
public boolean IsFuzzy (){
return dominio[0].IsInterval ();
}
public double Area (int l){
return dominio[0].Area (l);
}
public domain_t Domain (){
domain_t aux;
aux = dominio[0];
return aux;
}
public variable_t Variable (){
variable_t aux;
aux = (variable_t) this.clone();
return aux;
}
public double Inf_Range (){
return dominio[0].Inf_Range ();
}
public double Sup_Range (){
return dominio[0].Sup_Range ();
}
}