input: def solve_linear_programming(decision_variables, objective_function, constraints):
      """
      Solve a linear programming problem using the Simplex Method in Python.
      This method involves finding the maximum or minimum value of a linear function
      by defining a polytope with simultaneous equations and iteratively moving
      from one vertex to another within this polytope until the optimal solution is reached.
  
      >>> solve_linear_programming(['x1', 'x2'], {'x1': 3, 'x2': 2}, [{'x1': 2, 'x2': 1, 'rhs': 100}, {'x1': 1, 'x2': 3, 'rhs': 120}])
      {'x1': 40, 'x2': 20, 'optimal_value': 160}
      >>> solve_linear_programming(['x1', 'x2'], {'x1': 2, 'x2': 1}, [{'x1': 1, 'x2': 2, 'rhs': 10}, {'x1': 3, 'x2': 1, 'rhs': 15}])
      {'x1': 3.75, 'x2': 3.125, 'optimal_value': 10.625}
      """
output:     from scipy.optimize import linprog
  
      # Convert objective function to a list of coefficients
      c = [-objective_function[var] for var in decision_variables]
  
      # Convert constraints to a list of lists
      A = []
      b = []
      for constraint in constraints:
          A.append([constraint[var] for var in decision_variables])
          b.append(constraint['rhs'])
  
      # Solve the linear programming problem
      result = linprog(c, A_ub=A, b_ub=b, method='simplex')
  
      # Extract the solution
      solution = {}
      for i, var in enumerate(decision_variables):
          solution[var] = result.x[i]
  
      # Calculate the optimal value
      optimal_value = -result.fun
      solution['optimal_value'] = optimal_value
  
      return solution