## Problem Description and Formulation

The problem is a linear programming optimization problem. The goal is to maximize the profit of a furniture store that sells bookcases and dining tables under certain constraints.

### Variables
- Let \(B\) be the number of bookcases.
- Let \(D\) be the number of dining tables.

### Objective Function
The profit per bookcase is $150, and the profit per dining table is $200. The objective is to maximize the total profit \(P\):
\[ P = 150B + 200D \]

### Constraints
1. **Floor Space Constraint**: The store has 1200 sq ft of floor space available. A bookcase requires 15 sq ft, and a dining table requires 8 sq ft.
\[ 15B + 8D \leq 1200 \]

2. **Bookcase Percentage Constraint**: At least 20% of all items in stock must be bookcases.
\[ B \geq 0.20(B + D) \]
Simplifying:
\[ B \geq 0.20B + 0.20D \]
\[ 0.80B \geq 0.20D \]
\[ 4B \geq D \]

3. **Capital Constraint**: A bookcase ties up $1200, and a dining table ties up $1500 in capital. The store wants to have a maximum of $50,000 worth of capital tied up.
\[ 1200B + 1500D \leq 50000 \]

4. **Non-Negativity Constraints**: The number of bookcases and dining tables cannot be negative.
\[ B \geq 0, D \geq 0 \]

## Gurobi Code

```python
import gurobi

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

    # Define variables
    B = model.addVar(lb=0, name="Bookcases", vtype=gurobi.GRB.INTEGER)
    D = model.addVar(lb=0, name="Dining_Tables", vtype=gurobi.GRB.INTEGER)

    # Objective function: Maximize profit
    model.setObjective(150 * B + 200 * D, gurobi.GRB.MAXIMIZE)

    # Floor space constraint
    model.addConstr(15 * B + 8 * D <= 1200, name="Floor_Space")

    # Bookcase percentage constraint
    model.addConstr(4 * B >= D, name="Bookcase_Percentage")

    # Capital constraint
    model.addConstr(1200 * B + 1500 * D <= 50000, name="Capital")

    # Solve the model
    model.optimize()

    # Print the solution
    if model.status == gurobi.GRB.OPTIMAL:
        print(f"Optimal Solution:")
        print(f"Bookcases: {B.varValue}")
        print(f"Dining Tables: {D.varValue}")
        print(f"Max Profit: {model.objVal}")
    else:
        print("No optimal solution found.")

solve_furniture_store_problem()
```