The SolutionSet class stores the result of solving a
Problem object when multiple runs are produced.
A SolutionSet object is the multi-run counterpart of
solution-class. It contains the original problem, run-level
design and outcome tables, the list of individual Solution objects,
diagnostics summarizing the full set of runs, method metadata, and additional
metadata.
Objects of this class are typically created by solve in
workflows that generate more than one optimization run, such as weighted-sum
scans, \(\epsilon\)-constraint designs, or AUGMECON grids.
Details
Conceptual role
The SolutionSet class represents the result of a multi-run solving
workflow:
Problem -> solve() -> SolutionSetEach run corresponds to one specific optimization subproblem, parameter
setting, or trade-off configuration. The SolutionSet object keeps all
these runs together in a structured form.
Thus, a SolutionSet is not a single solution with multiple labels, but
a collection of distinct Solution objects linked to a shared problem
and a shared multi-run design.
Typical use cases
A SolutionSet is typically returned when the chosen solution method
generates multiple runs, for example:
several weighted-sum configurations,
a grid of \(\epsilon\)-constraint runs,
an AUGMECON exploration of multiple \(\epsilon\)-combinations,
or any other workflow producing more than one optimizer call.
Internal structure
A SolutionSet object separates information into several layers:
problemThe original
Problemobject shared by all runs.solutionA named
listcontaining the core multi-run optimization outputs. This typically includes the run design, the run summary table, and the list of individualSolutionobjects.summaryA named
listcontaining user-facing summaries aggregated across runs when such summaries are available.diagnosticsA named
listcontaining diagnostics about the solution set as a whole.methodA named
listdescribing the multi-run optimization method used.metaA named
listcontaining additional metadata.nameA
character(1)identifier for the solution set.
Run-level content
The solution field is the main entry point for run-level information.
Typical entries include:
designA
data.framedescribing the experimental or optimization design, for example weights or \(\epsilon\)-levels.runsA
data.framesummarizing the outcome of each run. This typically includes run identifiers, solver status, runtime, gap, and objective values.solutionsA list of individual
Solutionobjects, one per run.
In many workflows, the runs table is the most important compact
representation of the solution set, while solutions[[i]] provides the
full detailed output for run \(i\).
Objective values and run tables
In multi-objective workflows, the run table often stores objective values in
columns named value_<alias>, where <alias> is the alias of a
registered objective. For example:
value_cost,value_frag,value_benefit.
This naming convention is used by downstream functions such as
plot_tradeoff.
Depending on the solving method, the run table may also contain design columns such as:
weight_<alias>for weighted-sum runs,eps_<alias>for \(\epsilon\)-constraint or AUGMECON runs.
Relationship with Solution
A SolutionSet is conceptually a collection of Solution objects.
The individual runs are typically stored in:
$$
\code{x$solution$solutions[[i]]}
$$
where each element is itself a full Solution object.
Therefore:
use
SolutionSetwhen working with the full set of runs,use an individual
Solutionwhen inspecting one particular run in detail.
Diagnostics
The diagnostics field stores metadata about the multi-run solve
process. Depending on the implementation, it may summarize:
number of runs,
status frequencies,
runtime ranges,
gap ranges,
and other aggregate information about the set of runs.
Printing
The print() method provides a concise summary of the full solution set.
It reports:
the optimization method name,
the participating objective aliases,
the number of design rows, runs, and stored solutions,
run-level status summaries,
runtime and gap ranges,
and the names of design and objective-value columns when available.
This printed output is intended as a quick overview. Detailed inspection should use:
x$solution$runs,x$solution$design,x$solution$solutions[[i]],or the accessor methods documented below.
Fields
problemThe
Problemobject used to generate the full solution set.solutionA named
listcontaining the core multi-run outputs, typically includingdesign,runs, andsolutions.summaryA named
listcontaining user-facing summaries associated with the solution set.diagnosticsA named
listcontaining diagnostics about the solution set as a whole.methodA named
listdescribing the optimization method used.metaA named
listof additional metadata.nameA
character(1)name for the solution set object.
Methods
print()Print a concise summary of the solution set, including method name, number of runs, and run-level diagnostics.
show()Alias of
print().repr()Return a short one-line representation of the solution set.
getMethod()Return the method specification stored in
self$method.getDesign()Return the design table stored in
self$solution$design.getRuns()Return the run summary table stored in
self$solution$runs.getSolutions()Return the list of individual
Solutionobjects stored inself$solution$solutions.
