## Problem Description and Formulation

The problem is a linear programming optimization problem. The sign company produces two types of signs: LED signs and neon signs. The production of these signs is limited by the capacity of the teams that make them and the senior QC inspector who checks their quality.

- Team A can make at most 3 LED signs a day.
- Team B can make at most 4 neon signs a day.
- The senior QC inspector can check at most 7 signs in total per day.

The profit per LED sign is $1500, and the profit per neon sign is $1450. The goal is to determine how many of each type of sign should be made to maximize profit.

## Symbolic Representation

Let's denote:
- \(x\) as the number of LED signs made per day.
- \(y\) as the number of neon signs made per day.

The objective function to maximize profit (\(P\)) is:
\[ P = 1500x + 1450y \]

Subject to the constraints:
1. \( x \leq 3 \) (Team A's capacity constraint)
2. \( y \leq 4 \) (Team B's capacity constraint)
3. \( x + y \leq 7 \) (Senior QC inspector's capacity constraint)
4. \( x \geq 0 \) and \( y \geq 0 \) (Non-negativity constraints, as the number of signs cannot be negative)

## Gurobi Code

```python
import gurobi

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

    # Define variables
    x = model.addVar(lb=0, ub=3, name="LED_signs")  # Number of LED signs
    y = model.addVar(lb=0, ub=4, name="neon_signs")  # Number of neon signs

    # Objective function: Maximize profit
    model.setObjective(1500 * x + 1450 * y, gurobi.GRB.MAXIMIZE)

    # Constraints
    model.addConstr(x + y <= 7, name="QC_inspector_constraint")

    # Solve the model
    model.optimize()

    # Print the solution
    if model.status == gurobi.GRB.OPTIMAL:
        print(f"Optimal solution: LED signs = {x.varValue}, neon signs = {y.varValue}")
        print(f"Max Profit: ${1500 * x.varValue + 1450 * y.varValue}")
    else:
        print("The model is infeasible")

solve_sign_problem()
```