code: def test_hull_formulation_multi_var():
      regr = linear_model_tree(X=X, y=Y)
      input_bounds = {
          0: (min(X[:, 0]), max(X[:, 0])),
          1: (min(X[:, 1]), max(X[:, 1])),
      }
      ltmodel_small = LinearTreeDefinition(
          regr, unscaled_input_bounds=input_bounds
      )
      formulation1_lt = LinearTreeGDPFormulation(
          ltmodel_small, transformation="hull"
      )
  
      model1 = pe.ConcreteModel()
      model1.x0 = pe.Var(initialize=0)
      model1.x1 = pe.Var(initialize=0)
      model1.y = pe.Var(initialize=0)
      model1.obj = pe.Objective(expr=1)
      model1.lt = OmltBlock()
      model1.lt.build_formulation(formulation1_lt)
  
      @model1.Constraint()
      def connect_input1(mdl):
          return mdl.x0 == mdl.lt.inputs[0]
  
      @model1.Constraint()
      def connect_input2(mdl):
          return mdl.x1 == mdl.lt.inputs[1]
  
      @model1.Constraint()
      def connect_outputs(mdl):
          return mdl.y == mdl.lt.outputs[0]
  
      model1.x0.fix(0.5)
      model1.x1.fix(0.8)
  
      status_1_bigm = pe.SolverFactory("cbc").solve(model1, tee=True)
      pe.assert_optimal_termination(status_1_bigm)
      solution_1_bigm = pe.value(model1.y)
      y_pred = regr.predict(
          np.array([pe.value(model1.x0), pe.value(model1.x1)]).reshape(
              1, -1
          )
      )
      assert y_pred[0] == approx(solution_1_bigm)
  
imports: import numpy
  import pyomo.environ
  import pytest
  from omlt.dependencies import lineartree_available
  from pytest import approx
  from omlt import OmltBlock
  import omlt
label_desc: Use image node_id 10 for calling a global function with example usage: test_hull_formulation_multi_var() and returns: unknown, unknown, unknown