## Problem Description and Formulation

The problem is a linear programming optimization problem. The goal is to maximize profit given certain constraints on the number of microwaves and vents sold, as well as the budget.

### Decision Variables

- \(M\): The number of microwaves sold.
- \(V\): The number of vents sold.

### Objective Function

Maximize profit \(P = 200M + 300V\).

### Constraints

1. **Budget Constraint**: The total cost is at most $20,000. Microwaves cost $300 each, and vents cost $400 each. So, \(300M + 400V \leq 20000\).
2. **Microwave Sales Constraints**: The store sells at least 30 microwaves but at most 65 microwaves. So, \(30 \leq M \leq 65\).
3. **Vent Sales Constraint**: The number of vents sold is at most a third of the number of microwaves sold. So, \(V \leq \frac{1}{3}M\).
4. **Non-Negativity Constraints**: \(M \geq 0\) and \(V \geq 0\). However, given the microwave sales constraints, \(M \geq 30\) is already specified.

## Gurobi Code Formulation

```python
import gurobipy as gp

# Create a new model
model = gp.Model("Microwave_Vent_Optimization")

# Decision Variables
M = model.addVar(lb=30, ub=65, name="Microwaves", vtype=gp.GRB.INTEGER)
V = model.addVar(lb=0, name="Vents", vtype=gp.GRB.INTEGER)

# Objective Function: Maximize profit
model.setObjective(200*M + 300*V, gp.GRB.MAXIMIZE)

# Budget Constraint
model.addConstr(300*M + 400*V <= 20000, name="Budget_Constraint")

# Vent Sales Constraint
model.addConstr(V <= M/3, name="Vent_Sales_Constraint")

# Solve the model
model.optimize()

# Print the results
if model.status == gp.GRB.OPTIMAL:
    print(f"Optimal Solution: Microwaves = {M.varValue}, Vents = {V.varValue}")
    print(f"Max Profit: ${model.objVal}")
else:
    print("No optimal solution found.")
```

This Gurobi code captures the problem description and provides a solution. If no solution is found, it indicates that the problem is infeasible.