cpsat-primer icon indicating copy to clipboard operation
cpsat-primer copied to clipboard

Suggestions for Chapter 6: Parameters

Open leonlan opened this issue 6 months ago • 8 comments

  • [x] Style: I think it's a bit too much to list all the (sub-)solvers used in https://d-krupke.github.io/cpsat-primer/05_parameters.html#parallelization. The current layout makes it hard to read and it is a lot of information that might not be relevant to readers. Is there a reference that we can refer to instead, or can we think of a better way of visualizing this as a table?

  • [ ] Content: I have seem multiple times Laurent Perron mention that it is really recommended to use OR-Tools with 8 cores, or even 16 cores. Should we mention this somewhere in the parallelization section as well?

  • [x] Content: We could also mention what the default setting of the solver is regarding parallelization, which is to use all available cores by default right?

  • [x] Structure: There are three sections that are not strictly "parameters" (exporting model, adding assumptions, adding hints). The section then ends with "decision strategy", which is a parameter again. I don't think this is problematic but I noticed it.

  • [x] Structure: I think it's easier to start with hints first and then discuss assumptions. Hints are similar to warm-starts, which most readers understand. Assumptions are more niche because they only apply to boolean variables.

  • [x] Content: The assumptions section starts begin with

    "Often, you may need to explore the impact of forcing certain variables to specific values."

    This is a bit deceptive because assumptions can only force boolean variables. In combination with the restructuring point above I suggest 1) discussing parameter "fix_variables_to_their_hinted_value" in the hints section, which does practically the same 2) rewriting the assumptions section to emphasize that this is only for fixing bools.

  • [ ] New content: This section starts with a brief mention of protobufs. This was a completely new concept to me when I started reading into OR-Tools but it's a common practice by Google and similar ideas apply to other software (e.g., intermediate data representation for modeling APIs). Perhaps we can add a section to the advanced topics on protobufs? I can make a separate issue for that.

leonlan avatar Aug 06 '24 09:08 leonlan