From ec7f265940e3405a5deba9f659b365ca1552d520 Mon Sep 17 00:00:00 2001 From: Remi Boure Date: Wed, 5 Apr 2023 13:22:45 +0200 Subject: [PATCH] =?UTF-8?q?Copie=20utilisateurs=20cell1=20vers=20cell2=20p?= =?UTF-8?q?our=20les=20interf=C3=A9rences?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/fr/ntr/AccessPoint.java | 4 +-- src/main/java/fr/ntr/Main.java | 30 +++++++++++++++---- src/main/java/fr/ntr/scheduler/Scheduler.java | 2 +- 3 files changed, 26 insertions(+), 10 deletions(-) diff --git a/src/main/java/fr/ntr/AccessPoint.java b/src/main/java/fr/ntr/AccessPoint.java index aac6f42..cb13e64 100644 --- a/src/main/java/fr/ntr/AccessPoint.java +++ b/src/main/java/fr/ntr/AccessPoint.java @@ -27,12 +27,10 @@ public class AccessPoint { cell2.updateBandwidth(ticks); cell1.schedule(ticks); cell2.schedule(ticks); - // simulation des interférences - // computeInterference(); // traite les données et les enregistre dans un fichier try { cell1.analyseData(ticks); - cell2.analyseData(ticks); + //cell2.analyseData(ticks); } catch (IOException e) { System.out.println("Can't export data"); } diff --git a/src/main/java/fr/ntr/Main.java b/src/main/java/fr/ntr/Main.java index cfbcd6b..44989d9 100644 --- a/src/main/java/fr/ntr/Main.java +++ b/src/main/java/fr/ntr/Main.java @@ -10,6 +10,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Objects; +import java.util.Random; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; @@ -71,6 +72,19 @@ public class Main { //génération des utilisateurs List usersCell1 = generateUsers(i, timeSlotNb, subCarrierNb); List usersCell2 = generateUsers(i, timeSlotNb, subCarrierNb); + //copie de 1/4 des utilisateurs de cell1 vers cell2 + for(int j = 0; j < i/4; j++){ + Random r = new Random(); + int idxCopy = r.nextInt(i); + User copiedUser = usersCell1.get(idxCopy); + // On vérifie qu'on ne l'a pas déjà copié dans cell2 + while(usersCell2.contains(copiedUser)){ + r = new Random(); + idxCopy = r.nextInt(i); + copiedUser = usersCell1.get(idxCopy); + } + usersCell2.set(idxCopy, copiedUser); + } //génération des trames ResourceBlock[][] frame1 = new ResourceBlock[timeSlotNb][subCarrierNb]; @@ -83,7 +97,7 @@ public class Main { try { //préparation à exportation des données de chaque cellule - FileOutputStream output = new FileOutputStream("export" + File.separator + (usersCell1.size()+usersCell2.size()) + ".csv", true); + FileOutputStream output = new FileOutputStream("export" + File.separator + (usersCell1.size()) + ".csv", true); output.write("tick;x;y;user;bandwidth;delay;cell;\n".getBytes()); //création des cellules @@ -118,12 +132,16 @@ public class Main { private static List generateUsers(int nbUsers, int timeSlotNb, int subCarrierNb) { List users = new ArrayList<>(); // 2 groupes d'utilisateurs, proches et éloignés - double[] distance = { 150d, 500d }; - for (double v : distance) { - for (int j = 0; j < nbUsers; j++) { - User user = new User(v, timeSlotNb, subCarrierNb); - users.add(user); + int half = nbUsers / 2; + for (int i = 0; i < nbUsers; i++) { + User user; + if(i >= half ){ + user = new User(500d, timeSlotNb, subCarrierNb); } + else { + user = new User(150d, timeSlotNb, subCarrierNb); + } + users.add(user); } return users; } diff --git a/src/main/java/fr/ntr/scheduler/Scheduler.java b/src/main/java/fr/ntr/scheduler/Scheduler.java index 799b911..9ce246f 100644 --- a/src/main/java/fr/ntr/scheduler/Scheduler.java +++ b/src/main/java/fr/ntr/scheduler/Scheduler.java @@ -16,7 +16,7 @@ public abstract class Scheduler { User user2 = rb2.getUser(); if ((userMax != null || user2 != null) && userMax == user2) { double bandwidth1 = rb1.getBandwidth(); - double bandwidth2 = rb2.getBandwidth(); + //double bandwidth2 = rb2.getBandwidth(); //User proche if (userMax.getDistance() < 200d) { rb1.getUser().getBandwidthTable()[ts][sp] = bandwidth1 / 2;