/* * Title: CloudSim Toolkit * Description: CloudSim (Cloud Simulation) Toolkit for Modeling and Simulation of Clouds * Licence: GPL - http://www.gnu.org/copyleft/gpl.html * * Copyright (c) 2009-2012, The University of Melbourne, Australia */ package org.cloudbus.cloudsim; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.util.HashMap; import java.util.Map; import java.util.Random; /** * The UtilizationModelStochastic class implements a model, according to which a Cloudlet generates * random CPU utilization every time frame. * * @author Anton Beloglazov * @since CloudSim Toolkit 2.0 */ public class UtilizationModelStochastic implements UtilizationModel { /** The random generator. */ private Random randomGenerator; /** The history. */ private Map<Double, Double> history; /** * Instantiates a new utilization model stochastic. */ public UtilizationModelStochastic() { setHistory(new HashMap<Double, Double>()); setRandomGenerator(new Random()); } /** * Instantiates a new utilization model stochastic. * * @param seed the seed */ public UtilizationModelStochastic(long seed) { setHistory(new HashMap<Double, Double>()); setRandomGenerator(new Random(seed)); } /* * (non-Javadoc) * @see cloudsim.power.UtilizationModel#getUtilization(double) */ @Override public double getUtilization(double time) { if (getHistory().containsKey(time)) { return getHistory().get(time); } double utilization = getRandomGenerator().nextDouble(); getHistory().put(time, utilization); return utilization; } /** * Gets the history. * * @return the history */ protected Map<Double, Double> getHistory() { return history; } /** * Sets the history. * * @param history the history */ protected void setHistory(Map<Double, Double> history) { this.history = history; } /** * Save history. * * @param filename the filename * @throws Exception the exception */ public void saveHistory(String filename) throws Exception { FileOutputStream fos = new FileOutputStream(filename); ObjectOutputStream oos = new ObjectOutputStream(fos); oos.writeObject(getHistory()); oos.close(); } /** * Load history. * * @param filename the filename * @throws Exception the exception */ @SuppressWarnings("unchecked") public void loadHistory(String filename) throws Exception { FileInputStream fis = new FileInputStream(filename); ObjectInputStream ois = new ObjectInputStream(fis); setHistory((Map<Double, Double>) ois.readObject()); ois.close(); } /** * Sets the random generator. * * @param randomGenerator the new random generator */ public void setRandomGenerator(Random randomGenerator) { this.randomGenerator = randomGenerator; } /** * Gets the random generator. * * @return the random generator */ public Random getRandomGenerator() { return randomGenerator; } }