## Problem Description and Formulation

The problem is a linear programming optimization problem. The goal is to maximize profit given certain constraints on production capacity, roasting time, and minimum production requirements for cocoa beans and coffee beans.

### Variables
- \(x\): tons of cocoa beans produced per day
- \(y\): tons of coffee beans produced per day

### Objective Function
Maximize profit \(P = 500x + 750y\)

### Constraints
1. Production capacity: \(x + y \leq 15\)
2. Roasting time: \(15x + 15y \leq 1000\)
3. Minimum production requirements:
   - Cocoa beans: \(x \geq 3\)
   - Coffee beans: \(y \geq 5\)
4. Non-negativity: \(x \geq 0, y \geq 0\)

## Gurobi Code

```python
import gurobi

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

    # Define variables
    x = model.addVar(lb=0, name="cocoa_beans")
    y = model.addVar(lb=0, name="coffee_beans")

    # Objective function: Maximize profit
    model.setObjective(500*x + 750*y, gurobi.GRB.MAXIMIZE)

    # Production capacity constraint
    model.addConstr(x + y <= 15, name="production_capacity")

    # Roasting time constraint
    model.addConstr(15*x + 15*y <= 1000, name="roasting_time")

    # Minimum production requirements
    model.addConstr(x >= 3, name="min_cocoa_beans")
    model.addConstr(y >= 5, name="min_coffee_beans")

    # Optimize
    model.optimize()

    # Print solution
    if model.status == gurobi.GRB.OPTIMAL:
        print(f"Optimal production levels: {x.varName} = {x.x}, {y.varName} = {y.x}")
        print(f"Maximum profit: ${model.objVal}")
    else:
        print("No optimal solution found.")

if __name__ == "__main__":
    solve_optimization_problem()
```

This code defines the optimization problem using Gurobi's Python interface, solves it, and prints out the optimal production levels and maximum profit if a solution exists.