Module snowcap::optimizers [−][src]
Expand description
Optimizer
Optimizers try to solve the problem of reconfiguraiton, by always requiring the (hard) policies to hold, while trying to minimize the cost of soft policies. The following optimizers exist:

One Optimizer To Rule Them All (
OptimizerTRTA
): This optimizer combines the best of both the simple, and softpolicy orientedTreeOptimizer
, and the more complex, hardpolicy basedDepGroupsOptimizer
. It does this by exploring the search space similar to the tree optimizer. But as soon as we would need to backtrace, we try to find a single dependency. If it succeeds, we repeat the tree traversal using the new dependency. This results in much better results interms of minimizing cost, while keeping the benefits of searching actively for dependencies. Additionally, we only search for the dependencies, which are not solvable by using the naive Tree strategy. 
TreeOptimizer
: This optimizer is similar to theTreeStrategy
. However, the most important difference is that on ever step, the tree is traversed into the direction, which will (locally) keep the cost of the soft policy to a minimum. This means, that before any modifier is taken, this strategy will try all possible modifiers, and check which of them will reduce the cost locally. 
GlobalOptimizer
: This optimizer computes the cost of every possible ordering, which is valid under the given hard constraints. Then, it returns the one which minimizes the cost. This optimizer will always return the global minimum, however, it is no longer feasible to compute with 10 or more modifiers. 
DepGroupsOptimizer
: This optimizer is similar to theDebGroupsStrategy
, as it searches for dependencies actively by building groups. Once a valid solution is found, we store the ordering and the cost, and continue the iteration, until we have either not improved our solution in the last 10 iterations, or until we have exceeded the time budget. 
NaiveRandomOptimizer
: This optimizer is only used for evaluation purpose. It simply tries random orderings, until it finds a valid ordering, which will then be returned. 
NaiveRandomIBROptimizer
: This optimizer is only used for evaluation purpose. It simply tries random orderings, until it finds a valid ordering, which will then be returned. However, the sequence will always first insert, then modify, and finally, remove configuration.
Structs
DepGroupsOptimizer
Global Optimizer
Strawman Strategy: Most Important First
Strawman Strategy: Most Important Last
The Naive Random Optimizer with insert before remove
The Naive Random Optimizer
One Optimizer To Rule Them All
Tree Optimizer
Traits
Infterface for all Optimizers