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

No commit message

No commit message
1 merge request!1Add Svn history
This commit is part of merge request !1. Comments created here will be created in the context of that merge request.
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