## Problem Description and Formulation

The jewelry company produces and sells two types of products: bracelets and rings. The production of these items is limited by the capacity of the teams and the master jeweler.

- The team making bracelets can produce at most 4 bracelets per day.
- The team making rings can produce at most 7 rings per day.
- The master jeweler can approve at most 30 jewels (bracelets or rings) per day.

The profit per bracelet is $700, and the profit per ring is $300. The goal is to determine how many bracelets and rings the company should produce daily to maximize profit.

## Symbolic Representation

Let's denote:
- \(B\) as the number of bracelets produced per day,
- \(R\) as the number of rings produced per day.

The problem can be formulated as a linear programming problem:

### Objective Function

Maximize the total profit \(P = 700B + 300R\).

### Constraints

1. \(B \leq 4\) (bracelet production limit),
2. \(R \leq 7\) (ring production limit),
3. \(B + R \leq 30\) (master jeweler approval limit),
4. \(B \geq 0\) and \(R \geq 0\) (non-negativity constraints, as production cannot be negative).

## Gurobi Code

```python
import gurobi

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

    # Define variables
    B = model.addVar(lb=0, ub=4, name="Bracelets")
    R = model.addVar(lb=0, ub=7, name="Rings")

    # Objective function: Maximize profit
    model.setObjective(700*B + 300*R, gurobi.GRB.MAXIMIZE)

    # Constraints
    model.addConstr(B <= 4, name="Bracelet_production_limit")
    model.addConstr(R <= 7, name="Ring_production_limit")
    model.addConstr(B + R <= 30, name="Master_jeweler_approval_limit")

    # Optimize
    model.optimize()

    # Print solution
    if model.status == gurobi.GRB.OPTIMAL:
        print(f"Optimal solution: Bracelets = {B.varValue}, Rings = {R.varValue}")
        print(f"Maximum profit: ${model.objVal:.2f}")
    else:
        print("No optimal solution found.")

# Run the optimization
jewelry_production_optimization()
```