## Problem Description and Symbolic Representation

The problem involves maximizing profit by determining the optimal production quantities of basmati rice and bananas given certain resource constraints.

### Symbolic Variables:
- $x_1$ represents the kilograms of basmati rice to be produced.
- $x_2$ represents the kilograms of bananas to be produced.

### Objective Function:
The net profit per kilogram of basmati rice is $15, and the net profit per kilogram of bananas is $28. Therefore, the objective function to maximize profit ($P$) is:
\[ P = 15x_1 + 28x_2 \]

### Constraints:
1. Human labor constraint: $1.5x_1 + 2x_2 \leq 90$
2. Machine work constraint: $2x_1 + 4x_2 \leq 150$
3. Resting under the sun constraint: $3x_1 + 1.5x_2 \leq 70$
4. Non-negativity constraints: $x_1 \geq 0, x_2 \geq 0$

## Symbolic Representation in JSON Format

```json
{
  'sym_variables': [('x1', 'basmati rice'), ('x2', 'bananas')],
  'objective_function': '15*x1 + 28*x2',
  'constraints': [
    '1.5*x1 + 2*x2 <= 90',
    '2*x1 + 4*x2 <= 150',
    '3*x1 + 1.5*x2 <= 70',
    'x1 >= 0',
    'x2 >= 0'
  ]
}
```

## Gurobi Code in Python

```python
import gurobi

def solve_optimization_problem():
    # Create a new model
    model = gurobi.Model()

    # Define variables
    x1 = model.addVar(name="basmati_rice", lb=0, vtype=gurobi.GRB.CONTINUOUS)
    x2 = model.addVar(name="bananas", lb=0, vtype=gurobi.GRB.CONTINUOUS)

    # Objective function
    model.setObjective(15 * x1 + 28 * x2, gurobi.GRB.MAXIMIZE)

    # Constraints
    model.addConstr(1.5 * x1 + 2 * x2 <= 90, name="human_labor")
    model.addConstr(2 * x1 + 4 * x2 <= 150, name="machine_work")
    model.addConstr(3 * x1 + 1.5 * x2 <= 70, name="resting_sun")

    # Optimize
    model.optimize()

    # Print solution
    if model.status == gurobi.GRB.OPTIMAL:
        print(f"Optimal production quantities: basmati rice = {x1.varValue} kg, bananas = {x2.varValue} kg")
        print(f"Maximum profit: ${model.objVal:.2f}")
    else:
        print("The problem is infeasible.")

solve_optimization_problem()
```