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 soft-policy oriented TreeOptimizer, and the more complex, hard-policy based DepGroupsOptimizer. 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 the TreeStrategy. 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 the DebGroupsStrategy, 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