docstr: Call this method to construct the constraints (and possibly
  intermediate variables) necessary for the particular neural network
  formulation. The formulation object can be accessed later through the
  "formulation" attribute.
  
  Parameters
  ----------
  formulation : instance of _PyomoFormulation
      see, for example, FullSpaceNNFormulation
docstr_tok: ["Call","this","method","to","construct","the","constraints","(","and","possibly","intermediate","variables",")","necessary","for","the","particular","neural","network","formulation",".","The","formulation","object","can","be","accessed","later","through","the","''","formulation","''","attribute",".","Parameters","--","--","--","--","--","formulation",":","instance","of","_PyomoFormulation","see",",","for","example",",","FullSpaceNNFormulation"]
code: def build_formulation(self, formulation):
      """
      Call this method to construct the constraints (and possibly
      intermediate variables) necessary for the particular neural network
      formulation. The formulation object can be accessed later through the
      "formulation" attribute.
  
      Parameters
      ----------
      formulation : instance of _PyomoFormulation
          see, for example, FullSpaceNNFormulation
      """
      self._setup_inputs_outputs(
          input_indexes=list(formulation.input_indexes),
          output_indexes=list(formulation.output_indexes),
      )
  
      self.__formulation = formulation
  
      # tell the formulation that it is working on this block (self)
      self.__formulation._set_block(self)
  
      # tell the formulation object to construct the necessary models
      self.__formulation._build_formulation()
  
imports: import warnings
  import pyomo.environ
  from pyomo.core.base.block import _BlockData, declare_custom_block
label_desc: Use image node_id 3 for calling the OmltBlockData obj's underlying member method code with example usage: obj.build_formulation(formulation) without return types