Search code examples
scip

Global random seed parameter in SCIP?


How can I set a kind of global random seed on SCIP in order to obtain potentially different behaviors when solving a MIP? I'm looking for something like the Seed parameter in Gurobi or the CPXPARAM_RandomSeed parameter in CPLEX.

Looking at the SCIP documentation, I see the following parameters but they make reference to particular plugins or aspects of the algorithm, and there does not seem to be a "global" random seed:

  • randomization/permutationseed (for permuting problem)
  • randomization/lpseed (for simplex)
  • branching/random/seed (for the random branching rule)
  • branching/relpscost/startrandseed (for the relpscost branching rule)
  • heuristics/alns/seed (for bandit algorithms)
  • separating/zerohalf/initseed (for tie-breaking in cut selection)

I do see the randomization/randomseedshift parameter that is described as "global shift of all random seeds in the plugins and the LP random seed". Could this parameter be used to achieve a global effect?

Thanks!


Solution

  • The short answer is yes. The parameter randomization/randomseedshift affects all solver plugins that use randomization, and the LP.

    The longer answer is that randomization of the solving process in SCIP can be achieved in three different basic ways:

    • changing the randomization/randomseedshift parameter, which affects the seed initialization of all plugins and the LP
    • changing the randomization/lpseed parameter for changing simplex randomization only
    • randomization/permutationseed for a permutation of the constraints and variables of the problems.

    The permutation of the problem is the classic way of randomizing the solution process, however, it may obfuscate problem structure of the original input model.

    SCIP also provides access to the individual seeds such as heuristics/alns/seed to modify only the behavior of a single plugin without affecting the rest.