Skip to content

Think about solver configs #3933

@michaelbynum

Description

@michaelbynum

Summary

We need more consistent handling of solver configs.

Rationale

The challenge: there are many options that should be common to several, but not all, solvers. For example, warm_start_discrete_vars is an option in the BranchAndBoundConfig. Another example would be initializing nonlinear programming solvers (see #3833). How can we get consistent naming across solvers but also indicate what users should expect to work across multiple solvers?

Description

A few things that have been discussed:

  1. Use hierarchical configs. An example might be solver.config.branch_and_bound.warm_start_discrete_vars or solver.config.ipopt.foo for something specific to Ipopt. We could maybe also use aliases to shorten these?
  2. One thing we have already done, which may not be a great idea, is to create more classes. For example, we have both a SolverConfig and a BranchAndBoundConfig which inherits from SolverConfig.
  3. We could just put things in the names. For example, solver.config.knitro_use_start.

Did I miss anything from the discussion yesterday, @jsiirola, @blnicho, @mrmundt?

Additional information

None

Metadata

Metadata

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions