## Problem Description and Formulation

The problem requires minimizing the objective function \(7.49 \times \text{office chairs} + 9.65 \times \text{color printers}\) subject to several constraints related to storage space and dollar cost.

## Constraints

1. Storage space used by office chairs and color printers:
   - Office chairs: \(19 \times \text{office chairs}\)
   - Color printers: \(16 \times \text{color printers}\)
   - Total storage space used: \(19 \times \text{office chairs} + 16 \times \text{color printers}\)
   - Minimum storage space to be used: 25 sq. ft.
   - Maximum storage space available: 110 sq. ft, but a more restrictive upper bound is 71 sq. ft.

2. Dollar cost of office chairs and color printers:
   - Office chairs: \(8 \times \text{office chairs}\)
   - Color printers: \(21 \times \text{color printers}\)
   - Total dollar cost: \(8 \times \text{office chairs} + 21 \times \text{color printers}\)
   - Minimum cost: $30
   - Maximum cost: $79, but a more restrictive upper bound is $60.

3. Additional constraints:
   - \(5 \times \text{office chairs} - 7 \times \text{color printers} \geq 0\)
   - Office chairs and color printers must be integers.

## Gurobi Code Formulation

```python
import gurobi as gp

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

# Define the variables
office_chairs = m.addVar(name="office_chairs", vtype=gp.GRB.INTEGER)
color_printers = m.addVar(name="color_printers", vtype=gp.GRB.INTEGER)

# Objective function: Minimize 7.49 * office_chairs + 9.65 * color_printers
m.setObjective(7.49 * office_chairs + 9.65 * color_printers, gp.GRB.MINIMIZE)

# Constraints
m.addConstraint(19 * office_chairs + 16 * color_printers >= 25, name="min_storage")
m.addConstraint(19 * office_chairs + 16 * color_printers <= 71, name="max_storage")
m.addConstraint(8 * office_chairs + 21 * color_printers >= 30, name="min_cost")
m.addConstraint(8 * office_chairs + 21 * color_printers <= 60, name="max_cost")
m.addConstraint(5 * office_chairs - 7 * color_printers >= 0, name="balance")

# Solve the model
m.optimize()

# Print the solution
if m.status == gp.GRB.OPTIMAL:
    print("Optimal Solution:")
    print(f"Office Chairs: {office_chairs.varValue}")
    print(f"Color Printers: {color_printers.varValue}")
    print(f"Objective: {m.objVal}")
else:
    print("The model is infeasible.")
```