Tu n'es pas obligée mais c'est plus simple d'autant qu'il y a deja des exemples de scripts avec ce format.
Pour l'instant tu n'as pas de nouvelles courbes de selectivite pour la langoustine. Donc deux choix
tu recopies la courbe de la base les 7 fois; ou tu modifies le script pour que ça colle avec une matrice une colonne.
Je prefererais la premiere solution car ensuite on aura des courbes de selectivite pour la langoustine.
Voici un script à compiler et à tester.
je t'ai mis le fichier matrix + un debut de fichier selectiviteMerlu. ce dernier est à finir de remplir + mettre les valeurs a1, b1 ....
A+
stephanie
camille de la Vega a écrit :Ok. Je ne pensais pas que j'avais besoin de passer par des fichiers .txt obligatoirement.Le 7 juillet 2011 11:01, Stephanie MAHEVAS <Stephanie.Mahevas@ifremer.fr <mailto:Stephanie.Mahevas@ifremer.fr>> a écrit :
Et pour les sélectivités des langoustines, je n'ai pas de courbes de sélectivité à tester pour l'instant. Si les sélectivités ne change pas, est-il nécessaire de créer un fichier "selectivité langoustine" ? Si oui ça veut dire que je mettrais 7 fois (si j'ai 7 courbes à tester pour le merlu) la même equation de sélectivité langoustine dans le fichier "langoustine" ?
<mailto:Isis-fish-users@list.isis-fish.org>
Bonjour Camille
ca ne me semble pas correct comme maniere d'ecrire le plan.
Si tu vas à sur le site d'ISIS
(http://isis-fish.labs.libre-entreprise.org/wiki-moin/instance/cgi-bin/moin.cgi/v3/usermanual/tuto/PlanAnalyse?action=AttachFile&do=view&target=Exemple_PlanAnalyse.java
<http://isis-fish.labs.libre-entreprise.org/wiki-moin/instance/cgi-bin/moin.cgi/v3/usermanual/tuto/PlanAnalyse?action=AttachFile&do=view&target=Exemple_PlanAnalyse.java>)
tu verras comment proceder.
1. il te faudrait deux fichiers de parametres :
selectiviteLangoustine.txt et selectiviteMerlu.txt
chacun de ces fichiers doit contenir autant de lignes qu'il y a de
courbes à tester (et le meme nombre pour les 2 fichiers)
1 = "equationselectivite1"
2= "equationselectivite2"
...
2. tu construis un fichier matrix.txt avec 2 colonnes
(selectiviteLangoustine et selectiviteMerlu) et n lignes (le
nombre de courbes à tester)
1;1
2;2
...
n;n
3. tu suis les instructions pour que dans la boucle tu reaffactes
la courbe de selectivite pour chaque population et chaque engin
concerné
je te prepare un essai de script
stephanie
camille de la Vega a écrit :
Bonjour,
Je voudrais faire un plan d'analyse pour faire plusieurs
simulations à la suite avec chacune une sélectivité différente
pour les engins "chalut". J'ai 7 sélectivités à tester. Je
vous envoie mon script qui ne compile pas.
Merci !!
Camille
------------------------------------------------------------------------
_______________________________________________
Isis-fish-users mailing list
Isis-fish-users@list.isis-fish.org
<mailto:Stephanie.Mahevas@ifremer.fr>)
http://list.isis-fish.org/cgi-bin/mailman/listinfo/isis-fish-users
-- ......................................................................
Stephanie MAHEVAS (Stephanie.Mahevas@ifremer.fr
<mailto:Isis-fish-users@list.isis-fish.org>
IFREMER/EMH (Ecologie et Modèles pour l'Halieutique) Tel: (33) 2
40 37 41 81 Fax: (33) 2 40 37 40 75 o \ o / _ o __| \ / |__ o _ \ o / o
/|\ | /\ ___\o \o | o/ o/__ /\ | /|\
/ \ / \ | \ /) | ( \ /o\ / ) | (\ / | / \ / \
......................................................................
_______________________________________________
Isis-fish-users mailing list
Isis-fish-users@list.isis-fish.org
http://list.isis-fish.org/cgi-bin/mailman/listinfo/isis-fish-users
------------------------------------------------------------------------
_______________________________________________
Isis-fish-users mailing list
Isis-fish-users@list.isis-fish.org
http://list.isis-fish.org/cgi-bin/mailman/listinfo/isis-fish-users
--
......................................................................
Stephanie MAHEVAS (Stephanie.Mahevas@ifremer.fr)
IFREMER/EMH (Ecologie et Modèles pour l'Halieutique) Tel: (33) 2 40 37 41 81 Fax: (33) 2 40 37 40 75
o \ o / _ o __| \ / |__ o _ \ o / o
/|\ | /\ ___\o \o | o/ o/__ /\ | /|\
/ \ / \ | \ /) | ( \ /o\ / ) | (\ / | / \ / \
......................................................................
0 = "Math.exp(a1+b1*group.getLength())/(1+Math.exp((a1)+b1* group.getLength()))"
1= "Math.exp(a2+b2*group.getLength())/(1+Math.exp((a2)+b2* group.getLength())); "
A COMPLETER
0;0
1;1
2;2
3;3
4;4
5;5
6;6
/*
* Copyright (C) 2011 Camille
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
package analyseplans;
import static org.nuiton.i18n.I18n._;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import scripts.ResultName;
import java.io.Writer;
import org.nuiton.math.matrix.*;
import org.nuiton.util.*;
import org.nuiton.topia.*;
import fr.ifremer.isisfish.util.Doc;
import fr.ifremer.isisfish.*;
import fr.ifremer.isisfish.simulator.SimulationContext;
import fr.ifremer.isisfish.types.Date;
import fr.ifremer.isisfish.entities.*;
import fr.ifremer.isisfish.simulator.AnalysePlan;
import fr.ifremer.isisfish.simulator.AnalysePlanContext;
import fr.ifremer.isisfish.simulator.SimulationParameter;
import fr.ifremer.isisfish.datastore.SimulationStorage;
import fr.ifremer.isisfish.datastore.ResultStorage;
/**
* SELECTIVITY.java
*
* Created: 27 juin 2011
*
* @author Camille <user.name@vcs.hostName>
* @version $Revision: 1545 $
* Last update: $Date: 27 juin 2011 $
* by : $Author: Camille $
*/
public class SELECTIVITY implements AnalysePlan {
/** to use log facility, just put in your code: log.info("..."); */
private static Log log = LogFactory.getLog(SELECTIVITY.class);
static private final String MATRIXSELECTIVITE = "matrixSelectivite"; /// Le fichier est donc matrixSelectivite.txt
static private final String SELECTIVITYMERLU = "selectivityMerlu";
static private final String SELECTIVITYLANGOUSTINE = "selectivityLangoustine";
int param_parameterNumber = 2;
public int param_first = 0;
public param_simulationNumber = 7; //nombre de courbes de selectivite a tester
public String param_directory = ""; //repertoir ou sont ranges les fichiers matrixSelectivite.txt,selectivityMerlu.txt,selectivityLangoustine.txt
public String [] necessaryResult = {
// put here all necessary result for this rule
// example:
// ResultName.MATRIX_BIOMASS,
// ResultName.MATRIX_NET_VALUE_OF_LANDINGS_PER_STRATEGY_MET,
};
@Override
public String[] getNecessaryResult() {
return this.necessaryResult;
}
/**
* Permet d'afficher a l'utilisateur une aide sur le plan.
* @return L''aide ou la description du plan
*/
@Override
public String getDescription() throws Exception {
// TODO change descrition
return _("TODO SELECTIVITY description plan");
}
/**
* Appele au demarrage de la simulation, cette methode permet d''initialiser
* des valeurs
* @param simulation La simulation pour lequel on utilise cette regle
*/
@Override
public void init(AnalysePlanContext context) throws Exception {
File dir = new File(param_directory);
matrix = MatrixFactory.getInstance().create(new int[]{param_simulationNumber, param_parameterNumber});
matrix.importCSV(new FileReader(new File(dir, MATRIXSELECTIVITE + ".txt")), new int[]{0,0});
matrix.setSemantics(1, Arrays.asList(new String[]{SELECTIVITYMERLU, SELECTIVITYLANGOUSTINE}));
System.out.println(matrix);
}
/**
* @param name le nom de l'element a recuperer
* @param simulation le numero de la simulation
* @return
*/
private String getString(String name, int simulation) throws Exception {
File dir = new File(param_directory);
Properties prop = new Properties();
prop.load(new BufferedReader(new FileReader(new File(dir, name + ".txt"))));
int ligne = simulation + param_first;
int mod = (int)matrix.getValue(ligne , name);
String result = prop.getProperty(""+mod);
return result;
}
/**
* Call before each simulation.
*
* @param context plan context
* @param nextSimulation storage used for next simulation
* @return true if we must do next simulation, false to stop plan
* @throws Exception
*/
// partie ou on decide si on refait une simulation ou si on s'arrete.
public boolean beforeSimulation(AnalysePlanContext context, SimulationStorage nextSimulation) throws Exception {
int simNum = nextSimulation.getParameter().getAnalysePlanNumber();
if (simNum + param_first < param_simulationNumber) {
String selectivityMerlu = getString (SELECTIVITYMERLU, simNum);
String selectivityLangoustine = getString (SELECTIVITYLANGOUSTINE, simNum);
nextSimulation.getInformation().addInformation("Selectivity Merlu ("+context.getNumber()+")= " + selectivityMerlu);
nextSimulation.getInformation().addInformation("Selectivity Langoustine ("+context.getNumber()+")= " + selectivityLangoustine);
/// modif les parametres dans la base de données :
TopiaContext tx = nextSimulation.getStorage().beginTransaction();
/// On récupère les objets ISIS a modifier dans la base de données
PopulationDAO popDAO = IsisFishDAOHelper.getPopulationDAO(tx);
Population popMerlu = popDAO.findByName("merluccius");
Population popLangoustine = popDAO.findByName("nephrops");
GearDAO gearDAO = IsisFishDAOHelper.getGearDAO(tx);
Gear gearChalutSimple = GearDAO.findByName("chalut simple");
Gear gearChalutJumeau = GearDAO.findByName("Chalut jumeau");
Selectivity selMerlu = gearChalutSimple.getPopulationSelectivity(popMerlu);
Equation eqMerlu = selMerlu.getEquation();
eqMerlu.setContent(selectivityMerlu);
Selectivity selLangoustine = gearChalutSimple.getPopulationSelectivity(popLangoustine);
Equation eqLangoustine = selLangoustine.getEquation();
eqLangoustine.setContent(selectivityLangoustine);
Selectivity selMerlu = gearChalutJumeau.getPopulationSelectivity(popMerlu);
Equation eqMerlu = selMerlu.getEquation();
eqMerlu.setContent(selectivityMerlu);
Selectivity selLangoustine = gearChalutJumeau.getPopulationSelectivity(popLangoustine);
Equation eqLangoustine = selLangoustine.getEquation();
eqLangoustine.setContent(selectivityLangoustine);
tx.commitTransaction();
return true;
} else {
return false;
}
}
/**
* Call after each simulation.
*
* @param context plan context
* @param lastSimulation storage used for simulation
* @return true if we must do next simulation, false to stop plan
* @throws Exception
*/
@Override
public boolean afterSimulation(AnalysePlanContext context,
SimulationStorage lastSimulation) throws Exception {
return true;
}
_______________________________________________
Isis-fish-users mailing list
Isis-fish-users@list.isis-fish.org
http://list.isis-fish.org/cgi-bin/mailman/listinfo/isis-fish-users