input: from typing import List
  
  def solve_linear_programming_using_simplex(decision_variables: List[str], objective_function: List[float], 
                                             constraints: List[List[float]], rhs: List[float], maximize: bool) -> List[float]:
      """Solve a linear programming problem using the Simplex method. The method involves 
      iteratively moving from vertex to vertex in a polytope defined by the constraints until
      an optimal solution is found. The output is the values of the decision variables that 
      optimize the objective function given the constraints.
      
      >>> solve_linear_programming_using_simplex(['x1', 'x2'], [3, 2], 
      ... [[1, -1], [3, 1]], [1, 4], True)
      [2.0, 2.0]
      """
output:     from scipy.optimize import linprog
  
      num_vars = len(decision_variables)
      num_constraints = len(constraints)
  
      # Convert maximization problem to minimization
      if maximize:
          objective_function = [-x for x in objective_function]
  
      # Convert constraints to standard form
      A = constraints
      b = rhs
  
      # Solve the linear programming problem using scipy's linprog
      result = linprog(objective_function, A_ub=A, b_ub=b, bounds=[(0, None)] * num_vars, method='simplex')
  
      if result.success:
          return result.x.tolist()
      else:
          raise ValueError("No feasible solution found.")