## Problem Description and Formulation

East Oak Designs wants to maximize its profit by determining the optimal production plan for sofas and kitchen cabinets. The profit from each sofa is $400, and from each kitchen cabinet is $1200. The company has limited resources: 100 gallons of lacquer and 300 lengths of high-quality oak per week. Each sofa requires 3 gallons of lacquer and 10 lengths of oak, while each kitchen cabinet requires 10 gallons of lacquer and 24 lengths of oak.

## Decision Variables

Let \(S\) be the number of sofas produced and \(K\) be the number of kitchen cabinets produced.

## Objective Function

The objective is to maximize the total profit \(P = 400S + 1200K\).

## Constraints

1. Lacquer constraint: \(3S + 10K \leq 100\)
2. Oak constraint: \(10S + 24K \leq 300\)
3. Non-negativity constraints: \(S \geq 0, K \geq 0\)

## Gurobi Code

```python
import gurobi

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

    # Define decision variables
    S = model.addVar(lb=0, name="Sofa")
    K = model.addVar(lb=0, name="Kitchen_Cabinet")

    # Objective function: Maximize profit
    model.setObjective(400 * S + 1200 * K, gurobi.GRB.MAXIMIZE)

    # Lacquer constraint
    model.addConstr(3 * S + 10 * K <= 100, name="Lacquer_Constraint")

    # Oak constraint
    model.addConstr(10 * S + 24 * K <= 300, name="Oak_Constraint")

    # Optimize the model
    model.optimize()

    # Print the status of the optimization
    if model.status == gurobi.GRB.OPTIMAL:
        print("Optimal solution found.")
        print(f"Sofas to produce: {S.varValue}")
        print(f"Kitchen cabinets to produce: {K.varValue}")
        print(f"Maximum profit: ${400 * S.varValue + 1200 * K.varValue}")
    else:
        print("No optimal solution found.")

# Run the optimization
east_oak_designs_optimization()
```