## Problem Description and Formulation

The problem is an optimization problem with the goal to maximize the objective function:

\[ 6 \times \text{light infantry companies} + 6 \times \text{air defense batteries} + 2 \times \text{military intelligence companies} \]

subject to several constraints related to logistical capacity and fuel demand.

## Constraints

1. **Logistical Capacity Constraints:**
   - Each light infantry company has a logistical capacity of 28.
   - Each air defense battery has a logistical capacity of 8.
   - Each military intelligence company has a logistical capacity of 22.
   - Total logistical capacity must be 31 or more.
   - Total logistical capacity from air defense batteries and military intelligence companies should be 105 or less.
   - Total logistical capacity from light infantry companies and military intelligence companies should be 123 or less.
   - Total logistical capacity from light infantry companies and air defense batteries should be no more than 126.
   - Total logistical capacity from all three should be no more than 126.

2. **Fuel Demand Constraints:**
   - Each light infantry company requires 24 gallons/day of fuel.
   - Each air defense battery requires 11 gallons/day of fuel.
   - Each military intelligence company requires 9 gallons/day of fuel.
   - Total fuel demand must be at least 88 gal/day.
   - Total fuel demand from light infantry companies and military intelligence companies must be no more than 252 gal/day.
   - Total fuel demand from air defense batteries and military intelligence companies must be no more than 212 gallons/day.
   - Total fuel demand from all three must be no greater than 212 gallons/day.

3. **Variable Constraints:**
   - The number of light infantry companies, air defense batteries, and military intelligence companies must be whole numbers.

## Gurobi Code Formulation

```python
import gurobi

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

    # Define variables
    light_infantry_companies = model.addVar(name="light_infantry_companies", vtype=gurobi.GRB.INTEGER)
    air_defense_batteries = model.addVar(name="air_defense_batteries", vtype=gurobi.GRB.INTEGER)
    military_intelligence_companies = model.addVar(name="military_intelligence_companies", vtype=gurobi.GRB.INTEGER)

    # Objective function
    model.setObjective(6 * light_infantry_companies + 6 * air_defense_batteries + 2 * military_intelligence_companies, gurobi.GRB.MAXIMIZE)

    # Logistical capacity constraints
    model.addConstr(28 * light_infantry_companies + 8 * air_defense_batteries + 22 * military_intelligence_companies >= 31)
    model.addConstr(8 * air_defense_batteries + 22 * military_intelligence_companies <= 105)
    model.addConstr(28 * light_infantry_companies + 22 * military_intelligence_companies <= 123)
    model.addConstr(28 * light_infantry_companies + 8 * air_defense_batteries <= 126)
    model.addConstr(28 * light_infantry_companies + 8 * air_defense_batteries + 22 * military_intelligence_companies <= 126)

    # Fuel demand constraints
    model.addConstr(24 * light_infantry_companies + 11 * air_defense_batteries + 9 * military_intelligence_companies >= 88)
    model.addConstr(24 * light_infantry_companies + 9 * military_intelligence_companies <= 252)
    model.addConstr(11 * air_defense_batteries + 9 * military_intelligence_companies <= 212)
    model.addConstr(24 * light_infantry_companies + 11 * air_defense_batteries + 9 * military_intelligence_companies <= 212)

    # Non-negativity constraints (implied by Gurobi for integer variables)

    # Solve the model
    model.optimize()

    # Print the solution
    if model.status == gurobi.GRB.OPTIMAL:
        print("Optimal solution found.")
        print(f"Light Infantry Companies: {light_infantry_companies.varValue}")
        print(f"Air Defense Batteries: {air_defense_batteries.varValue}")
        print(f"Military Intelligence Companies: {military_intelligence_companies.varValue}")
        print(f"Objective: {model.objVal}")
    else:
        print("No optimal solution found.")

solve_optimization_problem()
```