Commit ef2add29 authored by guillaume.garbay's avatar guillaume.garbay
Browse files

No commit message

No commit message
1 merge request!1Add Svn history
Showing with 173 additions and 153813 deletions
+173 -153813
......@@ -7,9 +7,18 @@
<processes>
<processesAtBegin>
<pikelake.environment.Time>
<pikelake.environment.FichierMarnage>
</pikelake.environment.FichierMarnage>
<pikelake.environment.HoraireLeverCoucher>
</pikelake.environment.HoraireLeverCoucher>
<!-- pikelake.environment.Time>
</pikelake.environment.Time>
</pikelake.environment.Time-->
<pikelake.environment.AreaMovement>
......@@ -18,11 +27,10 @@
<pikelake.pikes.PikesPopulateProcess>
<initialNumberOfPikes>12</initialNumberOfPikes>
<initialNumberOfPikes>10</initialNumberOfPikes>
</pikelake.pikes.PikesPopulateProcess>
</processesAtBegin>
<processesEachStep>
......@@ -45,9 +53,9 @@
<basicMovingRate>2</basicMovingRate>
</pikelake.pikes.PikeMovement>
<pikelake.pikes.PikeTrackLocation>
<!--pikelake.pikes.PikeTrackLocation>
</pikelake.pikes.PikeTrackLocation>
</pikelake.pikes.PikeTrackLocation-->
<fr.cemagref.simaqualife.kernel.processes.FireAquaNismsChangesToObservers />
</processesEachStep>
......
This diff is collapsed.
......@@ -9,6 +9,7 @@ import java.util.StringTokenizer;
import pikelake.Cell;
import pikelake.environment.AreaMovement;
import pikelake.environment.FichierMarnage;
import pikelake.environment.Time;
import pikelake.pikes.Pike;
import fr.cemagref.simaqualife.extensions.spatial2D.Grid2D;
......@@ -19,6 +20,7 @@ import fr.cemagref.simaqualife.pilot.Pilot;
public class Grid extends Grid2D<Cell, Individual> {
//public Time temp = new Time();
private String marnageInit = "513_4";
public Grid(int gridWidth, int gridHeight, NeighborsType neighborsType) {
super(gridWidth, gridHeight, neighborsType);
......@@ -45,8 +47,15 @@ public class Grid extends Grid2D<Cell, Individual> {
grid[cptCell] = new Cell(cptCell, -1);
}
try {
marnageInit = FichierMarnage.calculMarnage();
} catch (NullPointerException e) {
//System.out.println ("Err marnage");
marnageInit = "513_4";
}
// Lecture fichier contenant les HSI de toutes les mailles
String filePath = "data/input/HSI/hsi_BRO" + Time.getSeason() + calculMarnage() + ".txt";
String filePath = "data/input/HSI/hsi_BRO" + Time.getSeason() + marnageInit + ".txt";
Scanner scanner = new Scanner(new File(filePath));
// Initialisation de chaque cellule contenant HSI
......@@ -54,7 +63,7 @@ public class Grid extends Grid2D<Cell, Individual> {
String line = scanner.nextLine();
while (scanner.hasNextLine()) {
line = scanner.nextLine();
// Decoupage ligne : id, hsiStd, hsiMoy
sLigne = new StringTokenizer (line);
if (sLigne.hasMoreTokens())
......@@ -81,7 +90,7 @@ public class Grid extends Grid2D<Cell, Individual> {
}
public String calculMarnage () {
/* public static String calculMarnage () {
String temp[] = null;
String file = "data/input/CoteCorrige_01012012_30042014.txt";
......@@ -106,8 +115,7 @@ public class Grid extends Grid2D<Cell, Individual> {
e.printStackTrace();
}
return temp[6].substring(0, temp[6].length()-1).replace(".", "_");
}
} */
public void setCell (int indexCell, double hsiCell) {
grid[indexCell] = new Cell(indexCell, hsiCell);
......@@ -149,7 +157,6 @@ public class Grid extends Grid2D<Cell, Individual> {
xPike = (position.getIndex() - (yPike * gridWidth));
// Determination de la liste des mailles pour une distance donnee qui depend de la phase du jour et de la saison
//
switch (Time.getSeason()) {
case "PRINTEMPS": switch (Time.getPhaseJour()) {
case "AUBE" : listeCoord = AreaMovement.areaPrinAube; break;
......
......@@ -6,6 +6,7 @@ import java.util.Scanner;
import java.util.StringTokenizer;
import fr.cemagref.simaqualife.kernel.processes.AquaNismsGroupProcess;
import pikelake.environment.FichierMarnage;
import pikelake.environment.Time;
import pikelake.pikes.Pike;
import pikelake.pikes.PikesGroup;
......@@ -16,11 +17,11 @@ public class Marnage extends AquaNismsGroupProcess<Pike,PikesGroup> {
@Override
public void doProcess(PikesGroup object) {
Grid grid = (Grid) pilot.getAquaticWorld().getEnvironment() ;
Grid grid = (Grid) pilot.getAquaticWorld().getEnvironment();
grid = grid.getGrid();
marnageNew = grid.calculMarnage();
marnageNew = FichierMarnage.calculMarnage();
if (!marnageNew.equals(marnageOld))
majCote(grid);
}
......
......@@ -38,8 +38,6 @@ public class AreaMovement extends AquaNismsGroupProcess<Pike, PikesGroup> {
@Override
public void doProcess(PikesGroup object) {
// TODO Auto-generated method stub
// Lecture fichier contenant les distances Horaires Cartesienne
String filePath = "data/input/DistanceHoraireCartesienne_Bro.txt";
Scanner scanner;
......
package pikelake.environment;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import pikelake.pikes.Pike;
import pikelake.pikes.PikesGroup;
import fr.cemagref.simaqualife.kernel.processes.AquaNismsGroupProcess;
public class FichierMarnage extends AquaNismsGroupProcess<Pike,PikesGroup> {
public static List<String> dateMarnage = new ArrayList<String>(); // Jour Mois Heure Marnage
@Override
public void doProcess (PikesGroup object) {
//String temp[] = null;
String file = "data/input/CoteCorrige_01012012_30042014.txt";
try {
Scanner scanner = new Scanner(new File(file));
// On boucle sur chaque ligne detecte
String line = scanner.nextLine();
while (scanner.hasNextLine()) {
line = scanner.nextLine();
String temp[] = line.split("[/:\t ]+");
dateMarnage.add(temp[0] + " " + temp[1] + " " + temp[3] + " " + temp[6].substring(0, temp[6].length()-1).replace(".", "_"));
}
scanner.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static String calculMarnage () {
String[] donnee = null;
for (String liste : dateMarnage) {
donnee = liste.split(" ");
if (Time.jourMois == Integer.parseInt(donnee[0]))
if (Time.mois == Integer.parseInt(donnee[1])-1)
if (Time.heure == Integer.parseInt(donnee[2]))
break;
}
return donnee[3];
}
}
\ No newline at end of file
package pikelake.environment;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import pikelake.pikes.Pike;
import pikelake.pikes.PikesGroup;
import fr.cemagref.simaqualife.kernel.processes.AquaNismsGroupProcess;
public class HoraireLeverCoucher extends AquaNismsGroupProcess<Pike,PikesGroup> {
public static List<String> dateLeverCoucher = new ArrayList<String>(); // Jour Mois HeureLever HeureCoucher
@Override
public void doProcess (PikesGroup object) {
String temp[] = null, dateCompleteLever[] = null, dateCompleteCoucher[] = null;
String jour = null, mois = null, heureLever = null, heureCoucher = null;
// Lecture fichier contenant les hoiraires de lever et de coucher du soleil
String filePath = "data/input/leshorairesdusoleil.csv";
Scanner scanner;
try {
scanner = new Scanner(new File(filePath));
// On boucle sur chaque ligne detecte
String line = scanner.nextLine();
while (scanner.hasNextLine()) {
line = scanner.nextLine();
temp = line.split(";");
// Dtermination heure de lever du soleil
dateCompleteLever = temp[0].split("[/: ]+");
dateCompleteCoucher = temp[1].split("[/: ]+");
// Calcul date
jour = dateCompleteLever[0];
mois = dateCompleteLever[1];
// Lever du soleil
heureLever = dateCompleteLever[3];
// Coucher du soleil
heureCoucher = dateCompleteCoucher[3];
dateLeverCoucher.add(jour + " " + mois + " " + heureLever + " " + heureCoucher);
}
scanner.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
package pikelake.environment;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
import pikelake.pikes.Pike;
import pikelake.pikes.PikesGroup;
import fr.cemagref.simaqualife.kernel.processes.AquaNismsGroupProcess;
public class Time extends AquaNismsGroupProcess<Pike,PikesGroup> {
public static long yearOfBegin = 2012 ;
protected final static Time simulationTimeInstance = new Time();
public static enum PhaseJour {AUBE, JOUR, CREP, NUIT};
public static enum Season {PRINTEMPS, ETE, AUTOMNE, HIVER};
public static enum Mois {JANVIER, FEVRIER, MARS, AVRIL, MAI, JUIN, JUILLET, AOUT, SEPTEMBRE, OCTOBRE, NOVEMBRE, DECEMBRE};
public static int mois = 0, jour = 0, jourMois = 1, saison = 0, annee = 0, phaseJour = 0, heure = 0;
public static int mois = 0, jour = 0, jourMois = 1, saison = 0, annee = 2012, phaseJour = 0, heure = 0;
@Override
public void doProcess (PikesGroup group) {
......@@ -24,14 +17,29 @@ public class Time extends AquaNismsGroupProcess<Pike,PikesGroup> {
long nbrIter = group.getPilot().getCurrentTime();
// Pas de temps Horaire
heure = (int) nbrIter % 24;
jour = (int) Math.ceil(nbrIter / 24.);
jour = (int) Math.ceil((nbrIter+1) / 24.);
if (jour>365) {
annee = annee + 1;
jour = jour - 365;
}
if (heure == 0)
jourMois = jourMois + 1;
// RAZ jourMois
if ((mois == 0 | mois == 2 | mois == 4 | mois == 6 | mois == 7 | mois == 9 | mois == 11) & jourMois == 32) jourMois = 1;
else if ((mois == 3 | mois == 5 | mois == 8 | mois == 10) & jourMois == 31) jourMois = 1;
else if (mois == 1 & jourMois == 29) jourMois = 1;
// Calcul du mois
calculMois();
calculSaison();
calculPhaseJour();
//System.out.println(annee + " " + Season.values()[saison] + " " + Mois.values()[mois] + " " + jour + " " + jourMois + " " + heure + " " + PhaseJour.values()[phaseJour]);
}
public void calculMois () {
if (jour <= 31) mois = 0; // Janv
else if (jour <= 59) mois = 1; // Fev
else if (jour <= 90) mois = 2; // Mars
......@@ -45,72 +53,27 @@ public class Time extends AquaNismsGroupProcess<Pike,PikesGroup> {
else if (jour <= 334) mois = 10; // Nov
else if (jour <= 365) mois = 11; // Dec
else mois = 0;
calculSaison();
calculPhaseJour();
if (heure == 0)
jourMois = jourMois + 1;
// RAZ jourMois
if ((mois == 0 | mois == 2 | mois == 4 | mois == 6 | mois == 7 | mois == 9 | mois == 11) & jourMois == 32) jourMois = 1;
else if ((mois == 3 | mois == 5 | mois == 8 | mois == 10) & jourMois == 31) jourMois = 1;
else if (mois == 1 & jourMois == 29) jourMois = 1;
//System.out.println(yearOfBegin + " " + Season.values()[saison] + " " + Mois.values()[mois] + " " + jour + " " + jourMois + " " + heure + " " + PhaseJour.values()[phaseJour]);
}
public void calculSaison () {
if (mois == 2 & jour >= 20) saison = 0;
else if (mois == 5 & jour >= 20) saison = 1;
else if (mois == 8 & jour >= 22) saison = 2;
else if (mois == 11 & jour >= 21) saison = 3;
}
public void calculPhaseJour () {
String temp[] = null, dateCompleteLever[] = null, dateCompleteCoucher[] = null;
int jourLever = 0, moisLever = 0, heureLever = 0, heureCoucher = 0;
@SuppressWarnings("unused")
int minLever = 0, minCoucher = 0;
public void calculSaison () {
if (mois == 0) saison = 3;
if (mois == 2 & jourMois >= 20) saison = 0;
else if (mois == 5 & jourMois >= 20) saison = 1;
else if (mois == 8 & jourMois >= 22) saison = 2;
else if (mois == 11 & jourMois >= 21) saison = 3;
}
// Lecture fichier contenant les hoiraires de lever et de coucher du soleil
String filePath = "data/input/leshorairesdusoleil.csv";
Scanner scanner;
try {
scanner = new Scanner(new File(filePath));
// On boucle sur chaque ligne detecte
String line = scanner.nextLine();
while (scanner.hasNextLine()) {
line = scanner.nextLine();
temp = line.split(";");
// Dtermination heure de lever du soleil
dateCompleteLever = temp[0].split("[/: ]+");
dateCompleteCoucher = temp[1].split("[/: ]+");
// Calcul date
jourLever = Integer.parseInt(dateCompleteLever[0]);
moisLever = Integer.parseInt(dateCompleteLever[1]);
// Lever du soleil
heureLever = Integer.parseInt(dateCompleteLever[3]);
minLever = Integer.parseInt(dateCompleteLever[4]);
// Coucher du soleil
heureCoucher = Integer.parseInt(dateCompleteCoucher[3]);
minCoucher = Integer.parseInt(dateCompleteCoucher[4]);
// Calcul de la phase de la journee
if (jourMois == jourLever & mois == (moisLever-1)) {
if (heure > heureLever-2 & heure < heureLever+2) phaseJour = 0;
else if (heure > heureLever+1 & heure < heureCoucher-1) phaseJour = 1;
else if (heure > heureCoucher-2 & heure < heureCoucher+2) phaseJour = 2;
else phaseJour = 3;
public void calculPhaseJour () {
for (String liste : HoraireLeverCoucher.dateLeverCoucher) {
String[] temp = liste.split(" ");
if (jourMois == Integer.parseInt(temp[0]) & mois == (Integer.parseInt(temp[1])-1)) {
if (heure > Integer.parseInt(temp[2])-2 & heure < Integer.parseInt(temp[2])+2) phaseJour = 0;
else if (heure > Integer.parseInt(temp[2])+1 & heure < Integer.parseInt(temp[3])-1) phaseJour = 1;
else if (heure > Integer.parseInt(temp[3])-2 & heure < Integer.parseInt(temp[3])+2) phaseJour = 2;
else phaseJour = 3;
break;
}
}
scanner.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public static String getPhaseJour () {
......@@ -124,20 +87,4 @@ public class Time extends AquaNismsGroupProcess<Pike,PikesGroup> {
public static String getSeason(){
return Season.values()[saison].toString();
}
/*public static long getYear(){
return yearOfBegin;
}
public static long getNbYearFromBegin(long time){
return (long) Math.floor(time / Season.values().length);
}
public static double getSeasonDuration(){
return 1./ Season.values().length;
}
public static Time getInstance(){
return simulationTimeInstance;
}*/
}
......@@ -30,11 +30,11 @@ public class PikeTrackLocation extends AquaNismsGroupProcess<Pike, PikesGroup> {
}
} catch (Exception e) {
System.out
.println("Impossible de creer le fichier d'enregistrement des positions.");
System.out.println("Impossible de creer le fichier d'enregistrement des positions.");
}
}
}
/* id individu id maille date (yyyy/mm/jj/hh) n pas de tps*/
\ No newline at end of file
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment