## Problem Description and Formulation

The problem is a linear programming (LP) optimization problem. The goal is to minimize the wage bill for a summer painting company by determining the optimal number of students and full-time employees to hire.

### Decision Variables

- Let \(S\) be the number of students to hire.
- Let \(F\) be the number of full-time employees to hire.

### Objective Function

The objective is to minimize the total wage bill. The wage for students is $200 per week, and for full-time employees, it is $500 per week. Therefore, the objective function can be formulated as:

\[ \text{Minimize:} \quad 200S + 500F \]

### Constraints

1. **Total Number of Painters**: The company needs at least 100 painters.
   \[ S + F \geq 100 \]

2. **Minimum Full-time Employees**: At least 30 of the painters must be full-time employees.
   \[ F \geq 30 \]

3. **Experience Requirement**: The number of full-time employees should be at least half the number of students.
   \[ F \geq \frac{1}{2}S \]
   or equivalently,
   \[ 2F \geq S \]

4. **Non-Negativity**: The number of students and full-time employees cannot be negative.
   \[ S \geq 0, F \geq 0 \]

## Gurobi Code

```python
import gurobi

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

    # Define the decision variables
    S = model.addVar(lb=0, name="Students")
    F = model.addVar(lb=0, name="Full-time_Employees")

    # Objective function: Minimize the wage bill
    model.setObjective(200 * S + 500 * F, gurobi.GRB.MINIMIZE)

    # Constraints
    model.addConstr(S + F >= 100, name="Total_Painters")
    model.addConstr(F >= 30, name="Min_Full-time_Employees")
    model.addConstr(2 * F >= S, name="Experience_Requirement")

    # Optimize the model
    model.optimize()

    # Check if the model is optimized
    if model.status == gurobi.GRB.OPTIMAL:
        print("Optimal Solution:")
        print(f"Students: {S.varValue}")
        print(f"Full-time Employees: {F.varValue}")
        print(f"Minimum Wage Bill: ${model.objVal:.2f}")
    else:
        print("The model is infeasible.")

solve_painting_company_problem()
```

This Gurobi code formulates the LP problem as described and solves it to find the optimal number of students and full-time employees that minimizes the wage bill while satisfying all the given constraints.