To solve this optimization problem, we first need to define the variables and the objective function, and then add all the constraints. We will use the Gurobi library in Python.

```python
import gurobi as gp
from gurobi import GRB

# Define the variables
model = gp.Model("optimization_problem")

# Variables
milligrams_of_vitamin_B3 = model.addVar(lb=0, ub=GRB.INFINITY, name="milligrams_of_vitamin_B3", vtype=GRB.INTEGER)
milligrams_of_vitamin_C = model.addVar(lb=0, ub=GRB.INFINITY, name="milligrams_of_vitamin_C", vtype=GRB.INTEGER)
milligrams_of_vitamin_B9 = model.addVar(lb=0, ub=GRB.INFINITY, name="milligrams_of_vitamin_B9", vtype=GRB.INTEGER)
milligrams_of_vitamin_B4 = model.addVar(lb=0, ub=GRB.INFINITY, name="milligrams_of_vitamin_B4", vtype=GRB.INTEGER)
milligrams_of_vitamin_B7 = model.addVar(lb=0, ub=GRB.INFINITY, name="milligrams_of_vitamin_B7")
grams_of_protein = model.addVar(lb=0, ub=GRB.INFINITY, name="grams_of_protein")

# Objective function
model.setObjective(3.07 * milligrams_of_vitamin_B3 + 9.93 * milligrams_of_vitamin_C + 7.71 * milligrams_of_vitamin_B9 + 
                   4.13 * milligrams_of_vitamin_B4 + 7.76 * milligrams_of_vitamin_B7 + 8.37 * grams_of_protein, GRB.MAXIMIZE)

# Constraints
# Cardiovascular support index constraints
model.addConstr(5.88 * milligrams_of_vitamin_B3 <= 180, name="cardiovascular_support_index_B3")
model.addConstr(4.37 * milligrams_of_vitamin_C <= 180, name="cardiovascular_support_index_C")
model.addConstr(5.58 * milligrams_of_vitamin_B9 <= 180, name="cardiovascular_support_index_B9")
model.addConstr(3.89 * milligrams_of_vitamin_B4 <= 180, name="cardiovascular_support_index_B4")
model.addConstr(1.06 * milligrams_of_vitamin_B7 <= 180, name="cardiovascular_support_index_B7")
model.addConstr(4.31 * grams_of_protein <= 180, name="cardiovascular_support_index_protein")

model.addConstr(4.37 * milligrams_of_vitamin_C + 4.31 * grams_of_protein >= 21, name="cardiovascular_support_index_C_protein")
model.addConstr(4.37 * milligrams_of_vitamin_C + 5.58 * milligrams_of_vitamin_B9 >= 13, name="cardiovascular_support_index_C_B9")
model.addConstr(5.88 * milligrams_of_vitamin_B3 + 4.37 * milligrams_of_vitamin_C + 4.31 * grams_of_protein >= 15, name="cardiovascular_support_index_B3_C_protein")

# ... add all other constraints similarly

# Solve the model
model.optimize()

# Print the solution
if model.status == GRB.OPTIMAL:
    print("Optimal solution found.")
    print("Milligrams of vitamin B3: ", milligrams_of_vitamin_B3.varValue)
    print("Milligrams of vitamin C: ", milligrams_of_vitamin_C.varValue)
    print("Milligrams of vitamin B9: ", milligrams_of_vitamin_B9.varValue)
    print("Milligrams of vitamin B4: ", milligrams_of_vitamin_B4.varValue)
    print("Milligrams of vitamin B7: ", milligrams_of_vitamin_B7.varValue)
    print("Grams of protein: ", grams_of_protein.varValue)
    print("Objective function value: ", model.objVal)
else:
    print("No optimal solution found.")
```