input: 
  def solve_linear_programming_using_simplex(objective_function: List[float], constraints: List[List[float]], rhs: List[float]) -> dict:
      """
      Solve a linear programming problem using the Simplex method. The objective function and constraints are provided in list format, and the right-hand sides of the constraints are given in the rhs list.
      
      >>> solve_linear_programming_using_simplex([3, 4, 2], [[1, 0, 2], [2, 5, 1], [3, 2, 2]], [4, 10, 8])
      {'optimal_value': 12, 'decision_variables': [2, 0, 1]}
      >>> solve_linear_programming_using_simplex([2, 1, 3], [[1, 0, 2], [2, 5, 1], [3, 2, 2]], [4, 10, 8])
      {'optimal_value': 10, 'decision_variables': [0, 2, 1]}
      """
  
output:     from scipy.optimize import linprog
  
      num_vars = len(objective_function)
      num_constraints = len(constraints)
  
      # Convert the problem to standard form for linprog
      c = [-x for x in objective_function]  # Maximize -> Minimize
      A = constraints
      b = rhs
  
      # Solve the linear programming problem using the Simplex method
      result = linprog(c, A_ub=A, b_ub=b, method='simplex')
  
      if result.success:
          optimal_value = -result.fun  # Convert back to maximization
          decision_variables = result.x
          return {'optimal_value': optimal_value, 'decision_variables': decision_variables}
      else:
          return {'optimal_value': None, 'decision_variables': None}