optimiser-solver/SolutionManager.hpp
Geir Horn 5ee0dbcad6 Initial class structure definitions
Change-Id: I2c140d38ebdd5fe4739629692b90fc1ed12ed985
2023-12-25 19:03:51 +01:00

47 lines
2.3 KiB
C++

/*==============================================================================
Solution Manager
This class handles the Execution Context mssage containing a time stamp and a
set of variable value assignments.It manages a time sorted queue and dispatches
the first application execution context to the solver when the solver is ready.
The solution returned for a given execution context will be published together
with the execution context and the maximal utility value found by the solver.
The solver actor class is given as a template argument to the solution manager,
and at least one solver actor is instantiated at start up. This to allow
multiple solvers to run in parallel should this be necessary to serve properly
the queue of waiting application execution contexts. If there are multiple
objects defined, they have to be optimised individualy, and for this purpose
it would also be useful to have multiple solvers running in parallel working
on the same problem, but for different objective functions. This will reduce
the time to find the Pareto front [1] for the multi-objective optimisation
problem.
The functionality of receiving and maintaining the work queue separately from
the solver is done to avoid blocking the reception of new execution contexts
while the solver searches for a solution in separate threads. This is done
for other entities to use the solver to find the optised configuration, i.e.
feasible value assignments to all propblem variables, maximising the givne
utiliy for a particular set of independent metric variables, i.e. the
application execution context. The idea is that other components may use
the solver in this way to produce training sets for machine learning methods
that aims to estimate the application's performance indicators or even the
change in utility as a function of the varying the metric values of the
application execution context.
References:
[1] https://en.wikipedia.org/wiki/Pareto_front
Author and Copyright: Geir Horn, University of Oslo
Contact: Geir.Horn@mn.uio.no
License: MPL2.0 (https://www.mozilla.org/en-US/MPL/2.0/)
==============================================================================*/
#ifndef NEBULOUS_SOLUTION_MANAGER
#define NEBULOUS_SOLUTION_MANAGER
namespace NebulOuS
{
} // namespace NebulOuS
#endif // NEBULOUS_SOLUTION_MANAGER