add space and maj reuse3
This commit is contained in:
parent
6b816534d7
commit
f93b1c4c22
@ -9,7 +9,7 @@ public class AccessPoint {
|
||||
private final Cell cell1;
|
||||
private final Cell cell2;
|
||||
|
||||
public AccessPoint(Cell cell1, Cell cell2){
|
||||
public AccessPoint (Cell cell1, Cell cell2){
|
||||
this.cell1 = cell1;
|
||||
this.cell2 = cell2;
|
||||
}
|
||||
@ -18,7 +18,7 @@ public class AccessPoint {
|
||||
* Lancer la simulation
|
||||
* @param duration
|
||||
*/
|
||||
public void startSimulation(int duration) {
|
||||
public void startSimulation (int duration) {
|
||||
for (int ticks = 0; ticks < duration; ++ticks) {
|
||||
// Simulation
|
||||
cell1.reset();
|
||||
@ -39,31 +39,4 @@ public class AccessPoint {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public void computeInterference() {
|
||||
ResourceBlock[][] frameCell1 = cell1.getFrame();
|
||||
ResourceBlock[][] frameCell2 = cell2.getFrame();
|
||||
|
||||
for (int k = 0; k < frameCell1.length; k++) {
|
||||
for (int l = 0; l < frameCell1[k].length; l++) {
|
||||
//interférences si les deux cellules parlent au même UE sur le même time slot
|
||||
User user1 = frameCell1[k][l].getUser();
|
||||
User user2 = frameCell2[k][l].getUser();
|
||||
if ((user1 != null || user2 != null) && user1 == user2) {
|
||||
double bandwidth1 = frameCell1[k][l].getBandwidth();
|
||||
double bandwidth2 = frameCell2[k][l].getBandwidth();
|
||||
//User proche
|
||||
if (user1.getDistance() < 200d) {
|
||||
frameCell1[k][l].getUser().getBandwidthTable()[k][l] = bandwidth1 / 2;
|
||||
frameCell2[k][l].getUser().getBandwidthTable()[k][l] = bandwidth2 / 2;
|
||||
}
|
||||
//User loin
|
||||
else {
|
||||
frameCell1[k][l].getUser().getBandwidthTable()[k][l] = bandwidth1 / 4;
|
||||
frameCell2[k][l].getUser().getBandwidthTable()[k][l] = bandwidth2 / 4;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -16,13 +16,13 @@ import java.util.concurrent.TimeUnit;
|
||||
|
||||
public class Main {
|
||||
|
||||
public static void main(String[] args) {
|
||||
if(args.length == 2) {
|
||||
public static void main (String[] args) {
|
||||
if (args.length == 2) {
|
||||
|
||||
int numberOfTicks; // Nombre de ticks de la simulation -> durée de la simulation
|
||||
int maximumLoad; // Nombre maximal d'utilisateurs dans le système
|
||||
|
||||
//TODO make this cleanly
|
||||
|
||||
boolean isReuse3 = false; //reuse 1 par défaut sinon reuse 3
|
||||
int nbcell = 2; //nombre de cellules que l'on va utiliser
|
||||
|
||||
@ -39,11 +39,19 @@ public class Main {
|
||||
|
||||
//instancie nombre de time slots et sous-porteuses
|
||||
int timeSlotNb = 2;
|
||||
int subCarrierNb = 100;
|
||||
//nb subcarrier si reuse1 ou reuse3
|
||||
int subCarrierNb;
|
||||
if (isReuse3) {
|
||||
subCarrierNb = 100 / nbcell;
|
||||
}
|
||||
else{
|
||||
subCarrierNb = 100;
|
||||
}
|
||||
|
||||
|
||||
//préparation pour exportation des données
|
||||
File folder = new File("export");
|
||||
if(!folder.exists() && !folder.mkdir()) {
|
||||
if (!folder.exists() && !folder.mkdir()) {
|
||||
System.err.println("Cannot create export folder");
|
||||
System.exit(1);
|
||||
}
|
||||
@ -59,7 +67,7 @@ public class Main {
|
||||
Cell.setTimeSlotNb(timeSlotNb);
|
||||
Cell.setSubCarrierNb(subCarrierNb);
|
||||
ExecutorService executor = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors());
|
||||
for(int i = 2; i <= maximumLoad; i += 2) {
|
||||
for (int i = 2; i <= maximumLoad; i += 2) {
|
||||
//génération des utilisateurs
|
||||
List<User> usersCell1 = generateUsers(i, timeSlotNb, subCarrierNb);
|
||||
List<User> usersCell2 = generateUsers(i, timeSlotNb, subCarrierNb);
|
||||
@ -86,7 +94,7 @@ public class Main {
|
||||
AccessPoint accessPoint = new AccessPoint(cell1, cell2);
|
||||
executor.submit(() -> accessPoint.startSimulation(numberOfTicks));
|
||||
}
|
||||
catch(IOException e) {
|
||||
catch (IOException e) {
|
||||
System.err.println(e.getClass().getSimpleName() + " : " + e.getMessage());
|
||||
System.exit(1);
|
||||
}
|
||||
|
@ -26,13 +26,6 @@ public class MaxSNR extends Scheduler {
|
||||
allocateRessource(userMax, myFrame, neighborFrame, ts, sp, ticks);
|
||||
}
|
||||
}
|
||||
|
||||
for(int ts = 0; ts < 2; ts++){
|
||||
for(int sp = 0; sp < 100; sp++){
|
||||
userMax = userSelection(ts, sp);
|
||||
allocateRessource(userMax, myFrame, neighborFrame, ts, sp, ticks);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@ -48,7 +41,6 @@ public class MaxSNR extends Scheduler {
|
||||
if (!u.getPacketsToSend().isEmpty() && (maxSnr < u.getBandwidthTable()[ts][sp])) {
|
||||
maxSnr = u.getBandwidthTable()[ts][sp];
|
||||
userMax = u;
|
||||
|
||||
}
|
||||
}
|
||||
return userMax;
|
||||
|
@ -6,11 +6,7 @@ import fr.ntr.User;
|
||||
|
||||
public abstract class Scheduler {
|
||||
|
||||
/**
|
||||
* Entry
|
||||
* Rempli la trame avec les utilisateurs
|
||||
* Return
|
||||
*/
|
||||
|
||||
public abstract void scheduling(int ticks);
|
||||
|
||||
protected void allocateRessource(User userMax, ResourceBlock[][] myFrame, ResourceBlock[][] neighborFrame, int ts, int sp, int ticks) {
|
||||
@ -24,12 +20,12 @@ public abstract class Scheduler {
|
||||
//User proche
|
||||
if (userMax.getDistance() < 200d) {
|
||||
rb1.getUser().getBandwidthTable()[ts][sp] = bandwidth1 / 2;
|
||||
rb2.getUser().getBandwidthTable()[ts][sp] = bandwidth2 / 2;
|
||||
//rb2.getUser().getBandwidthTable()[ts][sp] = bandwidth2 / 2;
|
||||
}
|
||||
//User loin
|
||||
else {
|
||||
rb1.getUser().getBandwidthTable()[ts][sp] = bandwidth1 / 4;
|
||||
rb2.getUser().getBandwidthTable()[ts][sp] = bandwidth2 / 4;
|
||||
//rb2.getUser().getBandwidthTable()[ts][sp] = bandwidth2 / 4;
|
||||
}
|
||||
}
|
||||
Packets p = userMax.getPacketsToSend().get(userMax.getPacketsToSend().size()-1);
|
||||
|
Reference in New Issue
Block a user