Instanciando clases, solapando objetos

plok27
11 de Agosto del 2003
Hola, tengo el siguiente problema:


XClassifier cl1P=selectXClassifierRW(fitSum);
XClassifier cl2P=selectXClassifierRW(fitSum);

XClassifier cl1=new XClassifier(cl1P);
XClassifier cl2=new XClassifier(cl2P);

cl1.applyMutation(state, numberOfActions);
System.out.println ("DESPUES DE MUTAR EL PRIMERO");
System.out.println ("Clasificador1, cl1");
cl1.printXClassifier();
System.out.println ("Clasificador1, cl2");
cl2.printXClassifier();

cl2.applyMutation(state, numberOfActions);
System.out.println ("DESPRES DE FER APPLYMUTATION DEL SEGON!!");
System.out.println ("Clasificador1, cl1");
cl1.printXClassifier();
System.out.println ("Clasificador2, cl2");
cl2.printXClassifier();


La funci贸n selectXClassifierRW (int) me devuelve un objeto de la clase XClassifier. Cuando ejecuto este c贸digo, resulta que el m茅todo cl1.applyMutation no s贸lo me modifica los atributos de cl1, sin贸 que, la mayor铆a de las veces, tambi茅n me modifica los atributos de cl2, y despu茅s de ejecutar la misma funci贸n sobre el objeto cl2, sucede lo mismo, modifica sus atributos y algunos (no siempre todos) los de cl1.

He probado tambi茅n con

XClassifier cl1P=new XClassifier (selectXClassifierRW(fitSum));
XClassifier cl2P=new XClassifier (selectXClassifierRW(fitSum));

en lugar de las dos primeras l铆neas de c贸digo puestas antes, pero los resultados son los mismos. El constructor de la clase XClassifier es el siguiente:

public XClassifier(XClassifier clOld)
{

// condition=new Vector (0);
// condition=(Vector) clOld.condition.clone();

condition= new Vector (clOld.condition);

action=clOld.action;
this.prediction=clOld.prediction;
this.predictionError=clOld.predictionError;
this.fitness=clOld.fitness/clOld.numerosity;
this.numerosity=1;
this.experience=0;
this.actionSetSize=clOld.actionSetSize;
this.timeStamp=clOld.timeStamp;
}

Las l铆neas que aparecen comentadas han sido tambi茅n probadas, con unos resultados parecidos.

Si alguien encuentra una explicaci贸n l贸gica, o sabe cual es el problema y la soluci贸n, le agradecer铆a que me la explicara, porque no encuentro el modo de resolverlo.

Muchas gracias.

plok27
11 de Agosto del 2003
La funci贸n applyMutation solo modifica el vector Condition del XClassifier; y los dem谩s campos de XClassifier son de tipo int y doubles.