Salut Benjamin, A priori, le test est fait après l'actionAvant (DefaultSimulator ligne 188) donc même si une modif est faite par une règle, la règle aura "créé" une infosaisonmetier, et donc il ne devrait pas y avoir de problème. Si tu confirmes, je fais le changement. A+ Hilaire Benjamin Poussin a écrit :
Dominique Pelletier said:
Salut Hilaire, salut à tous,
C'est exact, mais normalement, j'ai rajouté Sweden2 au premier métier qui ne faisait rien en mai. testmedium n'a que deux métiers Ce que je ne comprends pas c'est que çà fasse planter ISIS. Normalement, il est possible qu'un métier ne soit pratiqué qu'une partie de l'année. C'est même très pertinent par rapport à la réalité de bcp de pêcheries. Benjamin et Hilaire, pouvez-vous me dire exactement si c'est possible, car si ce ne l'est pas, il faudrait changer celà car cela ne correspond pas au cahier des charges du modèle (depuis le début). Si c'est le cas, et qu'on ne peut faire le changement de suite, comment puis-je faire pour faire tourner sans erreur ? Mettre un paramètre qui annule artificiellement le F de ce métier ? Par ex. ciblage nul pendant la morte saison.
Dans SiMatrix.java on a
201: public MatrixND getMetierZone(Date date) throws TopiaException { 202: List<Metier> metiers = getMetiers(date); 203: List<Zone> zones = getZones(date); 204: 205: MatrixND result = MatrixFactory.getInstance().create( 206: ResultName.MATRIX_METIER_ZONE, 207: new List[]{metiers, zones}, 208: new String[]{n_("Metiers"), n_("Zones")}); 209: 210: for (Metier metier : metiers) { 211: Collection<Zone> zoneMetier = metier.getMetierSeasonInfo(date.getMonth()).getZone(); 212: for (Zone zone : zoneMetier) { 213: result.setValue(metier, zone, 1); 214: } 215: } 216: return result; 217: }
Il faut modifier la recuperation de la zone pour voir si la saison est non null.
for (Metier metier : metiers) { MetierSeasonInfo season = metier.getMetierSeasonInfo(date.getMonth()); if (season != null) { Collection<Zone> zoneMetier = season.getZone(); for (Zone zone : zoneMetier) { result.setValue(metier, zone, 1); } } }
le reste de la methode ne change pas
Mais je ne suis pas sur que ce soit vraiment la bonne solution. La simulation fonctionnera, mais du coup tu ne veras pas qu'il y a potentiellement des resultats incoherents. Car si le code essaie de recuperer les zones de ce metier, c qu'il est un metier possible d'une strategie utilisee, et donc potentiellement une regle pourrait vouloir le mettre actif :(. Bon si ce que je raconte est n'importe quoi. Le changement devrait repondre a la demande.
Je n'ai pas moyen de faire la modification actuellement.
Hilaire pourrais-tu la faire ?
-- Hilaire Drouineau IFREMER, département EMH Centre de Nantes - BP 21105 - 44311 Nantes Cedex 3 tel : +33 (0)2 40 37 42 12 - fax : +33 (0)2 40 37 40 75 email : hilaire.drouineau@ifremer.fr - web : http://www.ifremer.fr/emh **********************************************************************