Bonjour, J'ai une règle de gestion simple, uniquement sensée ajuster des valeurs d'abondances par soustraction d'une valeur de capture que je récupère dans un fichier .csv Or, lors de mes simulations, la matrice d'abondance que je récupère en export est exactement la même que j'applique ma règle ou non. Cela insinue donc que ma règle ne fonctionne pas. Malgré une bonne compilation du script. En effet, lorsque j'observe les "log" de la simulations j'obtiens le Warning : "WARN|11:21:35,581|SimulationParameterImpl.java|638|getRules|Can't find rule: AjustAbondanceWithCapture" et ceux pour chaque espèces inclue dans la simulations et devant subir cette règle. Isis ne semble pas trouver "AjustAbondanceWithCapture" qui est le nom de ma règle, alors que cette dernière est bien présente dans l'interface de simulation, ainsi que dans le "VCS Communauté" Je requière donc votre aide car je ne trouve pas de solution à mon problème. En fichier ci-joint, compressé sous archive, le fichier Java de la règle, les simulations effectuées avec et sans la règle ainsi que les fichier .csv qui doivent être importés pour corrigé les abondances. Merci d'avance pour votre aide. Cordialement François TIMON
Le 27/05/2015 11:34, Francois TIMON a écrit :
Bonjour,
J'ai une règle de gestion simple, uniquement sensée ajuster des valeurs d'abondances par soustraction d'une valeur de capture que je récupère dans un fichier .csv
Or, lors de mes simulations, la matrice d'abondance que je récupère en export est exactement la même que j'applique ma règle ou non. Cela insinue donc que ma règle ne fonctionne pas. Malgré une bonne compilation du script.
En effet, lorsque j'observe les "log" de la simulations j'obtiens le Warning : "WARN|11:21:35,581|SimulationParameterImpl.java|638|getRules|Can't find rule: AjustAbondanceWithCapture" Je pense que ça vient du fait qu'il manque "package rules;" au début de votre règle.
-- Éric Chatellier - www.codelutin.com - 02.40.50.29.28
Re-bonjour, Je vous remercie tout d'abords pour votre réponse, l'import du package rules était en effet manquant, il avait disparu je ne sais pas comment. En revanche, maintenant, alors ma règle compile et les "log" n'indique aucun Warning ou Erreur, cette règle dernière ne fonctionne toujours pas. Je reviens donc vers vous car je ne trouve pas de solution à mon problème. Je vous ré-envoi donc l'ensemble des fichiers nécessaires pour le fonctionnement théorique de cette règle.(les fichier .csv ont subit des modifications depuis ce matin). Cordialement Le 27/05/2015 11:45, Eric Chatellier a écrit :
Le 27/05/2015 11:34, Francois TIMON a écrit :
Bonjour,
J'ai une règle de gestion simple, uniquement sensée ajuster des valeurs d'abondances par soustraction d'une valeur de capture que je récupère dans un fichier .csv
Or, lors de mes simulations, la matrice d'abondance que je récupère en export est exactement la même que j'applique ma règle ou non. Cela insinue donc que ma règle ne fonctionne pas. Malgré une bonne compilation du script.
En effet, lorsque j'observe les "log" de la simulations j'obtiens le Warning : "WARN|11:21:35,581|SimulationParameterImpl.java|638|getRules|Can't find rule: AjustAbondanceWithCapture" Je pense que ça vient du fait qu'il manque "package rules;" au début de votre règle.
Le 27/05/2015 17:32, Francois TIMON a écrit :
Re-bonjour,
Je vous remercie tout d'abords pour votre réponse, l'import du package rules était en effet manquant, il avait disparu je ne sais pas comment.
En revanche, maintenant, alors ma règle compile et les "log" n'indique aucun Warning ou Erreur, cette règle dernière ne fonctionne toujours pas.
Je reviens donc vers vous car je ne trouve pas de solution à mon problème.
Je vous ré-envoi donc l'ensemble des fichiers nécessaires pour le fonctionnement théorique de cette règle.(les fichier .csv ont subit des modifications depuis ce matin).
Le problème principale doit venir du fait que vous exécuter la simulation sans stratégies sélectionnées lors du lancement, donc sans metiers impliqués. La règle est bien instanciée, la méthode init() appelé, mais sans metier les appels de condition(), preAction(), postAction() ne sont pas possibles. Ensuite, avec des stratégies, les méthodes sont appelées, voici quelques erreurs que j'ai relevé: - dans init(), il ne faut par redéclarer CaptAuxAges: Map<PopulationGroup , MatrixND> CaptAuxAges = new HashMap<PopulationGroup, MatrixND>(); ,mais juste l'affecter dans elle est déclarée en attribut de class donc seulement: CaptAuxAges = new HashMap<PopulationGroup, MatrixND>(); - affectation est toujours "false", oublit de passage a "true" à un moment je pense - dans l'init(), dans la boucle des ages, il faut instancer un matrice differente à chaque fois, MatrixND matrix = MatrixFactory.getInstance().create( "MatDatZone", new List[]{dates,allZoneOrder}, new String[]{"Dates","Zones"}); à l'intérieur du for. Sinon, vous importer toujours dans la même matrice, et tous vos ages auront la même matrice avec les mêmes valeurs. Ensuite, ca plante encore, mais c'est du debuggage. -- Éric Chatellier - www.codelutin.com - 02.40.50.29.28
Bonjour, Après avoir suivit à la lettre vos précisions je n'arrive toujours pas à faire fonctionner cette règle. Les simulations tournent correctement mais j'obtiens comme message dans les logs : INFO|10:49:11,105|DefaultSimulator.java|182|simulate|Activate rule: AjustAbondanceWithCapture WARN|10:49:11,105|ResultManager.java|187|addActiveRule|addActiveRule not implemented Et ceci répété une bonne 100éne de fois... Le 27/05/2015 18:35, Eric Chatellier a écrit :
Le 27/05/2015 17:32, Francois TIMON a écrit :
Re-bonjour,
Je vous remercie tout d'abords pour votre réponse, l'import du package rules était en effet manquant, il avait disparu je ne sais pas comment.
En revanche, maintenant, alors ma règle compile et les "log" n'indique aucun Warning ou Erreur, cette règle dernière ne fonctionne toujours pas.
Je reviens donc vers vous car je ne trouve pas de solution à mon problème.
Je vous ré-envoi donc l'ensemble des fichiers nécessaires pour le fonctionnement théorique de cette règle.(les fichier .csv ont subit des modifications depuis ce matin).
Le problème principale doit venir du fait que vous exécuter la simulation sans stratégies sélectionnées lors du lancement, donc sans metiers impliqués. La règle est bien instanciée, la méthode init() appelé, mais sans metier les appels de condition(), preAction(), postAction() ne sont pas possibles.
Ensuite, avec des stratégies, les méthodes sont appelées, voici quelques erreurs que j'ai relevé: - dans init(), il ne faut par redéclarer CaptAuxAges: Map<PopulationGroup , MatrixND> CaptAuxAges = new HashMap<PopulationGroup, MatrixND>(); ,mais juste l'affecter dans elle est déclarée en attribut de class donc seulement: CaptAuxAges = new HashMap<PopulationGroup, MatrixND>();
- affectation est toujours "false", oublit de passage a "true" à un moment je pense
- dans l'init(), dans la boucle des ages, il faut instancer un matrice differente à chaque fois, MatrixND matrix = MatrixFactory.getInstance().create( "MatDatZone", new List[]{dates,allZoneOrder}, new String[]{"Dates","Zones"}); à l'intérieur du for. Sinon, vous importer toujours dans la même matrice, et tous vos ages auront la même matrice avec les mêmes valeurs.
Ensuite, ca plante encore, mais c'est du debuggage.
Le 28/05/2015 10:59, Francois TIMON a écrit :
Bonjour,
Après avoir suivit à la lettre vos précisions je n'arrive toujours pas à faire fonctionner cette règle. Normalement, en selectionnant des strategies, la simulation devrait s'arrete à cause d'une erreur dans la règle.
Si la simulation se termine normalement, c'est certainement qu'elle ne s'execute pas. Quel est le comportement actuel ? avez-vous un message d'erreur ? -- Éric Chatellier - www.codelutin.com - 02.40.50.29.28
En effet la simulation se termine normalement, et hormis les Warnings que je vous est précisés dans le dernier message je ne possède aucun message d'erreur. Mais ce que je comprend du warning est, qu'en effet, la règle de s'exécute pas, ce que j'observe dans les résultats. Je vous joint une simulation simple et récente. Le 28/05/2015 11:21, Eric Chatellier a écrit :
Le 28/05/2015 10:59, Francois TIMON a écrit :
Bonjour,
Après avoir suivit à la lettre vos précisions je n'arrive toujours pas à faire fonctionner cette règle. Normalement, en selectionnant des strategies, la simulation devrait s'arrete à cause d'une erreur dans la règle.
Si la simulation se termine normalement, c'est certainement qu'elle ne s'execute pas.
Quel est le comportement actuel ? avez-vous un message d'erreur ?
en effet il faut au moins une strategie pour que ca marche mais une strategie qui ne pecherait rien. Le mieux est d en creer une bidon avec 1 metier mais 0 effort. Le 28 mai 2015 11:47, Francois TIMON <Francois.Timon@ifremer.fr> a écrit :
En effet la simulation se termine normalement, et hormis les Warnings que je vous est précisés dans le dernier message je ne possède aucun message d'erreur.
Mais ce que je comprend du warning est, qu'en effet, la règle de s'exécute pas, ce que j'observe dans les résultats.
Je vous joint une simulation simple et récente.
Le 28/05/2015 11:21, Eric Chatellier a écrit :
Le 28/05/2015 10:59, Francois TIMON a écrit :
Bonjour,
Après avoir suivit à la lettre vos précisions je n'arrive toujours pas à faire fonctionner cette règle.
Normalement, en selectionnant des strategies, la simulation devrait s'arrete à cause d'une erreur dans la règle.
Si la simulation se termine normalement, c'est certainement qu'elle ne s'execute pas.
Quel est le comportement actuel ? avez-vous un message d'erreur ?
_______________________________________________ Isis-fish-users mailing list Isis-fish-users@list.isis-fish.org http://list.isis-fish.org/cgi-bin/mailman/listinfo/isis-fish-users
Le 28/05/2015 12:02, Sigrid Lehuta a écrit :
en effet il faut au moins une strategie pour que ca marche mais une strategie qui ne pecherait rien. Le mieux est d en creer une bidon avec 1 metier mais 0 effort. C'est bon, il y a des strategies.
Ce qu'il manque c'est la sauvegarde de la matrice d'aboncance car elle est modifié, mais pas sauvée via le resultManager, donc: import fr.ifremer.isisfish.simulator.ResultManager; ... ResultManager resManager = context.getResultManager(); ... (après la boucle for) resManager.addResult(step, pop, abondance); -- Éric Chatellier - www.codelutin.com - 02.40.50.29.28
Bon les rectifications apportées permette aux simulations de tourner avec la règle, merci beaucoup. En revanche il me reste deux espèces pour lesquelles les simulations ne tournent pas... Je vous joint les simulations en annexe. Voici le message d'erreur que j'obtiens: ERROR|17:05:53,869|InProcessSimulatorLauncher.java|484|localSimulateSameThread|Error during simulation java.lang.IllegalArgumentException: La dimension demandée n'est pas correcte: 0 <= 1 <= 0 Je trouve étrange que cela fonctionne pour toutes les espèces excepté ces deux la. Je me posait également une autre question : Sachant que la première ligne et la première colonne de mes fichiers .csv ne sont que des caractères (représentant les titres du data.frame exporté depuis R), lors de la l'importation du .csv dans la matrice sensée stocké les informations, ne devrais-je pas plutôt la définir de cette manière : matrix.importCSV(new FileReader(caa),new int []{1,1}); plutôt que : matrix.importCSV(new FileReader(caa),new int []{0,0}); L'indexation {0,0} n'entraine telle pas l'import des caractères représentant les titres? Si oui, l'indexation {1,1} me permettrai telle de sauté les titres et d'importé uniquement les valeurs voulus? Cordialement Le 28/05/2015 14:38, Eric Chatellier a écrit :
Le 28/05/2015 12:02, Sigrid Lehuta a écrit :
en effet il faut au moins une strategie pour que ca marche mais une strategie qui ne pecherait rien. Le mieux est d en creer une bidon avec 1 metier mais 0 effort. C'est bon, il y a des strategies.
Ce qu'il manque c'est la sauvegarde de la matrice d'aboncance car elle est modifié, mais pas sauvée via le resultManager,
donc: import fr.ifremer.isisfish.simulator.ResultManager;
...
ResultManager resManager = context.getResultManager();
...
(après la boucle for)
resManager.addResult(step, pop, abondance);
je pense qu il vaut mieux que ton csv ne comprenne aucun titre (ni ligne ni colonnes) et que tu l importe en (0,0). d ailleurs je me demande comment java a gere ca jusqu ici, tu avais forcement un semantic de moins que le nb de ligne/colonne... je te conseille d afichier la matrice importee ds le logs afin de verifier que tu as bien toputes les colonnes et lignes System.out.println("matrice:"+matrice); Le 28 mai 2015 17:32, Francois TIMON <Francois.Timon@ifremer.fr> a écrit :
Bon les rectifications apportées permette aux simulations de tourner avec la règle, merci beaucoup.
En revanche il me reste deux espèces pour lesquelles les simulations ne tournent pas...
Je vous joint les simulations en annexe.
Voici le message d'erreur que j'obtiens: ERROR|17:05:53,869|InProcessSimulatorLauncher.java|484|localSimulateSameThread|Error during simulation java.lang.IllegalArgumentException: La dimension demandée n'est pas correcte: 0 <= 1 <= 0
Je trouve étrange que cela fonctionne pour toutes les espèces excepté ces deux la.
Je me posait également une autre question : Sachant que la première ligne et la première colonne de mes fichiers .csv ne sont que des caractères (représentant les titres du data.frame exporté depuis R), lors de la l'importation du .csv dans la matrice sensée stocké les informations, ne devrais-je pas plutôt la définir de cette manière :
matrix.importCSV(new FileReader(caa),new int []{1,1});
plutôt que :
matrix.importCSV(new FileReader(caa),new int []{0,0});
L'indexation {0,0} n'entraine telle pas l'import des caractères représentant les titres?
Si oui, l'indexation {1,1} me permettrai telle de sauté les titres et d'importé uniquement les valeurs voulus?
Cordialement
Le 28/05/2015 14:38, Eric Chatellier a écrit :
Le 28/05/2015 12:02, Sigrid Lehuta a écrit :
en effet il faut au moins une strategie pour que ca marche mais une strategie qui ne pecherait rien. Le mieux est d en creer une bidon avec 1 metier mais 0 effort.
C'est bon, il y a des strategies.
Ce qu'il manque c'est la sauvegarde de la matrice d'aboncance car elle est modifié, mais pas sauvée via le resultManager,
donc: import fr.ifremer.isisfish.simulator.ResultManager;
...
ResultManager resManager = context.getResultManager();
...
(après la boucle for)
resManager.addResult(step, pop, abondance);
_______________________________________________ Isis-fish-users mailing list Isis-fish-users@list.isis-fish.org http://list.isis-fish.org/cgi-bin/mailman/listinfo/isis-fish-users
Le 29/05/2015 10:38, Sigrid Lehuta a écrit :
je pense qu il vaut mieux que ton csv ne comprenne aucun titre (ni ligne ni colonnes) et que tu l importe en (0,0). d ailleurs je me demande comment java a gere ca jusqu ici, tu avais forcement un semantic de moins que le nb de ligne/colonne... je te conseille d afichier la matrice importee ds le logs afin de verifier que tu as bien toputes les colonnes et lignes System.out.println("matrice:"+matrice);
Oui, je suis d'accord, le fichier ne devrait pas contenir d'entetes. D'ailleurs, le {1, 1} est la position d'import dans la matrice. Cela ne concerne pas le fichier lu.
Le 28 mai 2015 17:32, Francois TIMON <Francois.Timon@ifremer.fr <mailto:Francois.Timon@ifremer.fr>> a écrit :
Bon les rectifications apportées permette aux simulations de tourner avec la règle, merci beaucoup.
En revanche il me reste deux espèces pour lesquelles les simulations ne tournent pas...
Je vous joint les simulations en annexe.
Voici le message d'erreur que j'obtiens: ERROR|17:05:53,869|InProcessSimulatorLauncher.java|484|localSimulateSameThread|Error during simulation java.lang.IllegalArgumentException: La dimension demandée n'est pas correcte: 0 <= 1 <= 0
mais l'erreur n'est pas là je pense. vos simulations qui ne fonctionne pas sont effectuées avec Scallops_BS et Scallops_BSext qui ont comme zones, BS_coast, et BS_offshore. comme c'est zones ne sont pas dans String[] zoneisis = {...}, vos matrices ont une dimension "zones" vide. le problème n'est pas l'import, mais le : MatrixFactory.getInstance().create("MatDatZone", new List[]{dates,allZoneOrder}, -- Éric Chatellier - www.codelutin.com - 02.40.50.29.28
Bonjour, Je reviens encore une fois avec un problème dans ma règle de gestion. En effet depuis les modifications apportées, cette règle semble fonctionner. Les simulations tournent pour toutes les espèces et les matrices d'abondances sont belle et bien modifiées par une diminution de leurs valeurs (ce qui est recherché par l'utilisation de cette règle). En revanche, après vérifications, je me suis rendu compte que cette règle ne semble pas fonctionner correctement. En effet les valeurs soustraites ne sembles pas être en accord avec celles des fichier .csv J'ai donc affiché les matrices dans les logs des simulations. Les matrices crées pour l'importations des fichiers .csv ne semble pas ce remplir avec les valeurs contenus par ces derniers, elles restent vide. De plus ces matrices ne semblent pas posséder les bonnes dimensions (les dates représentent les colonnes et les zones les lignes tandis que l'inverse est demandé par la règle) Pourtant les valeurs de la matrices d'abondances sont modifiées... Je requière donc, encore une fois, votre aide. Merci d'avance. Le 29/05/2015 11:04, Eric Chatellier a écrit :
Le 29/05/2015 10:38, Sigrid Lehuta a écrit :
je pense qu il vaut mieux que ton csv ne comprenne aucun titre (ni ligne ni colonnes) et que tu l importe en (0,0). d ailleurs je me demande comment java a gere ca jusqu ici, tu avais forcement un semantic de moins que le nb de ligne/colonne... je te conseille d afichier la matrice importee ds le logs afin de verifier que tu as bien toputes les colonnes et lignes System.out.println("matrice:"+matrice);
Oui, je suis d'accord, le fichier ne devrait pas contenir d'entetes.
D'ailleurs, le {1, 1} est la position d'import dans la matrice. Cela ne concerne pas le fichier lu.
Le 28 mai 2015 17:32, Francois TIMON <Francois.Timon@ifremer.fr <mailto:Francois.Timon@ifremer.fr>> a écrit :
Bon les rectifications apportées permette aux simulations de tourner avec la règle, merci beaucoup.
En revanche il me reste deux espèces pour lesquelles les simulations ne tournent pas...
Je vous joint les simulations en annexe.
Voici le message d'erreur que j'obtiens: ERROR|17:05:53,869|InProcessSimulatorLauncher.java|484|localSimulateSameThread|Error during simulation java.lang.IllegalArgumentException: La dimension demandée n'est pas correcte: 0 <= 1 <= 0
mais l'erreur n'est pas là je pense.
vos simulations qui ne fonctionne pas sont effectuées avec Scallops_BS et Scallops_BSext qui ont comme zones, BS_coast, et BS_offshore. comme c'est zones ne sont pas dans String[] zoneisis = {...}, vos matrices ont une dimension "zones" vide.
le problème n'est pas l'import, mais le : MatrixFactory.getInstance().create("MatDatZone", new List[]{dates,allZoneOrder},
Le 01/06/2015 14:30, Francois TIMON a écrit :
Bonjour,
Je reviens encore une fois avec un problème dans ma règle de gestion. En effet depuis les modifications apportées, cette règle semble fonctionner. Les simulations tournent pour toutes les espèces et les matrices d'abondances sont belle et bien modifiées par une diminution de leurs valeurs (ce qui est recherché par l'utilisation de cette règle).
En revanche, après vérifications, je me suis rendu compte que cette règle ne semble pas fonctionner correctement. En effet les valeurs soustraites ne sembles pas être en accord avec celles des fichier .csv
J'ai donc affiché les matrices dans les logs des simulations. Les matrices crées pour l'importations des fichiers .csv ne semble pas ce remplir avec les valeurs contenus par ces derniers, elles restent vide. De plus ces matrices ne semblent pas posséder les bonnes dimensions (les dates représentent les colonnes et les zones les lignes tandis que l'inverse est demandé par la règle)
Pourtant les valeurs de la matrices d'abondances sont modifiées...
Je requière donc, encore une fois, votre aide. Là je pense que la documentation est trop légère concernant l'import des matrices. Je vais essayer d'améliorer ca.
Les fichiers ne sont pas formatés correctement pour isis. Le séparateur doit obligatoirement etre ";" et non " " (espace dans votre cas). -- Éric Chatellier - www.codelutin.com - 02.40.50.29.28
participants (3)
-
Eric Chatellier -
Francois TIMON -
Sigrid Lehuta