## Problem Description and Formulation

The problem is a linear programming (LP) optimization problem that aims to minimize the cost of operating two different locations, a mall kiosk and a flagship store, to meet the daily demand for three different sized gift boxes: small, medium, and large.

### Decision Variables

Let's define the decision variables:

- $x_1$: The number of hours to operate the mall kiosk per day.
- $x_2$: The number of hours to operate the flagship store per day.

### Objective Function

The objective is to minimize the total operating cost per day. The mall kiosk costs $150 to operate per hour, and the flagship store costs $500 to operate per hour. Therefore, the objective function can be formulated as:

Minimize $150x_1 + 500x_2$

### Constraints

1. **Demand Constraints**: The company must make a minimum of 80 small gift boxes, 100 medium gift boxes, and 50 large gift boxes per day.
   - The mall kiosk can make 5 small, 6 medium, and 2 large gift boxes per hour.
   - The flagship store can make 10 small, 15 medium, and 9 large gift boxes per hour.

   Therefore, the demand constraints can be formulated as:
   - $5x_1 + 10x_2 \geq 80$ (small gift boxes)
   - $6x_1 + 15x_2 \geq 100$ (medium gift boxes)
   - $2x_1 + 9x_2 \geq 50$ (large gift boxes)

2. **Non-Negativity Constraints**: The number of hours to operate each location cannot be negative.
   - $x_1 \geq 0$
   - $x_2 \geq 0$

## Gurobi Code

```python
import gurobi

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

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

    # Define the objective function
    model.setObjective(150 * x1 + 500 * x2, gurobi.GRB.MINIMIZE)

    # Add demand constraints
    model.addConstr(5 * x1 + 10 * x2 >= 80, name="small_gift_boxes")
    model.addConstr(6 * x1 + 15 * x2 >= 100, name="medium_gift_boxes")
    model.addConstr(2 * x1 + 9 * x2 >= 50, name="large_gift_boxes")

    # Optimize the model
    model.optimize()

    # Print the solution
    if model.status == gurobi.GRB.OPTIMAL:
        print("Optimal Solution:")
        print(f"Mall Kiosk Hours: {x1.varValue}")
        print(f"Flagship Store Hours: {x2.varValue}")
        print(f"Total Cost: {model.objVal}")
    else:
        print("The problem is infeasible")

solve_problem()
```