## Problem Description and Formulation

The gardening company needs to minimize its wage bill while meeting certain requirements for the number of gardeners and their types. Let's denote:

- \(x_1\) as the number of newcomers (earning $400 a week)
- \(x_2\) as the number of full-time employees (earning $700 a week)

The requirements given are:
1. The company needs at least 100 gardeners: \(x_1 + x_2 \geq 100\)
2. At least 40 must be full-time employees: \(x_2 \geq 40\)
3. The number of full-time employees should be at least half the number of newcomers: \(x_2 \geq 0.5x_1\)

The objective is to minimize the total wage bill: \(400x_1 + 700x_2\)

## Converting to Gurobi Code

To solve this linear programming problem using Gurobi, we will use the Gurobi Python interface. First, ensure you have Gurobi installed in your Python environment. You can install it via pip if you haven't already:

```bash
pip install gurobi
```

Now, let's formulate and solve the problem:

```python
import gurobi as gp
from gurobi import GRB

# Create a new model
model = gp.Model("Gardening_Company_Optimization")

# Define the variables
x1 = model.addVar(vtype=GRB.INTEGER, name="newcomers")  # Number of newcomers
x2 = model.addVar(vtype=GRB.INTEGER, name="full_time_employees")  # Number of full-time employees

# Objective: Minimize the wage bill
model.setObjective(400 * x1 + 700 * x2, GRB.MINIMIZE)

# Constraints
model.addConstr(x1 + x2 >= 100, name="total_gardeners")  # At least 100 gardeners
model.addConstr(x2 >= 40, name="min_full_time")  # At least 40 full-time employees
model.addConstr(x2 >= 0.5 * x1, name="supervision_requirement")  # Full-time employees >= half of newcomers

# Optimize the model
model.optimize()

# Print the results
if model.status == GRB.OPTIMAL:
    print(f"Optimal solution found.")
    print(f"Newcomers: {x1.varValue}")
    print(f"Full-time employees: {x2.varValue}")
    print(f"Minimum wage bill: ${400 * x1.varValue + 700 * x2.varValue}")
else:
    print("No optimal solution found.")
```