```json
{
  "sym_variables": [
    ("x0", "mechanized infantry companies"),
    ("x1", "engineer platoons"),
    ("x2", "reconnaissance troops"),
    ("x3", "air defense batteries"),
    ("x4", "water purification units"),
    ("x5", "logistics companies")
  ],
  "objective_function": "4*x0 + 3*x1 + 2*x2 + 4*x3 + 4*x4 + 2*x5",
  "constraints": [
    "13*x0 + 13*x2 >= 48",
    "13*x2 + 14*x5 >= 67",
    "4*x3 + 14*x4 >= 48",
    "13*x0 + 4*x3 + 14*x4 >= 44",
    "13*x0 + 17*x1 + 4*x3 >= 44",
    "17*x1 + 4*x3 + 14*x5 >= 44",
    "13*x0 + 17*x1 + 14*x4 >= 44",
    "17*x1 + 4*x3 + 14*x4 >= 44",
    "13*x0 + 4*x3 + 14*x4 >= 78",
    "13*x0 + 17*x1 + 4*x3 >= 78",
    "17*x1 + 4*x3 + 14*x5 >= 78",
    "13*x0 + 17*x1 + 14*x4 >= 78",
    "17*x1 + 4*x3 + 14*x4 >= 78",
    "13*x0 + 4*x3 + 14*x4 >= 72",
    "13*x0 + 17*x1 + 4*x3 >= 72",
    "17*x1 + 4*x3 + 14*x5 >= 72",
    "13*x0 + 17*x1 + 14*x4 >= 72",
    "17*x1 + 4*x3 + 14*x4 >= 72",
    "13*x0 + 4*x3 + 14*x4 >= 52",
    "13*x0 + 17*x1 + 4*x3 >= 52",
    "17*x1 + 4*x3 + 14*x5 >= 52",
    "13*x0 + 17*x1 + 14*x4 >= 52",
    "17*x1 + 4*x3 + 14*x4 >= 52",
    "13*x0 + 4*x3 + 14*x4 >= 55",
    "13*x0 + 17*x1 + 4*x3 >= 55",
    "17*x1 + 4*x3 + 14*x5 >= 55",
    "13*x0 + 17*x1 + 14*x4 >= 55",
    "17*x1 + 4*x3 + 14*x4 >= 55",
    "15*x0 + 12*x1 >= 39",
    "12*x1 + 3*x5 >= 20",
    "9*x4 + 3*x5 >= 55",
    "5*x3 + 9*x4 >= 28",
    "5*x3 + 3*x5 >= 38",
    "15*x0 + 5*x3 >= 33",
    "15*x0 + 5*x3 + 9*x4 >= 56",
    "15*x0 + 3*x2 + 3*x5 >= 56",
    "3*x2 + 9*x4 + 3*x5 >= 56",
    "15*x0 + 12*x1 + 3*x5 >= 56",
    "12*x1 + 3*x2 + 9*x4 >= 56",
    "12*x1 + 3*x2 + 3*x5 >= 56",
    "15*x0 + 3*x2 + 9*x4 >= 56",
    "15*x0 + 3*x2 + 5*x3 >= 56",
    "12*x1 + 5*x3 + 9*x4 >= 56",
    "5*x3 + 9*x4 + 3*x5 >= 56",
    "17*x1 + 14*x5 <= 241",
    "13*x0 + 17*x1 <= 382",
    "13*x0 + 14*x4 <= 353",
    "13*x0 + 14*x5 <= 470",
    "4*x3 + 14*x5 <= 369",
    "17*x1 + 14*x4 <= 148",
    "13*x2 + 14*x5 <= 157",
    "17*x1 + 13*x2 <= 363",
    "13*x0 + 4*x3 <= 346",
    "17*x1 + 4*x3 <= 340",
    "17*x1 + 13*x2 + 4*x3 <= 367",
    "17*x1 + 13*x2 + 14*x5 <= 310",
    "13*x0 + 4*x3 + 14*x4 <= 447",
    "17*x1 + 13*x2 + 14*x4 <= 428",
    "13*x0 + 17*x1 + 14*x4 <= 455",
    "13*x0 + 17*x1 + 14*x5 <= 225",
    "13*x0 + 14*x4 + 14*x5 <= 157",
    "13*x0 + 17*x1 + 13*x2 + 4*x3 + 14*x4 + 14*x5 <= 157",
    "13*x0 + 17*x1 + 13*x2 + 4*x3 + 14*x4 + 14*x5 <= 497",  
    "15*x0 + 12*x1 + 3*x2 + 5*x3 + 9*x4 + 3*x5 <= 343" 
  ]
}
```

```python
import gurobipy as gp

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

# Create variables
x = m.addVars(6, lb=0, vtype=gp.GRB.INTEGER, name=["x0", "x1", "x2", "x3", "x4", "x5"])


# Set objective
m.setObjective(4*x[0] + 3*x[1] + 2*x[2] + 4*x[3] + 4*x[4] + 2*x[5], gp.GRB.MAXIMIZE)

# Add constraints

deployment_weight = {0: 13, 1: 17, 2: 13, 3: 4, 4: 14, 5: 14}
defense_rating = {0: 15, 1: 12, 2: 3, 3: 5, 4: 9, 5: 3}

m.addConstr(13*x[0] + 13*x[2] >= 48)
m.addConstr(13*x[2] + 14*x[5] >= 67)
m.addConstr(4*x[3] + 14*x[4] >= 48)
m.addConstr(13*x[0] + 4*x[3] + 14*x[4] >= 44)


# ... (add all other constraints from the JSON "constraints" section, replacing symbolic variables with x[i])

m.addConstr(gp.quicksum(deployment_weight[i] * x[i] for i in range(6)) <= 497)
m.addConstr(gp.quicksum(defense_rating[i] * x[i] for i in range(6)) <= 343)


# Optimize model
m.optimize()

# Print solution
if m.status == gp.GRB.OPTIMAL:
    print('Obj: %g' % m.objVal)
    for v in m.getVars():
        print('%s %g' % (v.varName, v.x))
elif m.status == gp.GRB.INFEASIBLE:
    print("Model is infeasible")
else:
    print("Optimization ended with status %d" % m.status)

```