Salut, j ai pas mal de soucis avec des exports que j ai cree. Certains fonctionnent sans soucis mais pour d autres - on dirait que les sumOverDim ne marchent pas en pj grossValueOfLandingsPerMet - j ai des NaN quand je divise deux doubles ex en pj VPUEPerMet merci d avance de votre aide -- Sigrid LEHUTA ~ ><> ~ Doctorante Département Ecologie et Modèles pour l'Halieutique IFREMER, rue de l'ile d'Yeu BP 21105 44311 Nantes Cedex 03 Tél : +33 (0)2 40 37 41 23 (interne : 8123) package exports; import static org.nuiton.i18n.I18n._; import java.io.Writer; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.math.matrix.MatrixIterator; import org.nuiton.math.matrix.MatrixND; import scripts.ResultName; import fr.ifremer.isisfish.datastore.SimulationStorage; import fr.ifremer.isisfish.entities.Strategy; import fr.ifremer.isisfish.entities.Metier; import fr.ifremer.isisfish.entities.Population; import fr.ifremer.isisfish.entities.PopulationGroup; import fr.ifremer.isisfish.entities.Zone; import fr.ifremer.isisfish.export.Export; import fr.ifremer.isisfish.types.Date; /** * CapturesNombre.java * * Created: 23 novembre 2006 * * @author anonymous <anonymous@labs.libre-entreprise.org> * @version $Revision: 1.4 $ * * Last update: $Date: 2007-05-24 09:30:07 $ by : $Author: bpoussin $ */ public class GrossValueOfLandingsPerMet implements Export { /** to use log facility, just put in your code: log.info("..."); */ static private Log log = LogFactory.getLog(GrossValueOfLandingsPerMet.class); protected String[] necessaryResult = { ResultName.MATRIX_GROSS_VALUE_OF_LANDINGS_PER_STRATEGY_MET }; public String[] getNecessaryResult() { return this.necessaryResult; } public String getExportFilename() { return "GrossValuePerMet"; } public String getExtensionFilename() { return ".csv"; } public String getDescription() { return _("Export les captures en nombre de la simulation. tableau pop;metier;id;zone;nombre"); } public void export(SimulationStorage simulation, Writer out) throws Exception { Date lastDate = simulation.getResultStorage().getLastDate(); for (Date date = new Date(0); !date.after(lastDate); date = date.next()) { MatrixND mat = simulation.getResultStorage().getMatrix(date, ResultName.MATRIX_GROSS_VALUE_OF_LANDINGS_PER_STRATEGY_MET); // System.out.println("mat gross val "+mat); if (mat != null) { // can be null if simulation is stopped before last year simulation MatrixND matcopy = mat.copy() matcopy = matcopy.sumOverDim(0); for (MatrixIterator i = matcopy.iterator(); i.hasNext();) { i.next(); Object[] sems = i.getSemanticsCoordinates(); Metier metier = (Metier) sems[1]; double val = i.getValue(); int planNum= 0; if(simulation.getParameter().getUseAnalysePlan()){ planNum = simulation.getParameter().getAnalysePlanNumber(); } out.write(planNum+";"+metier.getName() + ";"+ date.getDate() + ";" + val + "\n"); } } } } } package exports; import static org.nuiton.i18n.I18n._; import java.io.Writer; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.math.matrix.MatrixIterator; import org.nuiton.math.matrix.MatrixND; import scripts.ResultName; import fr.ifremer.isisfish.datastore.SimulationStorage; import fr.ifremer.isisfish.entities.Strategy; import fr.ifremer.isisfish.entities.Metier; import fr.ifremer.isisfish.entities.Population; import fr.ifremer.isisfish.entities.PopulationGroup; import fr.ifremer.isisfish.entities.Zone; import fr.ifremer.isisfish.export.Export; import fr.ifremer.isisfish.types.Date; /** * CapturesNombre.java * * Created: 23 novembre 2006 * * @author anonymous <anonymous@labs.libre-entreprise.org> * @version $Revision: 1.4 $ * * Last update: $Date: 2007-05-24 09:30:07 $ by : $Author: bpoussin $ */ public class VPUEPerMet implements Export { /** to use log facility, just put in your code: log.info("..."); */ static private Log log = LogFactory.getLog(VPUEPerMet.class); protected String[] necessaryResult = { ResultName.MATRIX_GROSS_VALUE_OF_LANDINGS_PER_STRATEGY_MET, ResultName.MATRIX_EFFORT_NOMINAL_PER_STRATEGY_MET }; public String[] getNecessaryResult() { return this.necessaryResult; } public String getExportFilename() { return "VPUEPerMet"; } public String getExtensionFilename() { return ".csv"; } public String getDescription() { return _("Export les captures en nombre de la simulation. tableau pop;metier;id;zone;nombre"); } public void export(SimulationStorage simulation, Writer out) throws Exception { Date lastDate = simulation.getResultStorage().getLastDate(); for (Date date = new Date(0); !date.after(lastDate); date = date .next()) { MatrixND mat = simulation.getResultStorage().getMatrix(date, ResultName.MATRIX_GROSS_VALUE_OF_LANDINGS_PER_STRATEGY_MET); MatrixND eff = simulation.getResultStorage().getMatrix(date, ResultName.MATRIX_EFFORT_NOMINAL_PER_STRATEGY_MET); // System.out.println("mat gross val "+mat); if (mat != null) { // can be null if simulation is stopped before last year simulation MatrixND matcopy = mat.copy() matcopy = matcopy.sumOverDim(0); MatrixND effcopy = eff.copy(); effcopy = effcopy.sumOverDim(0); for (MatrixIterator i = mat.iterator(); i.hasNext();) { i.next(); Object[] sems = i.getSemanticsCoordinates(); Metier metier = (Metier) sems[1]; double effort = effcopy.getValue(0,metier); double val = i.getValue(); int planNum= 0; if(simulation.getParameter().getUseAnalysePlan()){ planNum = simulation.getParameter().getAnalysePlanNumber(); } if(effort !=0){ out.write(planNum+";"+metier.getName() + ";"+ date.getDate() + ";" + Double.toString(val/effort) + "\n");} } } } } }
Le 25/06/2010 09:37, Sigrid LEHUTA a écrit :
Salut, Salut,
j ai pas mal de soucis avec des exports que j ai cree. Certains fonctionnent sans soucis mais pour d autres - on dirait que les sumOverDim ne marchent pas en pj grossValueOfLandingsPerMet - j ai des NaN quand je divise deux doubles ex en pj VPUEPerMet
merci d avance de votre aide J'ai testé ces deux exports, il fonctionne très bien.
Par contre, je ne sais pas si les resultats sont ceux attendu et je n'ai pas eu l'erreur NaN (ca doit dépendre de tes paramètres de simulation ou de ta région). -- Éric <chatellier@codelutin.com> Tel: 02 40 50 29 28 http://www.codelutin.com
ok merci je pense que je vois le pb je n ai pas du selectionner les matrices de resultats necessaires : quand on a besoin d une matrice de resultat dans un export elle doit etre selectionnee dans le choix des resultats dans l interface de lancement c est ca ? et la mettre en necessary result ne suffit pas a l ajouter aux resultats calculés ? Sinon j ai lancé une simu toute seule pour tester caparmor et... heu ... ca marche pas... :-( Eric Chatellier a écrit :
Le 25/06/2010 09:37, Sigrid LEHUTA a écrit :
Salut,
Salut,
j ai pas mal de soucis avec des exports que j ai cree. Certains fonctionnent sans soucis mais pour d autres - on dirait que les sumOverDim ne marchent pas en pj grossValueOfLandingsPerMet - j ai des NaN quand je divise deux doubles ex en pj VPUEPerMet
merci d avance de votre aide
J'ai testé ces deux exports, il fonctionne très bien.
Par contre, je ne sais pas si les resultats sont ceux attendu et je n'ai pas eu l'erreur NaN (ca doit dépendre de tes paramètres de simulation ou de ta région).
-- Sigrid LEHUTA ~ ><> ~ Doctorante Département Ecologie et Modèles pour l'Halieutique IFREMER, rue de l'ile d'Yeu BP 21105 44311 Nantes Cedex 03 Tél : +33 (0)2 40 37 41 23 (interne : 8123)
Le 25/06/2010 10:23, Sigrid LEHUTA a écrit :
ok merci je pense que je vois le pb je n ai pas du selectionner les matrices de resultats necessaires : quand on a besoin d une matrice de resultat dans un export elle doit etre selectionnee dans le choix des resultats dans l interface de lancement c est ca ? et la mettre en necessary result ne suffit pas a l ajouter aux resultats calculés ? En fait, ResultName.MATRIX_GROSS_VALUE_OF_LANDINGS_PER_STRATEGY_MET depend de ResultName.MATRIX_CATCH_WEIGHT_PER_STRATEGY_MET_PER_ZONE_POP et ResultName.MATRIX_DISCARDS_WEIGHT_PER_STR_MET_PER_ZONE_POP
Vu qu'il n'y a pas de dépendance entre les résultats (pas encore :-) ), et faut les spécifier également dans les necessaryResult: protected String[] necessaryResult = { ResultName.MATRIX_CATCH_WEIGHT_PER_STRATEGY_MET_PER_ZONE_POP, ResultName.MATRIX_DISCARDS_WEIGHT_PER_STR_MET_PER_ZONE_POP, ResultName.MATRIX_GROSS_VALUE_OF_LANDINGS_PER_STRATEGY_MET};
Sinon j ai lancé une simu toute seule pour tester caparmor et... heu ... ca marche pas... :-(
Crash Java (j'ai contacté les administrateur caparmor, j'attend leurs réponse). -- Éric <chatellier@codelutin.com> Tel: 02 40 50 29 28 http://www.codelutin.com
participants (2)
-
Eric Chatellier -
Sigrid LEHUTA