## Problem Description and Formulation

The problem is a classic example of a linear programming problem. The goal is to maximize the profit of IND Foods factory by determining the optimal production levels of basmati rice and bananas given the available resources.

Let's define the decision variables:

* $x$: kilograms of basmati rice to produce
* $y$: kilograms of bananas to produce

The objective function to maximize is the total profit:

* Profit per kilogram of basmati rice: $15
* Profit per kilogram of bananas: $28
* Total profit: $15x + 28y

The constraints are:

* Human labor: $1.5x + 2y \leq 90$
* Machine work: $2x + 4y \leq 150$
* Resting under the sun: $3x + 1.5y \leq 70$
* Non-negativity: $x \geq 0, y \geq 0$

## Gurobi Code

```python
import gurobi

# Create a new Gurobi model
m = gurobi.Model()

# Define the decision variables
x = m.addVar(lb=0, name="basmati_rice")  # kilograms of basmati rice
y = m.addVar(lb=0, name="bananas")  # kilograms of bananas

# Define the objective function
m.setObjective(15 * x + 28 * y, gurobi.GRB.MAXIMIZE)

# Define the constraints
m.addConstr(1.5 * x + 2 * y <= 90, name="human_labor")
m.addConstr(2 * x + 4 * y <= 150, name="machine_work")
m.addConstr(3 * x + 1.5 * y <= 70, name="resting_under_sun")

# Optimize the model
m.optimize()

# Print the solution
if m.status == gurobi.GRB.OPTIMAL:
    print("Optimal solution found.")
    print(f"Basmati rice: {x.varValue} kg")
    print(f"Bananas: {y.varValue} kg")
    print(f"Max profit: ${m.objVal:.2f}")
else:
    print("No optimal solution found.")
```

This code defines the decision variables, objective function, and constraints, and then solves the model using Gurobi's optimization algorithm. If an optimal solution is found, it prints the production levels of basmati rice and bananas, as well as the maximum profit. Otherwise, it indicates that no optimal solution was found.