diff --git a/src/main/java/fr/ntr/AccessPoint.java b/src/main/java/fr/ntr/AccessPoint.java index c8955c7..4d31c3e 100644 --- a/src/main/java/fr/ntr/AccessPoint.java +++ b/src/main/java/fr/ntr/AccessPoint.java @@ -80,14 +80,14 @@ public class AccessPoint { private void updateBandwidth(int ticks) { int n = 200; - int timeInterval = 50 + random.nextInt(51); + int timeInterval = Math.max(1, random.nextInt(51)); // avoid div by 0 for(User user : users) { // On régénère le tableau de débits toutes les 50 ms if(ticks % 50 == 0){ user.generateBandwidth(); } - // On régénère les sources toutes les 50-100 ms + // On régénère les sources toutes les 0-50 ms if(ticks % timeInterval == 0){ timeInterval = 50 + random.nextInt(51); n = user.createPackets(n, ticks); diff --git a/src/main/java/fr/ntr/scheduler/MaxSNR.java b/src/main/java/fr/ntr/scheduler/MaxSNR.java index 2d55916..d80b7c1 100644 --- a/src/main/java/fr/ntr/scheduler/MaxSNR.java +++ b/src/main/java/fr/ntr/scheduler/MaxSNR.java @@ -18,16 +18,10 @@ public class MaxSNR extends Scheduler { @Override public void scheduling() { - User userMax = null; for(int ts = 0; ts < 2; ts++){ for(int sp = 0; sp < 100; sp++){ - userMax = selectionUtilisateur(sp, ts, users); - if (userMax.getPacketsToSend().size() != 0) { - userMax.getPacketsSent().add(userMax.getPacketsToSend().get(0)); - userMax.getPacketsToSend().remove(userMax.getPacketsToSend().get(0)); - frame[ts][sp].setUser(userMax); - frame[ts][sp].setBandwidth(userMax.getBandwidthTable()[ts][sp]); - } + User userMax = selectionUtilisateur(sp, ts, users); + allocateRessource(userMax, frame, ts, sp); } } } diff --git a/src/main/java/fr/ntr/scheduler/ProportionalFair.java b/src/main/java/fr/ntr/scheduler/ProportionalFair.java index 4b0c411..7ce759e 100644 --- a/src/main/java/fr/ntr/scheduler/ProportionalFair.java +++ b/src/main/java/fr/ntr/scheduler/ProportionalFair.java @@ -34,12 +34,7 @@ public class ProportionalFair extends Scheduler { for(int ts = 0; ts < 2; ts++){ for(int sp = 0; sp < 100; sp++){ selectedUser = selectionUtilisateur(ts, sp, users, averageBandwiths); - if (selectedUser != null && !selectedUser.getPacketsToSend().isEmpty()) { - selectedUser.getPacketsSent().add(selectedUser.getPacketsToSend().get(0)); - selectedUser.getPacketsToSend().remove(selectedUser.getPacketsToSend().get(0)); - frame[ts][sp].setUser(selectedUser); - frame[ts][sp].setBandwidth(selectedUser.getBandwidthTable()[ts][sp]); - } + allocateRessource(selectedUser, frame, ts, sp); } } } diff --git a/src/main/java/fr/ntr/scheduler/RoundRobin.java b/src/main/java/fr/ntr/scheduler/RoundRobin.java index 4566fbc..db4a3e5 100644 --- a/src/main/java/fr/ntr/scheduler/RoundRobin.java +++ b/src/main/java/fr/ntr/scheduler/RoundRobin.java @@ -36,7 +36,7 @@ public class RoundRobin extends Scheduler { //Pour chaque time slot et sous porteuses for (int Ts = 0; Ts < AccessPoint.getTimeSlotNb(); Ts++) { for(int Sp = 0; Sp < AccessPoint.getSubCarrierNb(); Sp++) { - if (users.get(index).getPacketsToSend().size() != 0) { + if (!users.get(index).getPacketsToSend().isEmpty()) { // on enlève le packet transmis de la liste // TODO Verify sub the packet send need Set packet users.get(index).getPacketsSent().add(users.get(index).getPacketsToSend().get(0)); diff --git a/src/main/java/fr/ntr/scheduler/Scheduler.java b/src/main/java/fr/ntr/scheduler/Scheduler.java index e21432d..e277862 100644 --- a/src/main/java/fr/ntr/scheduler/Scheduler.java +++ b/src/main/java/fr/ntr/scheduler/Scheduler.java @@ -1,5 +1,8 @@ package fr.ntr.scheduler; +import fr.ntr.ResourceBlock; +import fr.ntr.User; + public abstract class Scheduler { /** @@ -8,7 +11,13 @@ public abstract class Scheduler { * Return */ public abstract void scheduling(); - protected void TraitementDonnees() { + protected void allocateRessource(User userMax, ResourceBlock[][] frame, int ts, int sp) { + if (userMax != null && !userMax.getPacketsToSend().isEmpty()) { + userMax.getPacketsSent().add(userMax.getPacketsToSend().get(0)); + userMax.getPacketsToSend().remove(userMax.getPacketsToSend().get(0)); + frame[ts][sp].setUser(userMax); + frame[ts][sp].setBandwidth(userMax.getBandwidthTable()[ts][sp]); + } } }