Skip to content

Fix a quantity that is data in one model and a decision in another#

Write one model in which a quantity, such as a plant's size, is chosen by the solver in one study and given by the data in another. The file does not change between the two. The data does.

  1. Declare the quantity as a variable, with named bounds.
dimensions:
  plant: { dtype: str }
parameters:
  size_min: { dims: [plant] }
  size_max: { dims: [plant] }
variables:
  size:
    dims: [plant]
    bounds: { lower: size_min, upper: size_max }
  1. Write every rule against the variable. rate - relmax * size <= 0 is one equation whether size is chosen or given.

  2. Pin it in the data where it is given. Bind size_min and size_max to the same value for a plant whose size is fixed. Equal bounds pin a variable, and a pinned variable is still a variable (variables).

A pinned variable keeps two rules of a variable. size * on is still variable * variable, so it is legal only in a constraint or the objective. And a pinned variable cannot stand in another variable's bounds:, so where a bound has to come from it, ship the column as a parameter too.