solverResult

fun ReportBuilder.solverResult(result: SolverResult, caption: String? = null)(source)

Appends a self-contained section reporting the outcome of a simulation optimisation run described by a SolverResult.

SolverResult.NotExecuted — emits a single Paragraph stating that the solver has not been run yet.

SolverResult.Completed — emits (inside a section titled caption or the solver name):

  1. A DataTable ("Run Summary") — solver name, problem name, termination reason, stopping criteria satisfied, execution time, and total iterations

  2. A DataTable ("Evaluator Metrics") — evaluator calls, design points evaluated, total replications requested, oracle replications, and cached replications

  3. Optionally a sub-section for the initial solution (when non-null)

  4. A sub-section for the current (final) solution

  5. A sub-section for the best solution found (when non-null)

Each solution sub-section contains:

  • A DataTable ("Decision Variables") with columns Variable | Value from the solution's ksl.simopt.problem.InputMap

  • A DataTable ("Objective Function") with columns Name | Count | Average | Std Dev | Half Width for the estimated objective

  • A DataTable ("Response Estimates") (when responses are present) with the same columns for each response constraint estimate

Usage:

solver.runAllIterations()
val doc = report("Optimisation Results") {
solverResult(solver.solverResult)
}

Parameters

result

the solver result to report

caption

optional section title; defaults to the solver name embedded in the result, or "Solver Results" when blank