## Problem Description and Formulation

The problem is a linear programming optimization problem where the goal is to maximize points by catching fish and birds, subject to certain constraints.

- Let \(F\) be the number of fish caught.
- Let \(B\) be the number of birds caught.

The objective function to maximize points is: \(4F + 6B\).

The constraints are:
1. \(F \geq 6\) (at least 6 fish)
2. \(B \geq 2\) (at least 2 birds)
3. \(F \leq 9\) (at most 9 fish)
4. \(B \leq 4\) (at most 4 birds)
5. \(F + B \leq 12\) (no more than 12 animals in total)

## Gurobi Code

To solve this problem using Gurobi in Python, we can use the following code:

```python
import gurobi

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

    # Define variables
    F = model.addVar(lb=0, ub=None, name="Fish")
    B = model.addVar(lb=0, ub=None, name="Birds")

    # Objective function: Maximize 4F + 6B
    model.setObjective(4 * F + 6 * B, gurobi.GRB.MAXIMIZE)

    # Constraints
    model.addConstr(F >= 6, name="Fish_Min")
    model.addConstr(B >= 2, name="Birds_Min")
    model.addConstr(F <= 9, name="Fish_Max")
    model.addConstr(B <= 4, name="Birds_Max")
    model.addConstr(F + B <= 12, name="Total_Animals")

    # Integrate new variables and constraints
    model.update()

    # Solve the model
    model.optimize()

    # Print solution
    if model.status == gurobi.GRB.OPTIMAL:
        print(f"Optimal points: {model.objVal}")
        print(f"Fish to catch: {F.varValue}")
        print(f"Birds to catch: {B.varValue}")
    else:
        print("The model is infeasible")

solve_optimization_problem()
```

This code defines the problem in Gurobi, solves it, and prints out the optimal solution if one exists.