Merge branch 'master' into ajout_cellule

This commit is contained in:
Quentin Legot 2023-04-04 09:52:02 +02:00
commit 3b012adf61
3 changed files with 13 additions and 23 deletions

View File

@ -1,6 +1,7 @@
package fr.ntr.scheduler; package fr.ntr.scheduler;
import java.util.List; import java.util.List;
import fr.ntr.Cell;
import fr.ntr.ResourceBlock; import fr.ntr.ResourceBlock;
import fr.ntr.User; import fr.ntr.User;
@ -9,7 +10,7 @@ public class MaxSNR extends Scheduler {
private final List<User> users; private final List<User> users;
private final ResourceBlock[][] frame; private final ResourceBlock[][] frame;
public MaxSNR( ResourceBlock[][] frame, List<User> users) { public MaxSNR(ResourceBlock[][] frame, List<User> users) {
this.frame = frame; this.frame = frame;
this.users = users; this.users = users;
} }
@ -17,8 +18,8 @@ public class MaxSNR extends Scheduler {
@Override @Override
public void scheduling(int ticks) { public void scheduling(int ticks) {
User userMax; User userMax;
for(int ts = 0; ts < 2; ts++){ for(int ts = 0; ts < Cell.getTimeSlotNb(); ts++){
for(int sp = 0; sp < 100; sp++){ for(int sp = 0; sp < Cell.getSubCarrierNb(); sp++){
userMax = userSelection(ts, sp); userMax = userSelection(ts, sp);
allocateRessource(userMax, frame, ts, sp, ticks); allocateRessource(userMax, frame, ts, sp, ticks);
} }
@ -34,12 +35,11 @@ public class MaxSNR extends Scheduler {
private User userSelection(int ts, int sp) { private User userSelection(int ts, int sp) {
double maxSnr = 0.0; double maxSnr = 0.0;
User userMax = null; User userMax = null;
for(User u: users){ for(User u: users) {
if(!u.getPacketsToSend().isEmpty()) { if (!u.getPacketsToSend().isEmpty() && (maxSnr < u.getBandwidthTable()[ts][sp])) {
if (maxSnr < u.getBandwidthTable()[ts][sp]) {
maxSnr = u.getBandwidthTable()[ts][sp]; maxSnr = u.getBandwidthTable()[ts][sp];
userMax = u; userMax = u;
}
} }
} }
return userMax; return userMax;

View File

@ -20,7 +20,7 @@ public class ProportionalFair extends Scheduler {
@Override @Override
public void scheduling(int ticks) { public void scheduling(int ticks) {
ArrayList<Double> averageBandwiths = new ArrayList<Double>(); ArrayList<Double> averageBandwiths = new ArrayList<>();
for(User u : users){ for(User u : users){
double avg = 0d; double avg = 0d;
double[][] bandwidthTable = u.getBandwidthTable(); double[][] bandwidthTable = u.getBandwidthTable();

View File

@ -16,7 +16,6 @@ public abstract class Scheduler {
protected void allocateRessource(User userMax, ResourceBlock[][] frame, int ts, int sp, int ticks) { protected void allocateRessource(User userMax, ResourceBlock[][] frame, int ts, int sp, int ticks) {
if (userMax != null && !userMax.getPacketsToSend().isEmpty()) { if (userMax != null && !userMax.getPacketsToSend().isEmpty()) {
Packets p = userMax.getPacketsToSend().get(userMax.getPacketsToSend().size()-1); Packets p = userMax.getPacketsToSend().get(userMax.getPacketsToSend().size()-1);
if(p.getBitsNumberRemaining() >= 0){
p.decreaseBitsNumberRemaining((int) userMax.getBandwidthTable()[ts][sp]); p.decreaseBitsNumberRemaining((int) userMax.getBandwidthTable()[ts][sp]);
if(p.getBitsNumberRemaining() <= 0) { if(p.getBitsNumberRemaining() <= 0) {
if(ticks == 0){ if(ticks == 0){
@ -27,15 +26,6 @@ public abstract class Scheduler {
userMax.getPacketsSent().add(p); userMax.getPacketsSent().add(p);
userMax.getPacketsToSend().remove(p); userMax.getPacketsToSend().remove(p);
} }
} else {
if(ticks == 0){
p.setDurationSending(1);
}else {
p.setDurationSending(ticks);
}
userMax.getPacketsSent().add(p);
userMax.getPacketsToSend().remove(p);
}
frame[ts][sp].setUser(userMax); frame[ts][sp].setUser(userMax);
frame[ts][sp].setBandwidth(userMax.getBandwidthTable()[ts][sp]); frame[ts][sp].setBandwidth(userMax.getBandwidthTable()[ts][sp]);
} }