Determinism and the timing interface

Defines determinism in the context of the timing interface for accessing time stamps.

Determinism means that repeated solving of the same model with the same parameter settings, including limits, on the same computing platform will follow exactly the same solution path, yielding the same level of performance and the same values in the solution.

In contrast to determinism, the concept of opportunism implies taking advantage of opportunities to improve performance even though these advantages in performance may result in a different path to the solution or possibly even in different results.

System time (such as CPU time measured in seconds or wall clock time measured in seconds) is not deterministic; in other words, it may vary from one run to another. For example, the load of other applications on a system can impact performance and thus influence system time. Consequently, two consecutive runs even with the same time limit may yield results that are not deterministic.

For situations where the user requires deterministic results, CPLEX offers a choice between deterministic and opportunistic algorithms. For a comparison and contrast of determinism and opportunism in the context of parallel algorithms, for example, see the topic Determinism of results.

CPLEX also offers the user a choice between time limits measured in seconds (that is, dependent on system time) and time limits measured deterministically. The options of system time measured in seconds and deterministic time measured in ticks (on the one hand) or parallelism and opportunism (on the other) are orthogonal to one another. That is, you can set a system time limit on a deterministic parallel algorithm, but of course then the termination criterion will not be deterministic because it depends on nondeterministic system time measured in seconds. You can likewise set a deterministic time limit on an opportunistic parallel optimization. In that case, the termination criterion, indeed, the entire run will not be deterministic because of the opportunism of the parallel optimization. In other words, you can mix and match these options, but you must give careful consideration to the effect you want to achieve in doing so.

You can even set both a deterministic and a system time limit simultaneously. In such a case, CPLEX stops the optimization as soon as it reaches one of the limits (similar to what happens when you set both a MIP gap and a node limit in a MIP optimization).

Tip: If you want a fully deterministic optimization, then you need to apply a deterministic algorithm, and you must not use a wall-clock time limit nor a CPU time limit.

For more detail about time limits measured in seconds, see the documentation of the parameter optimizer time limit in seconds (CPX_PARAM_TILIM, TiLim). For more detail about deterministic time limits, see the documentation of the parameter deterministic time limit (CPX_PARAM_DETTILIM, DetTiLim).