diff --git a/src/main/java/fr/ntr/AccessPoint.java b/src/main/java/fr/ntr/AccessPoint.java index ce47e14..9b943d1 100644 --- a/src/main/java/fr/ntr/AccessPoint.java +++ b/src/main/java/fr/ntr/AccessPoint.java @@ -2,6 +2,7 @@ package fr.ntr; import java.util.ArrayList; import java.util.List; +import java.util.Random; import fr.ntr.scheduler.Scheduler; @@ -24,26 +25,58 @@ public class AccessPoint { * reste pour la prochaine source */ private double leftForNextSource; + /** + * portée minimum et maximum de l'antenne + */ + private final double min, max; - public AccessPoint(Scheduler scheduler) { + public AccessPoint(Scheduler scheduler, double min, double max) { + this.min = min; + this.max = max; this.users = new ArrayList(); this.scheduler = scheduler; this.frame = new ResourceBlock[timeSlotNb][subCarrierNb]; } - public void startSimulation(int duration){ - + /** + * Lancer la simulation + * @param duration + */ + public void startSimulation(int duration, int nbUsers){ + for(int ticks = 0; ticks < duration; ++ticks){ + // Simulation + reset(); + init(nbUsers); + schedule(); + // traite les données et les enregistre dans un fichier + analyseData(); + } } /** * Génération du débit et des paquets */ - private void init(){ - + private void init(int nbUsers){ + for(int i = 0; i < nbUsers; i++){ + Random random = new Random(); + double randomDist = this.min + random.nextDouble() * (this.max - this.min); + User user = new User(randomDist); + user.generateBandwidth(); + user.createPackets(); + this.users.add(user); + } } - private void dataAnalysis(){ + private void schedule(){ + + } + + private void analyseData(){ + + } + + private void plotData(){ } diff --git a/src/main/java/fr/ntr/User.java b/src/main/java/fr/ntr/User.java index ad45b57..9e30065 100644 --- a/src/main/java/fr/ntr/User.java +++ b/src/main/java/fr/ntr/User.java @@ -19,7 +19,12 @@ public class User { } public void generateBandwidth() { - + double X = Math.random(); + double h = 8 * Math.sqrt(-2 * Math.log(1 - X)); + double gain = h * Math.pow(10, X*8/10) * Math.pow(1/this.distance, 3.5); + double spectralEfficacity = (43 * gain)/(15000*(-174)); + double mkn = Math.log1p(spectralEfficacity); + this.bandwidthTable[][] = mkn; // Voir comment remplir le tableau } public void createPackets() {