Description
Document that solvers can rely on the fact that MatrixOfConstraints
does not implement deletion of rows and columns and hence, the OptimizerCache
can be done in a way such that the index map is identity.
When using OrderedProductOfSets
, the solver will need to keep the product of set as a field after copy_to
to handle the mapping of indices to ranges, such mapping is needed for conic solvers anyway.
For linear solvers, there is also the choice of using MixOfScalarSets
for which the mapping is trivial so no need to keep the product of set as a field.
Since that would make many solvers use identity_index_map
, it gives incentive to make this function cheaper. One option is to make CleverDict
even more clever with a bool is_identity
and only start using vector
when the mapping starts being non-trivial. That would also benefit to solvers not using identity_index_map
but for which the mapping is trivial most of the time.