Fix analyzeData

This commit is contained in:
Quentin Legot 2023-03-31 09:41:50 +02:00
parent 5f18a8f3ea
commit d78d422a07
3 changed files with 47 additions and 55 deletions

View File

@ -1,28 +1,13 @@
package fr.ntr; package fr.ntr;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Random;
import fr.ntr.scheduler.Scheduler;
public class AccessPoint { public class AccessPoint {
/**
* nombre de slots
*/
private static int timeSlotNb;
/**
* Nombre de sous-porteuses
*/
private static int subCarrierNb;
private final Cell cell1; private final Cell cell1;
private final Cell cell2; private final Cell cell2;
private FileOutputStream outputDataFile;
private final List<Cell> cellList; private final List<Cell> cellList;
public AccessPoint(Cell cell1, Cell cell2){ public AccessPoint(Cell cell1, Cell cell2){
@ -38,14 +23,6 @@ public class AccessPoint {
* @param duration * @param duration
*/ */
public void startSimulation(int duration, List<User> users) { public void startSimulation(int duration, List<User> users) {
try{
this.outputDataFile = new FileOutputStream("export" + File.separator + users.size() + ".csv", true);
outputDataFile.write("tick;x;y;user;bandwidth;delay;\n".getBytes());
} catch(IOException e) {
System.err.println(e.getClass().getSimpleName() + " : " + e.getMessage());
System.exit(1);
return;
}
for (int ticks = 0; ticks < duration; ++ticks) { for (int ticks = 0; ticks < duration; ++ticks) {
// Simulation // Simulation
cell1.reset(); cell1.reset();
@ -58,7 +35,8 @@ public class AccessPoint {
computeInterference(); computeInterference();
// traite les données et les enregistre dans un fichier // traite les données et les enregistre dans un fichier
try { try {
analyseData(ticks, users); cell1.analyseData(ticks, users);
cell2.analyseData(ticks, users);
} catch (IOException e) { } catch (IOException e) {
System.out.println("Can't export data"); System.out.println("Can't export data");
} }
@ -92,32 +70,4 @@ public class AccessPoint {
} }
} }
} }
private void analyseData(int tick, List<User> users) throws IOException {
/* double delayAverage = 0.0;
int nbPacketsSent = 0;
for(User u: users){
List<Packets> packets = u.getPacketsSent();
nbPacketsSent += packets.size();
for (Packets p: packets){
delayAverage += p.getDurationSending();
}
}
delayAverage = delayAverage/nbPacketsSent;
for(int i = 0; i < frame.length; i++) {
for(int j = 0; j < frame[i].length; j++) {
ResourceBlock ur = frame[i][j];
if(ur.getUser() != null) {
String data = (tick + ";" + i + ";" + j + ";" + this.users.indexOf(ur.getUser()) + ";" + ur.getBandwidth() + ";" + delayAverage +";\n");
try{
outputDataFile.write(data.getBytes());
}catch(IOException e){
System.err.println("Cannot write the data in the output file");
System.exit(1);
return;
}
}
}
} */
}
} }

View File

@ -2,6 +2,9 @@ package fr.ntr;
import fr.ntr.scheduler.Scheduler; import fr.ntr.scheduler.Scheduler;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List; import java.util.List;
import java.util.Random; import java.util.Random;
@ -24,10 +27,21 @@ public class Cell {
* Trame * Trame
*/ */
private final ResourceBlock[][] frame; private final ResourceBlock[][] frame;
public Cell(Scheduler scheduler, ResourceBlock[][] frame, List<User> users) { private final FileOutputStream outputDataFile;
public Cell(Scheduler scheduler, ResourceBlock[][] frame, List<User> users, String filename) {
this.users = users; this.users = users;
this.scheduler = scheduler; this.scheduler = scheduler;
this.frame = frame; this.frame = frame;
FileOutputStream output = null;
try{
output = new FileOutputStream(filename, true);
output.write("tick;x;y;user;bandwidth;delay;\n".getBytes());
} catch(IOException e) {
System.err.println(e.getClass().getSimpleName() + " : " + e.getMessage());
System.exit(1);
}
this.outputDataFile = output;
} }
public void updateBandwidth(int ticks) { public void updateBandwidth(int ticks) {
@ -57,6 +71,34 @@ public class Cell {
scheduler.scheduling(tick); scheduler.scheduling(tick);
} }
public void analyseData(int tick, List<User> users) throws IOException {
double delayAverage = 0.0;
int nbPacketsSent = 0;
for(User u: users){
List<Packets> packets = u.getPacketsSent();
nbPacketsSent += packets.size();
for (Packets p: packets){
delayAverage += p.getDurationSending();
}
}
delayAverage = delayAverage/nbPacketsSent;
for(int i = 0; i < frame.length; i++) {
for(int j = 0; j < frame[i].length; j++) {
ResourceBlock ur = frame[i][j];
if(ur.getUser() != null) {
String data = (tick + ";" + i + ";" + j + ";" + this.users.indexOf(ur.getUser()) + ";" + ur.getBandwidth() + ";" + delayAverage +";\n");
try{
outputDataFile.write(data.getBytes());
}catch(IOException e){
System.err.println("Cannot write the data in the output file");
System.exit(1);
return;
}
}
}
}
}
public ResourceBlock[][] getFrame() { public ResourceBlock[][] getFrame() {
return frame; return frame;
} }

View File

@ -59,8 +59,8 @@ public class Main {
Scheduler schedulerCell1 = new RoundRobin(frame, users); Scheduler schedulerCell1 = new RoundRobin(frame, users);
Scheduler schedulerCell2 = new RoundRobin(frame, users); Scheduler schedulerCell2 = new RoundRobin(frame, users);
Cell cell1 = new Cell(schedulerCell1, frame, users); Cell cell1 = new Cell(schedulerCell1, frame, users, "export" + File.separator + users.size() + "_cell1" + ".csv");
Cell cell2 = new Cell(schedulerCell2, frame, users); Cell cell2 = new Cell(schedulerCell2, frame, users, "export" + File.separator + users.size() + "_cell2" + ".csv");
AccessPoint accessPoint = new AccessPoint(cell1, cell2); AccessPoint accessPoint = new AccessPoint(cell1, cell2);
executor.submit(() -> accessPoint.startSimulation(numberOfTicks, users)); executor.submit(() -> accessPoint.startSimulation(numberOfTicks, users));
} }