init
This commit is contained in:
@@ -0,0 +1,97 @@
|
||||
package org.cloudbus.cloudsim;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.FileReader;
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
* The Class UtilizationModelPlanetLab.
|
||||
*/
|
||||
public class UtilizationModelPlanetLabInMemory implements UtilizationModel {
|
||||
|
||||
/** The scheduling interval. */
|
||||
private double schedulingInterval;
|
||||
|
||||
/** The data (5 min * 288 = 24 hours). */
|
||||
private final double[] data;
|
||||
|
||||
/**
|
||||
* Instantiates a new utilization model PlanetLab.
|
||||
*
|
||||
* @param inputPath the input path
|
||||
* @throws NumberFormatException the number format exception
|
||||
* @throws IOException Signals that an I/O exception has occurred.
|
||||
*/
|
||||
public UtilizationModelPlanetLabInMemory(String inputPath, double schedulingInterval)
|
||||
throws NumberFormatException,
|
||||
IOException {
|
||||
data = new double[289];
|
||||
setSchedulingInterval(schedulingInterval);
|
||||
BufferedReader input = new BufferedReader(new FileReader(inputPath));
|
||||
int n = data.length;
|
||||
for (int i = 0; i < n - 1; i++) {
|
||||
data[i] = Integer.valueOf(input.readLine()) / 100.0;
|
||||
}
|
||||
data[n - 1] = data[n - 2];
|
||||
input.close();
|
||||
}
|
||||
|
||||
/**
|
||||
* Instantiates a new utilization model PlanetLab with variable data samples.
|
||||
*
|
||||
* @param inputPath the input path
|
||||
* @param dataSamples number of samples in the file
|
||||
* @throws NumberFormatException the number format exception
|
||||
* @throws IOException Signals that an I/O exception has occurred.
|
||||
*/
|
||||
public UtilizationModelPlanetLabInMemory(String inputPath, double schedulingInterval, int dataSamples)
|
||||
throws NumberFormatException,
|
||||
IOException {
|
||||
setSchedulingInterval(schedulingInterval);
|
||||
data = new double[dataSamples];
|
||||
BufferedReader input = new BufferedReader(new FileReader(inputPath));
|
||||
int n = data.length;
|
||||
for (int i = 0; i < n - 1; i++) {
|
||||
data[i] = Integer.valueOf(input.readLine()) / 100.0;
|
||||
}
|
||||
data[n - 1] = data[n - 2];
|
||||
input.close();
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
* @see cloudsim.power.UtilizationModel#getUtilization(double)
|
||||
*/
|
||||
@Override
|
||||
public double getUtilization(double time) {
|
||||
if (time % getSchedulingInterval() == 0) {
|
||||
return data[(int) time / (int) getSchedulingInterval()];
|
||||
}
|
||||
int time1 = (int) Math.floor(time / getSchedulingInterval());
|
||||
int time2 = (int) Math.ceil(time / getSchedulingInterval());
|
||||
double utilization1 = data[time1];
|
||||
double utilization2 = data[time2];
|
||||
double delta = (utilization2 - utilization1) / ((time2 - time1) * getSchedulingInterval());
|
||||
double utilization = utilization1 + delta * (time - time1 * getSchedulingInterval());
|
||||
return utilization;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the scheduling interval.
|
||||
*
|
||||
* @param schedulingInterval the new scheduling interval
|
||||
*/
|
||||
public void setSchedulingInterval(double schedulingInterval) {
|
||||
this.schedulingInterval = schedulingInterval;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the scheduling interval.
|
||||
*
|
||||
* @return the scheduling interval
|
||||
*/
|
||||
public double getSchedulingInterval() {
|
||||
return schedulingInterval;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user