DatasetController

class DatasetController(targetToAchieve: String)

DatasetController

=================

Orchestrates:

  • DatasetModel lifecycle (load → optional expand → seal → solve)

  • Streaming consumption (printer coroutine reading ProgressEvents)

  • View writing for final snapshots and merged artifacts (CSV + Parquet)

Determinism

When Parameters.deterministic is true:

Efficiency

  • A single printer coroutine consumes a back-pressured Channel of events.

  • Uses batched TopKReplaceBatch to avoid rewriting the TOP file multiple times per generation.

Constructors

Link copied to clipboard
constructor(targetToAchieve: String)

Properties

Link copied to clipboard
Link copied to clipboard

Per-target models (when TARGET_ALL, indices: 0=BEST, 1=WORST, 2=AVERAGE; else a single entry).

Functions

Link copied to clipboard
fun clean(dataList: MutableList<String>, logMessage: String)

Delete a list of files on disk and remove their paths from the given list.

Link copied to clipboard
fun copy()

Copy the per-execution and merged results produced by the last solve/merge into the experiments destination tree (CSV + Parquet), preserving filenames.

Link copied to clipboard
fun expandSystems(expansionCoefficient: Int, trueNumberOfSystems: Int)

Expand the dataset by appending expansionCoefficient fake systems (or revert to a prefix), across all loaded models.

Link copied to clipboard
fun expandTopics(expansionCoefficient: Int)

Expand the dataset by appending expansionCoefficient fake topics to all loaded models.

Link copied to clipboard
fun load(datasetPath: String)

Load a dataset from a CSV path into one or three DatasetModels depending on targetToAchieve.

Link copied to clipboard
fun merge(numberOfExecutions: Int)

Merge results from multiple executions (ex1..exN) into merged CSV/Parquet artifacts:

Link copied to clipboard
fun solve(parameters: Parameters)

Run the experiment(s) according to parameters.targetToAchieve: