Class EpisodeRunner
java.lang.Object
neqsim.process.ml.EpisodeRunner
- All Implemented Interfaces:
Serializable
Runner for testing RL environments with simple controllers from Java.
This class allows testing the ML infrastructure without Python by running episodes with simple control policies (P, PID, bang-bang, random).
Usage Example:
SeparatorGymEnv env = new SeparatorGymEnv();
Controller controller = new PIDController("LevelPID", 6, 0.5, 0.1, 0.05, -0.1, 0.1, 1.0);
EpisodeRunner runner = new EpisodeRunner(env);
EpisodeResult result = runner.runEpisode(controller, 500);
System.out.println("Total reward: " + result.totalReward);
System.out.println("Steps: " + result.steps);
- Version:
- 1.0
- Author:
- ESOL
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classStatistics from multiple episode runs.static classResult of running an episode. -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final GymEnvironmentprivate intprivate static final longprivate boolean -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionbenchmark(Controller controller, int numEpisodes, int maxStepsPerEpisode) Run multiple episodes and compute statistics.compareControllers(List<Controller> controllers, int numEpisodes, int maxStepsPerEpisode) Compare multiple controllers.private static doublemax(double[] arr) private static doublemean(double[] arr) private static doublemin(double[] arr) static voidprintComparison(List<EpisodeRunner.BenchmarkResult> results) Print comparison table.private static StringrepeatString(String str, int count) Repeat a string n times (Java 8 compatible replacement for String.repeat()).runEpisode(Controller controller, int maxSteps) Run a single episode with given controller.setPrintInterval(int interval) Set print interval for verbose mode.setVerbose(boolean verbose) Set verbose mode.private static doublestd(double[] arr)
-
Field Details
-
serialVersionUID
private static final long serialVersionUID- See Also:
-
environment
-
verbose
private boolean verbose -
printInterval
private int printInterval
-
-
Constructor Details
-
EpisodeRunner
Create episode runner.- Parameters:
environment- the Gym environment
-
-
Method Details
-
setVerbose
Set verbose mode.- Parameters:
verbose- whether to print progress- Returns:
- this runner
-
setPrintInterval
Set print interval for verbose mode.- Parameters:
interval- steps between prints- Returns:
- this runner
-
runEpisode
Run a single episode with given controller.- Parameters:
controller- the controller to usemaxSteps- maximum steps (overrides env setting if smaller)- Returns:
- episode result
-
benchmark
public EpisodeRunner.BenchmarkResult benchmark(Controller controller, int numEpisodes, int maxStepsPerEpisode) Run multiple episodes and compute statistics.- Parameters:
controller- the controller to usenumEpisodes- number of episodesmaxStepsPerEpisode- max steps per episode- Returns:
- benchmark result
-
compareControllers
public List<EpisodeRunner.BenchmarkResult> compareControllers(List<Controller> controllers, int numEpisodes, int maxStepsPerEpisode) Compare multiple controllers.- Parameters:
controllers- list of controllersnumEpisodes- episodes per controllermaxStepsPerEpisode- max steps- Returns:
- list of benchmark results
-
printComparison
Print comparison table.- Parameters:
results- benchmark results to compare
-
repeatString
-
mean
private static double mean(double[] arr) -
std
private static double std(double[] arr) -
min
private static double min(double[] arr) -
max
private static double max(double[] arr)
-