Newsgroup: it.comp.java
Titolo: Algoritmi genetici e Serializable: secondo tentativo con più info

Scusate,
provo a rigirare anche qui, questo problema mi sta bloccando da 2 giorni 
e non riesco a vedere soluzione...
Grazie,
/L.
hi all,
i'm trying to implement a genetic classifier using WEKA libraries, but i
have a problem.
In order to rank my population, i first created an object 'Entity' like
this:
package core;
import weka.classifiers.Classifier ;
import weka.core.Instance;
import weka.core.Instances;
public class Entity extends Classifier implements Comparable{
     public GeneticRules genRules;
     private double fitValue;
     public Entity(GeneticRules rules) {
         genRules = rules;
     }
}
with all the abstract methods overrided, and then i implemented (in
another class) this code to perform the evaluation:
for(int i=0; i<actualGeneration.size();i++)
         {
             try {
             newEnt = (Entity) actualGeneration.get(i);
             evaluationSet.crossValidateModel(newEnt, trainingInstances,
10, new Random());
             fitnessValue = evaluationSet.pctCorrect ();
             newEnt.setFitness(fitnessValue);
             if (fitnessValue > bestValue)
                 bestValue = fitnessValue;
             if (fitnessValue > highestFitness)
             {
                 highestFitness = fitnessValue;
                 bestEntity = newEnt;
             }
             }
             catch(Exception e)
             {
                 e.printStackTrace ();
             }
         }
         Collections.sort(actualGeneration);
     }
Even if i don't have problems in the compiling, i get an high number of
this mistakes after running:
java.io.NotSerializableException: core.GeneticRules
         at
java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1075)
         at
java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1369)
         at
java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1341)
         at
java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1284)
         at java.io.ObjectOutputStream.writeObject0
(ObjectOutputStream.java:1073)
         at
java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:291)
         at weka.core.SerializedObject.<init>(Unknown Source)
         at weka.core.SerializedObject .<init>(Unknown Source)
         at weka.classifiers.Classifier.makeCopy(Unknown Source)
         at weka.classifiers.Evaluation.crossValidateModel(Unknown
Source) <<<<<<-----------------------
         at core.GeneticSet.rankPopulation(GeneticSet.java:94)
         at core.GeneticSet.fireGeneticRules(GeneticSet.java:80)
         at core.GeneticSet.<init>(GeneticSet.java:37)
         at Main.<init>( Main.java:21)
         at Main.main(Main.java:52)
Any suggestion?
Thanks,
/L.

 /L.
[...]
A dire il vero non mi pare che il codice cha hai postato abbia a che 
vedere con le eccezioni che ti ritrovi. Sembra chiaro però che ci sono 
dei problemi con la classe core.GeneticRules che per qualche motivo 
viene cercato di serializzare dentro il costruttore di 
weka.core.SerializedObject, che immagino faccia parte della libreria che 
stai utilizzando.
Prova quindi a verificare che la tua GeneticRules sia serializzabile.
pole
-- 
ammentos - a lightweight persistence framework for JDK5
http://ammentos.biobytes.it
Flash tutorial: 
http://ammentos.biobytes.it/quickstart/quickstart.htm

 pole
Ciao, purtroppo non sono riuscito a venirne a capo, infatti benchè 
entrambe le classe coinvolte implementassero Serializable, il problema 
persisteva (in preda a crisi di nervi ho pure implementato tutte le 
classi come Serial senza ottenere naturalmente soluzione :S)
Ho aggirato il problema cmq, anche se stravolgendo completamente molto 
del lavoro fatto, ma pazienza, ora ho una soluzione totalmente diversa, 
molto meno elegante, decisamete meno efficace in termini di prestazioni, 
però funzionante. E considerato il target del progetto appena concluso 
(esame universitario), credo possa andare comunque :)
A presto,
da stasera mi devo mettere a programmare una Web application (altro 
esame :P) :)
/L.

 però funzionante. 
Peccato... :) Potevi anche utilizzare Externalizable nel caso proprio 
con Serializable non ci arrivassi.
