## Problem Description and Formulation

The problem is an optimization problem that involves maximizing an objective function subject to several constraints. The variables are 'knishes' and 'kiwis', and the objective function to be maximized is \(4 \times \text{knishes} + 8 \times \text{kiwis}\).

The constraints are as follows:
1. \(\text{knishes} \geq 0\) and \(\text{kiwis} \geq 0\)
2. \(22 \times \text{knishes} + 28 \times \text{kiwis} \geq 21\) (carbohydrates constraint)
3. \(14 \times \text{knishes} + 10 \times \text{kiwis} \geq 40\) (calcium constraint)
4. \(9 \times \text{knishes} - 3 \times \text{kiwis} \geq 0\)
5. \(22 \times \text{knishes} + 28 \times \text{kiwis} \leq 49\) (carbohydrates upper bound)
6. \(14 \times \text{knishes} + 10 \times \text{kiwis} \leq 77\) (calcium upper bound)
7. \(\text{knishes}\) is an integer
8. \(\text{kiwis}\) can be a non-integer

## Gurobi Code Formulation

```python
import gurobi

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

    # Define variables
    knishes = model.addVar(vtype=gurobi.GRB.INTEGER, name="knishes", lb=0)
    kiwis = model.addVar(vtype=gurobi.GRB.CONTINUOUS, name="kiwis", lb=0)

    # Objective function: Maximize 4 * knishes + 8 * kiwis
    model.setObjective(4 * knishes + 8 * kiwis, gurobi.GRB.MAXIMIZE)

    # Constraints
    model.addConstr(22 * knishes + 28 * kiwis >= 21, name="carbohydrates_min")
    model.addConstr(14 * knishes + 10 * kiwis >= 40, name="calcium_min")
    model.addConstr(9 * knishes - 3 * kiwis >= 0, name="knishes_kiwis_ratio")
    model.addConstr(22 * knishes + 28 * kiwis <= 49, name="carbohydrates_max49")
    model.addConstr(14 * knishes + 10 * kiwis <= 77, name="calcium_max77")

    # Optimize the model
    model.optimize()

    # Print the status of the optimization
    if model.status == gurobi.GRB.OPTIMAL:
        print("Optimal solution found.")
        print(f"Knishes: {knishes.varValue}, Kiwis: {kiwis.varValue}")
    elif model.status == gurobi.GRB.INFEASIBLE:
        print("No feasible solution exists.")
    else:
        print("Optimization failed.")

solve_optimization_problem()
```