Temel olarak, soru bir bankada beklemede bekleyen insanlar için bir simülasyon oluşturmaktır. Ortalama bekleme süresi, ortalama dakika sayısı, ortalama en uzun bekleme süresi vb. Gibi belirli kriterler vardır. Aynı zamanda programımı her seferinde 1000 kez (for döngüsünü kullanarak) 3 kez çalıştırmayı ister. Sorun şu ki, kodu her çalıştırdığımda, cevaplar bir sebepten dolayı toplanıyor ve nedenini bilmiyorum. Örneğin, son çalıştırmada, simülasyonun kaç kez çalıştırılacağı, 1000 kez olmalıydı, bunun yerine, önceki tüm koşuları bir araya getirdi ve 3000 kez verdi.Programımı her çalıştırdığımda neden sonuncuya ekleniyor
Ayrıca, while döngüsü dışındaki tüm değişkenler (ortalamaWaitingTime, averageSimulationTime ... vb) bana yanlış cevaplar veriyor. Örneğin, ortalama bekleme süresi için bekleme süresinin aynı değerini eklemeye devam etmesidir. Nedenini anlayamıyorum.
public class QueueSimulation {
public static void main(String[] args) {
Queue<Customer> q = new LinkedList<Customer>();
int numServed = 0;
int averageNumServed = 0;
int waitingTime = 0;
int maxWaitingTime = 0;
int averageLongestWaitingTime = 0;
int totalWaitingTime = 0;
double averageWaitingTime = 0;
int maxQueueSize = 0;
int timeDone = 0;
int totalSimulationTime = 0;
int averageSimulationTime = 0;
int numSimulationRan = 0;
Random randomGenerator = new Random();
int time = 0;
int processingTime = 0;
int totalProcessingTime = 0;
for (int i = 0; i < 1000; i++) {
double arrivalRate = 0.2;
int maxProcessingTime = 5;
while (time < 8 * 60) {
if (Math.random() < 0.2) {
System.out.println("A new customer arrives at time " + time);
processingTime = randomGenerator.nextInt(maxProcessingTime);
totalProcessingTime += processingTime;
Customer c = new Customer(time, processingTime);
q.add(c);
if (q.size() > maxQueueSize)
maxQueueSize = q.size();
}
if (waitingTime > maxWaitingTime)
maxWaitingTime = waitingTime;
averageLongestWaitingTime += maxWaitingTime;
// serve the next customer
if (time > timeDone) // service is available
if (!q.isEmpty()) {
Customer c = q.remove();
timeDone = time + c.getProcessingTime();
// calculate the waiting time of this customer
waitingTime = time - c.getArrivalTime();
// update total waiting time of all customers
totalWaitingTime += waitingTime;
// service this customer
numServed++;
}
time++;
if (time > 8 * 60)
while (!q.isEmpty()) {
Customer c = q.remove();
timeDone = time + c.getProcessingTime();
// calculate the waiting time of this customer
waitingTime = time - c.getArrivalTime();
// update total waiting time of all customers
totalWaitingTime += waitingTime;
// service this customer
numServed++;
}
}
averageWaitingTime += (totalWaitingTime/numServed);
totalSimulationTime = timeDone;
averageSimulationTime += totalSimulationTime;
averageNumServed += numServed;
numSimulationRan += 1;
}
System.out.println();
System.out.println("Average waiting time per customer: " + (double) averageWaitingTime/1000);
System.out.println("Average longest waiting time: " + (double) averageLongestWaitingTime/1000);
System.out.println("Average number of minutes: " + (double) averageSimulationTime/1000);
System.out.println("Longest waiting time: " + maxWaitingTime);
System.out.println("Average number of customers " + (double) averageNumServed/1000);
System.out.println("Number of times the simulation ran: " + numSimulationRan);
for (int j = 0; j < 1000; j++) {
double arrivalRate = 0.5;
int maxProcessingTime = 3;
while (time < 8 * 60) {
if (Math.random() < 0.5) {
System.out.println("A new customer arrives at time " + time);
processingTime = randomGenerator.nextInt(maxProcessingTime);
totalProcessingTime += processingTime;
Customer c = new Customer(time, processingTime);
q.add(c);
if (q.size() > maxQueueSize)
maxQueueSize = q.size();
}
if (waitingTime > maxWaitingTime)
maxWaitingTime = waitingTime;
averageLongestWaitingTime += maxWaitingTime;
// serve the next customer
if (time > timeDone) // service is available
if (!q.isEmpty()) {
Customer c = q.remove();
timeDone = time + c.getProcessingTime();
// calculate the waiting time of this customer
waitingTime = time - c.getArrivalTime();
// update total waiting time of all customers
totalWaitingTime += waitingTime;
// service this customer
numServed++;
}
time++;
if (time > 8 * 60)
while (!q.isEmpty()) {
Customer c = q.remove();
timeDone = time + c.getProcessingTime();
// calculate the waiting time of this customer
waitingTime = time - c.getArrivalTime();
// update total waiting time of all customers
totalWaitingTime += waitingTime;
// service this customer
numServed++;
}
}
averageWaitingTime += (totalWaitingTime/numServed);
totalSimulationTime = timeDone;
averageSimulationTime += totalSimulationTime;
averageNumServed += numServed;
numSimulationRan += 1;
}
System.out.println();
System.out.println("Average waiting time per customer: " + (double) averageWaitingTime/1000);
System.out.println("Average longest waiting time: " + (double) averageLongestWaitingTime/1000);
System.out.println("Average number of minutes: " + (double) averageSimulationTime/1000);
System.out.println("Longest waiting time: " + maxWaitingTime);
System.out.println("Average number of customers " + (double) averageNumServed/1000);
System.out.println("Number of times the simulation ran: " + numSimulationRan);
for (int k = 0; k < 1000; k++) {
double arrivalRate = 0.68;
int maxProcessingTime = 4;
while (time < 8 * 60) {
if (Math.random() < 0.68) {
System.out.println("A new customer arrives at time " + time);
processingTime = randomGenerator.nextInt(maxProcessingTime);
totalProcessingTime += processingTime;
Customer c = new Customer(time, processingTime);
q.add(c);
if (q.size() > maxQueueSize)
maxQueueSize = q.size();
}
if (waitingTime > maxWaitingTime)
maxWaitingTime = waitingTime;
averageLongestWaitingTime += maxWaitingTime;
// serve the next customer
if (time > timeDone) // service is available
if (!q.isEmpty()) {
Customer c = q.remove();
timeDone = time + c.getProcessingTime();
// calculate the waiting time of this customer
waitingTime = time - c.getArrivalTime();
// update total waiting time of all customers
totalWaitingTime += waitingTime;
// service this customer
numServed++;
}
time++;
if (time > 8 * 60)
while (!q.isEmpty()) {
Customer c = q.remove();
timeDone = time + c.getProcessingTime();
// calculate the waiting time of this customer
waitingTime = time - c.getArrivalTime();
// update total waiting time of all customers
totalWaitingTime += waitingTime;
// service this customer
numServed++;
}
}
averageWaitingTime += (totalWaitingTime/numServed);
totalSimulationTime = timeDone;
averageSimulationTime += totalSimulationTime;
averageNumServed += numServed;
numSimulationRan += 1;
}
System.out.println();
System.out.println("Average waiting time per customer: " + (double) averageWaitingTime/1000);
System.out.println("Average longest waiting time: " + (double) averageLongestWaitingTime/1000);
System.out.println("Average number of minutes: " + (double) averageSimulationTime/1000);
System.out.println("Longest waiting time: " + maxWaitingTime);
System.out.println("Average number of customers " + (double) averageNumServed/1000);
System.out.println("Number of times the simulation ran: " + numSimulationRan);
}
}
Çıktı:
A new customer arrives at time 5
A new customer arrives at time 10
A new customer arrives at time 11
A new customer arrives at time 12
A new customer arrives at time 25
A new customer arrives at time 28
A new customer arrives at time 31
A new customer arrives at time 45
A new customer arrives at time 48
A new customer arrives at time 51
A new customer arrives at time 59
A new customer arrives at time 64
A new customer arrives at time 68
A new customer arrives at time 86
A new customer arrives at time 100
A new customer arrives at time 106
A new customer arrives at time 108
A new customer arrives at time 113
A new customer arrives at time 115
A new customer arrives at time 120
A new customer arrives at time 124
A new customer arrives at time 125
A new customer arrives at time 126
A new customer arrives at time 132
A new customer arrives at time 137
A new customer arrives at time 153
A new customer arrives at time 156
A new customer arrives at time 164
A new customer arrives at time 201
A new customer arrives at time 206
A new customer arrives at time 208
A new customer arrives at time 219
A new customer arrives at time 226
A new customer arrives at time 233
A new customer arrives at time 234
A new customer arrives at time 237
A new customer arrives at time 242
A new customer arrives at time 246
A new customer arrives at time 247
A new customer arrives at time 251
A new customer arrives at time 262
A new customer arrives at time 271
A new customer arrives at time 276
A new customer arrives at time 277
A new customer arrives at time 282
A new customer arrives at time 285
A new customer arrives at time 287
A new customer arrives at time 292
A new customer arrives at time 296
A new customer arrives at time 298
A new customer arrives at time 318
A new customer arrives at time 319
A new customer arrives at time 327
A new customer arrives at time 336
A new customer arrives at time 337
A new customer arrives at time 338
A new customer arrives at time 346
A new customer arrives at time 355
A new customer arrives at time 356
A new customer arrives at time 358
A new customer arrives at time 362
A new customer arrives at time 363
A new customer arrives at time 366
A new customer arrives at time 374
A new customer arrives at time 379
A new customer arrives at time 380
A new customer arrives at time 384
A new customer arrives at time 389
A new customer arrives at time 400
A new customer arrives at time 407
A new customer arrives at time 416
A new customer arrives at time 418
A new customer arrives at time 424
A new customer arrives at time 427
A new customer arrives at time 433
A new customer arrives at time 436
A new customer arrives at time 437
A new customer arrives at time 438
A new customer arrives at time 446
A new customer arrives at time 454
A new customer arrives at time 466
A new customer arrives at time 469
A new customer arrives at time 471
Average waiting time per customer: 1.0
Average longest waiting time: 2.714
Average number of minutes: 475.0
Longest waiting time: 8
Average number of customers 83.0
Number of times the simulation ran: 1000
Average waiting time per customer: 2.0
Average longest waiting time: 2.714
Average number of minutes: 950.0
Longest waiting time: 8
Average number of customers 166.0
Number of times the simulation ran: 2000
Average waiting time per customer: 3.0
Average longest waiting time: 2.714
Average number of minutes: 1425.0
Longest waiting time: 8
Average number of customers 249.0
Number of times the simulation ran: 3000
Sorunuzu anlamıyorum. Lütfen koşularınızın çıktısını gösterin ve 'yanlış' ile ne demek istediğinizi açıklayın. – betseyb
İşte başlıyorsunuz. Bunun için üzgünüm :) – user6168685