## Problem Description and Formulation

The problem is a classic example of a linear programming problem. Jake has two 3D-printers, Printer A and Printer B, and wants to maximize his profit by producing superhero and cartoon figurines. The production of each type of figurine requires a certain amount of time on each printer, and there are limits on how many hours each printer can run.

Let's define the decision variables:

* $x$: the number of superhero figurines produced
* $y$: the number of cartoon figurines produced

The objective function is to maximize the profit:

* Profit = $10x + 8y$

The constraints are:

* Printer A can run for at most 1000 hours: $5x + 3y \leq 1000$
* Printer B can run for at most 1000 hours: $4x + 7y \leq 1000$
* Non-negativity constraints: $x \geq 0, y \geq 0$

## Gurobi Code

```python
import gurobi

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

    # Define the decision variables
    x = model.addVar(lb=0, name="superhero_figurines")
    y = model.addVar(lb=0, name="cartoon_figurines")

    # Define the objective function
    model.setObjective(10 * x + 8 * y, gurobi.GRB.MAXIMIZE)

    # Define the constraints
    model.addConstr(5 * x + 3 * y <= 1000, name="printer_A_constraint")
    model.addConstr(4 * x + 7 * y <= 1000, name="printer_B_constraint")

    # Optimize the model
    model.optimize()

    # Print the solution
    if model.status == gurobi.GRB.OPTIMAL:
        print(f"Optimal solution: x = {x.varValue}, y = {y.varValue}")
        print(f"Maximum profit: ${10 * x.varValue + 8 * y.varValue:.2f}")
    else:
        print("No optimal solution found")

solve_optimization_problem()
```