input: Write a python function to solve a linear programming problem and return the optimal solution.
  assert solve_linear_program() == {'objective': 12.0, 'x': 2.0, 'y': 2.0}
  assert solve_linear_program() == {'objective': 12.0, 'x': 2.0, 'y': 2.0}
output: def solve_linear_program():
      from scipy.optimize import linprog
  
      # Objective function coefficients
      c = [-3, -2]  # We multiply by -1 because linprog does minimization by default
  
      # Inequality constraints coefficients
      A = [[1, 2], [4, 0], [0, 4]]
      b = [8, 16, 12]
  
      # Bounds for variables
      x_bounds = (0, None)
      y_bounds = (0, None)
  
      # Solve the linear program
      result = linprog(c, A_ub=A, b_ub=b, bounds=[x_bounds, y_bounds], method='highs')
  
      # Extract the results
      optimal_solution = {
          'objective': -result.fun,  # Remember to negate the result to get the maximized value
          'x': result.x[0],
          'y': result.x[1]
      }
      
      return optimal_solution