## Problem Description and Formulation

The problem is a linear programming optimization problem. The goal is to maximize the profit of a hot dog stand by determining the number of regular and premium hot dogs to sell. The stand sells two types of hot dogs: regular hot dogs at a profit of $3 each and premium hot dogs at a profit of $5 each.

## Decision Variables

- \(x_1\): The number of regular hot dogs to sell.
- \(x_2\): The number of premium hot dogs to sell.

## Objective Function

The objective is to maximize the total profit \(P\), which is given by:
\[P = 3x_1 + 5x_2\]

## Constraints

1. **Demand Constraints**:
   - The demand for regular hot dogs is at most 80: \(x_1 \leq 80\)
   - The demand for premium hot dogs is at most 70: \(x_2 \leq 70\)

2. **Supply Constraint**:
   - The stand can sell at most 120 hot dogs of either type: \(x_1 + x_2 \leq 120\)

3. **Non-Negativity Constraints**:
   - \(x_1 \geq 0\)
   - \(x_2 \geq 0\)

## Gurobi Code

```python
import gurobi

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

    # Define the decision variables
    x1 = model.addVar(lb=0, name="regular_hot_dogs")
    x2 = model.addVar(lb=0, name="premium_hot_dogs")

    # Objective function: Maximize profit
    model.setObjective(3*x1 + 5*x2, gurobi.GRB.MAXIMIZE)

    # Demand constraints
    model.addConstr(x1 <= 80, name="regular_demand_constraint")
    model.addConstr(x2 <= 70, name="premium_demand_constraint")

    # Supply constraint
    model.addConstr(x1 + x2 <= 120, name="supply_constraint")

    # Optimize the model
    model.optimize()

    # Check if the model is optimized
    if model.status == gurobi.GRB.OPTIMAL:
        print(f"Optimal Solution:")
        print(f"Regular Hot Dogs: {x1.varValue}")
        print(f"Premium Hot Dogs: {x2.varValue}")
        print(f"Max Profit: {model.objVal}")
    else:
        print("The model is infeasible or unbounded.")

solve_hot_dog_stand_problem()
```