## Problem Description and Formulation

The farmer has 30 cows and wants to minimize the cost of feeding them with enriched hay and chicken scraps while ensuring they receive the required nutrition. The nutritional content of each kilogram of enriched hay and chicken scraps is given, along with the daily requirements for protein, vitamins, and minerals for each cow.

## Decision Variables

Let \(x\) be the amount of enriched hay (in kilograms) and \(y\) be the amount of chicken scraps (in kilograms) that each cow should be fed.

## Objective Function

The objective is to minimize the total cost of feeding all 30 cows. The cost per kilogram of enriched hay is $200, and the cost per kilogram of chicken scraps is $350. Therefore, the total cost \(C\) for feeding one cow is \(200x + 350y\), and for 30 cows, it is \(30(200x + 350y)\).

## Constraints

1. **Protein Requirement**: Each cow requires at least 1.5 kilograms of protein per day. Given that enriched hay contains 0.3 kilograms of protein per kilogram and chicken scraps contain 0.6 kilograms of protein per kilogram, the protein constraint is \(0.3x + 0.6y \geq 1.5\).

2. **Vitamins Requirement and Limit**: Each cow can have at most 0.5 kilograms of vitamins per day. Given that enriched hay contains 0.1 kilograms of vitamins per kilogram and chicken scraps contain 0.2 kilograms of vitamins per kilogram, the vitamins constraint is \(0.1x + 0.2y \leq 0.5\).

3. **Minerals Requirement**: Each cow requires at least 0.5 kilograms of minerals per day. Given that enriched hay contains 0.15 kilograms of minerals per kilogram and chicken scraps contain 0.05 kilograms of minerals per kilogram, the minerals constraint is \(0.15x + 0.05y \geq 0.5\).

4. **Non-Negativity**: \(x \geq 0\) and \(y \geq 0\), as the amounts of enriched hay and chicken scraps cannot be negative.

## Gurobi Code

```python
import gurobipy as gp
from gurobipy import GRB

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

# Decision variables
x = model.addVar(lb=0, name="enriched_hay")  # kg per cow
y = model.addVar(lb=0, name="chicken_scraps")  # kg per cow

# Objective: Minimize cost for one cow
model.setObjective(200*x + 350*y, GRB.MINIMIZE)

# Constraints
protein_requirement = model.addConstr(0.3*x + 0.6*y >= 1.5, name="protein")
vitamins_limit = model.addConstr(0.1*x + 0.2*y <= 0.5, name="vitamins")
minerals_requirement = model.addConstr(0.15*x + 0.05*y >= 0.5, name="minerals")

# Solve the model
model.optimize()

# Print solution
if model.status == GRB.OPTIMAL:
    print(f"Optimal cost per cow: ${model.objVal:.2f}")
    print(f"Enriched hay per cow: {x.varValue:.2f} kg")
    print(f"Chicken scraps per cow: {y.varValue:.2f} kg")
    print(f"Total cost for 30 cows: ${model.objVal * 30:.2f}")
else:
    print("No optimal solution found.")
```