// Path: src/main/java/net/finmath/experiments/reproduction/ReproductionSimulationExperiment.java
// public enum State {
// 	UNINFECTED,
// 	INFECTED_NOT_INFECTIOUS,
// 	INFECTED_AND_INFECTIOUS,
// 	IMMUNE
// }


import java.awt.Color;
import java.awt.Rectangle;
import java.io.File;
import java.io.IOException;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
import net.finmath.experiments.reproduction.ReproductionSimulationExperiment.StateProbabilities.State;
import net.finmath.plots.GraphStyle;
import net.finmath.plots.Plot2D;
import net.finmath.plots.Plotable2D;
import net.finmath.plots.PlotablePoints2D;
import net.finmath.plots.Point2D;
import net.finmath.rootfinder.BisectionSearch;
import net.finmath.rootfinder.RootFinder;
package net.finmath.experiments.reproduction;



public class ReproductionSimulationExperiment {

	private static final int maxIncubation = 25;

	private final double incubationMean;
	private final double incubationStdDev;
	private final int timeInfectious;

	private int currentTime = 0;

	public static class StateProbabilities {

// Path: src/main/java/net/finmath/experiments/reproduction/ReproductionSimulationExperiment.java
// public enum State {
// 	UNINFECTED,
// 	INFECTED_NOT_INFECTIOUS,
// 	INFECTED_AND_INFECTIOUS,
// 	IMMUNE
// }


// Path: src/main/java/net/finmath/experiments/reproduction/ReproductionSimulationExperiment.java
import java.awt.Color;
import java.awt.Rectangle;
import java.io.File;
import java.io.IOException;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
import net.finmath.experiments.reproduction.ReproductionSimulationExperiment.StateProbabilities.State;
import net.finmath.plots.GraphStyle;
import net.finmath.plots.Plot2D;
import net.finmath.plots.Plotable2D;
import net.finmath.plots.PlotablePoints2D;
import net.finmath.plots.Point2D;
import net.finmath.rootfinder.BisectionSearch;
import net.finmath.rootfinder.RootFinder;

package net.finmath.experiments.reproduction;



public class ReproductionSimulationExperiment {

	private static final int maxIncubation = 25;

	private final double incubationMean;
	private final double incubationStdDev;
	private final int timeInfectious;

	private int currentTime = 0;

	public static class StateProbabilities {

		public enum State {