ProbabilisticRouteGenerator.java
package org.opentrafficsim.core.network.route;
import java.io.Serializable;
import java.util.List;
import org.opentrafficsim.core.distributions.Distribution;
import org.opentrafficsim.core.distributions.Generator;
import org.opentrafficsim.core.distributions.ProbabilityException;
import nl.tudelft.simulation.jstats.streams.StreamInterface;
/**
* Generate one of a set of routes, based on a discrete probability density function.
* <p>
* Copyright (c) 2013-2019 Delft University of Technology, PO Box 5, 2600 AA, Delft, the Netherlands. All rights reserved. <br>
* BSD-style license. See <a href="http://opentrafficsim.org/docs/license.html">OpenTrafficSim License</a>.
* <p>
* $LastChangedDate: 2019-03-26 15:54:58 +0100 (Tue, 26 Mar 2019) $, @version $Revision: 5190 $, by $Author: wjschakel $,
* initial version 20 Mar 2015 <br>
* @author <a href="http://www.tbm.tudelft.nl/averbraeck">Alexander Verbraeck</a>
* @author <a href="http://www.tudelft.nl/pknoppers">Peter Knoppers</a>
*/
public class ProbabilisticRouteGenerator implements Generator<Route>, Serializable
{
/** */
private static final long serialVersionUID = 20150000L;
/** The Distribution from which routes are drawn. */
private final Distribution<Route> distribution;
/**
* Create a new Probabilistic Route Generator.
* @param generators List<Distribution.FrequencyAndObject<Route>>; list of routes and frequencies
* @param stream StreamInterface; the entropy source
* @throws ProbabilityException when the probabilities are invalid
*/
public ProbabilisticRouteGenerator(final List<Distribution.FrequencyAndObject<Route>> generators,
final StreamInterface stream) throws ProbabilityException
{
this.distribution = new Distribution<Route>(generators, stream);
}
/** {@inheritDoc} */
@Override
public final Route draw() throws ProbabilityException
{
return this.distribution.draw();
}
/** {@inheritDoc} */
@Override
public final String toString()
{
return "ProbabilisticRouteGenerator [distribution=" + this.distribution + "]";
}
}