input: 
  def solve_linear_programming_problem(decision_vars, objective_func, constraints):
      """ Solve a linear programming problem using the Simplex method in Python.
      The method involves converting the problem into standard form, setting up
      a tableau, and iteratively moving from one vertex to another within the
      polytope defined by the constraints until an optimal solution is found.
      >>> solve_linear_programming_problem(['x1', 'x2'], [3, 5], [['<=', 4], ['>=', 2]])
      'Optimum solution: (x1 = 2.0, x2 = 1.0)'
      >>> solve_linear_programming_problem(['x1', 'x2', 'x3'], [2, -3, 4], [['<=', 5], ['>=', -1], ['==', 0]])
      'Optimum solution: (x1 = 0.0, x2 = 0.5, x3 = 0.5)'
      """
  
output:     from scipy.optimize import linprog
  
      # Convert constraints to standard form for linprog
      c = [-coeff for coeff in objective_func]  # Negate for maximization
      A = []
      b = []
      for constraint in constraints:
          if constraint[0] == '<=':
              A.append([-1 if i == 0 else 0 for i in range(len(decision_vars))])
              b.append(-constraint[1])
          elif constraint[0] == '>=':
              A.append([1 if i == 0 else 0 for i in range(len(decision_vars))])
              b.append(constraint[1])
          elif constraint[0] == '==':
              A.append([1 if i == 0 else 0 for i in range(len(decision_vars))])
              b.append(constraint[1])
              A.append([-1 if i == 0 else 0 for i in range(len(decision_vars))])
              b.append(-constraint[1])
  
      # Solve the linear programming problem
      res = linprog(c, A_ub=A, b_ub=b, bounds=(0, None))
  
      # Format the solution
      solution = ', '.join([f'{var} = {val:.1f}' for var, val in zip(decision_vars, res.x)])
      return f'Optimum solution: ({solution})'