input: Write a function to solve a linear programming problem using the Simplex method. The function should take as input the objective function coefficients, constraints coefficients, and the right-hand sides of the constraints. The function should convert the problem into standard form, set up the initial tableau, and iteratively apply the Simplex algorithm until an optimum solution is found. The function should return the optimum solution and the corresponding objective value.
  assert solve_linear_programming([3, 5], [[1, 2], [2, 1]], [2, 3]) == {"solution": [0.6666666666666666, 0.6666666666666666], "objective": 5.333333333333333}
  assert solve_linear_programming([2, 4], [[1, 0], [0, 1]], [1, 2]) == {"solution": [1, 2], "objective": 10}
  assert solve_linear_programming([1, 1], [[1, 1]], [2]) == {"solution": [1.0, 1.0], "objective": 2.0}
  assert solve_linear_programming([1, 2], [[1, -1], [1, 1]], [1, 1]) == {"solution": [1.0, 0.0], "objective": 1.0}
  assert solve_linear_programming([1, 3], [[1, 1]], [4]) == {"solution": [0.0, 4.0], "objective": 12.0}
output: def solve_linear_programming(c, A, b):
      import numpy as np
      
      m, n = len(A), len(A[0])
      tableau = np.zeros((m + 1, n + m + 1))
      
      tableau[0, :n] = -np.array(c)
      tableau[1:, :n] = A
      tableau[1:, n:n+m] = np.eye(m)
      tableau[1:, -1] = b
      
      while True:
          if np.all(tableau[0, :-1] >= 0):
              break
          
          pivot_col = np.argmin(tableau[0, :-1])
          ratios = tableau[1:, -1] / tableau[1:, pivot_col]
          ratios[ratios <= 0] = np.inf
          pivot_row = np.argmin(ratios) + 1
          
          tableau[pivot_row] /= tableau[pivot_row, pivot_col]
          for i in range(m + 1):
              if i != pivot_row:
                  tableau[i] -= tableau[i, pivot_col] * tableau[pivot_row]
      
      solution = np.zeros(n)
      for j in range(n):
          if tableau[0, j] == 0:
              for i in range(1, m + 1):
                  if tableau[i, j] == 1:
                      solution[j] = tableau[i, -1]
                      break
      
      objective = -tableau[0, -1]
      return {"solution": solution, "objective": objective}