## Problem Description and Formulation

The problem is a linear programming optimization problem. The goal is to maximize the profit from selling lemons and bananas under certain constraints.

### Variables
- \(L\): Number of lemons
- \(B\): Number of bananas

### Objective Function
The profit from selling one lemon is $2, and from selling one banana is $1. Therefore, the total profit \(P\) can be represented as:
\[P = 2L + B\]

### Constraints
1. **Budget Constraint**: The total cost for lemons and bananas cannot exceed $1000. Given that a lemon costs $3 and a banana costs $1.5:
\[3L + 1.5B \leq 1000\]

2. **Lemon Sales Constraint**: At least 250 lemons but at most 300 are sold each month:
\[250 \leq L \leq 300\]

3. **Banana Sales Constraint**: The number of bananas sold is at most a third of the lemons sold:
\[B \leq \frac{1}{3}L\]

4. **Non-Negativity Constraint**: The number of lemons and bananas cannot be negative:
\[L \geq 0, B \geq 0\]

However, given the constraints on \(L\), the non-negativity constraint for \(L\) is implicitly satisfied.

## Gurobi Code

```python
import gurobi

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

    # Define variables
    L = model.addVar(lb=250, ub=300, name="Lemons")  # At least 250, at most 300 lemons
    B = model.addVar(name="Bananas")  # No explicit bounds for bananas

    # Objective function: Maximize profit
    model.setObjective(2*L + B, gurobi.GRB.MAXIMIZE)

    # Budget constraint
    model.addConstr(3*L + 1.5*B <= 1000, name="Budget_Constraint")

    # Banana sales constraint
    model.addConstr(B <= L/3, name="Banana_Sales_Constraint")

    # Solve the model
    model.optimize()

    # Check if the model is optimized
    if model.status == gurobi.GRB.OPTIMAL:
        print(f"Optimal Solution: Lemons = {L.varValue}, Bananas = {B.varValue}")
        print(f"Max Profit: {model.objVal}")
    else:
        print("The model is infeasible")

solve_optimization_problem()
```

This code defines the optimization problem using Gurobi's Python interface, sets up the objective function and constraints according to the problem description, and solves the model. If the model is feasible, it prints out the optimal number of lemons and bananas to sell and the maximum achievable profit.