## Problem Description and Formulation

The company manufactures two types of calculators: scientific and graphing. The production of these calculators requires silicon, plastic, and silver. The goal is to maximize profit given the limited availability of these resources.

### Decision Variables

- \(x_s\): Number of scientific calculators produced
- \(x_g\): Number of graphing calculators produced

### Objective Function

The profit per scientific calculator is $6, and the profit per graphing calculator is $8. The objective is to maximize the total profit \(P\):

\[P = 6x_s + 8x_g\]

### Constraints

1. **Silicon Constraint**: 2 grams of silicon are needed for a scientific calculator, and 4 grams for a graphing calculator. There are 100 grams of silicon available.

\[2x_s + 4x_g \leq 100\]

2. **Plastic Constraint**: 4 grams of plastic are needed for a scientific calculator, and 6 grams for a graphing calculator. There are 200 grams of plastic available.

\[4x_s + 6x_g \leq 200\]

3. **Silver Constraint**: 1 gram of silver is needed for a scientific calculator, and 2 grams for a graphing calculator. There are 50 grams of silver available.

\[x_s + 2x_g \leq 50\]

4. **Non-Negativity Constraints**: The number of calculators produced cannot be negative.

\[x_s \geq 0, x_g \geq 0\]

## Gurobi Code

```python
import gurobi

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

    # Define decision variables
    x_s = model.addVar(name="scientific_calculators", lb=0, vtype=gurobi.GRB.CONTINUOUS)
    x_g = model.addVar(name="graphing_calculators", lb=0, vtype=gurobi.GRB.CONTINUOUS)

    # Define objective function
    model.setObjective(6 * x_s + 8 * x_g, gurobi.GRB.MAXIMIZE)

    # Add constraints
    model.addConstr(2 * x_s + 4 * x_g <= 100, name="silicon_constraint")
    model.addConstr(4 * x_s + 6 * x_g <= 200, name="plastic_constraint")
    model.addConstr(x_s + 2 * x_g <= 50, name="silver_constraint")

    # Optimize model
    model.optimize()

    # Print solution
    if model.status == gurobi.GRB.OPTIMAL:
        print(f"Optimal profit: ${model.objVal:.2f}")
        print(f"Scientific calculators: {x_s.x:.2f}")
        print(f"Graphing calculators: {x_g.x:.2f}")
    else:
        print("The problem is infeasible.")

solve_calculator_production()
```