## Problem Description and Formulation

The company aims to minimize the weekly wage bill while meeting certain requirements regarding the number of international and local employees. Let's denote:

- \(x\) as the number of international employees
- \(y\) as the number of local employees

The objective is to minimize the total weekly wage bill, which can be represented as \(500x + 1200y\).

The constraints based on the problem description are:

1. **Total Employees**: The project requires at least 50 employees.
   - \(x + y \geq 50\)

2. **Local Employees Requirement**: At least 12 employees must be local.
   - \(y \geq 12\)

3. **Local vs. International Employees Ratio**: The number of local employees should be at least a third of the number of international employees.
   - \(y \geq \frac{1}{3}x\)

4. **Weekly Wage Bill**: The weekly wage bill must be kept below $40,000.
   - \(500x + 1200y \leq 40000\)

5. **Non-Negativity**: The number of employees cannot be negative.
   - \(x \geq 0, y \geq 0\)

However, since employees cannot be negative and the constraints already imply positive values for \(x\) and \(y\), we focus on the constraints listed.

## Gurobi Code Formulation

```python
import gurobi

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

    # Define variables
    x = model.addVar(lb=0, name="international_employees", vtype=gurobi.GRB.INTEGER)
    y = model.addVar(lb=0, name="local_employees", vtype=gurobi.GRB.INTEGER)

    # Objective: Minimize the total weekly wage bill
    model.setObjective(500*x + 1200*y, gurobi.GRB.MINIMIZE)

    # Constraints
    model.addConstr(x + y >= 50, name="total_employees")
    model.addConstr(y >= 12, name="local_employees_requirement")
    model.addConstr(y >= x/3, name="local_vs_international_ratio")
    model.addConstr(500*x + 1200*y <= 40000, name="weekly_wage_bill")

    # Solve the model
    model.optimize()

    # Check if the model is optimized
    if model.status == gurobi.GRB.OPTIMAL:
        print("Optimal Solution:")
        print(f"International Employees: {x.varValue}")
        print(f"Local Employees: {y.varValue}")
        print(f"Minimum Weekly Wage Bill: ${model.objVal:.2f}")
    else:
        print("The model is infeasible.")

solve_optimization_problem()
```

This code defines the optimization problem as per the given requirements and uses Gurobi to find an optimal solution that minimizes the weekly wage bill while satisfying all constraints. If no feasible solution exists, it indicates that the problem is infeasible.