To solve this optimization problem, we first need to define the decision variables, objective function, and constraints based on the given information.

Let's denote:
- \(V\) as the number of vegetarian meals eaten per day.
- \(M\) as the number of meat meals eaten per day.

The objective is to minimize the total cost. The cost of a vegetarian meal is $4, and the cost of a meat meal is $6. Therefore, the objective function can be written as:
\[ \text{Minimize} \quad 4V + 6M \]

We have two main constraints based on the daily requirements for protein and carbs:
1. The total protein intake should be at least 100 grams. Given that a vegetarian meal contains 10 grams of protein and a meat meal contains 30 grams of protein, we can write this constraint as:
\[ 10V + 30M \geq 100 \]
2. The total carb intake should be at least 150 grams. Since a vegetarian meal contains 20 grams of carbs and a meat meal contains 15 grams of carbs, we have:
\[ 20V + 15M \geq 150 \]

Additionally, since the number of meals cannot be negative, we have non-negativity constraints:
\[ V \geq 0 \]
\[ M \geq 0 \]

Given these definitions, we can now translate this problem into Gurobi code in Python.

```python
from gurobipy import *

# Create a model
m = Model("Meal_Optimization")

# Define decision variables
V = m.addVar(vtype=GRB.CONTINUOUS, name="Vegetarian_Meals")
M = m.addVar(vtype=GRB.CONTINUOUS, name="Meat_Meals")

# Objective function: Minimize total cost
m.setObjective(4*V + 6*M, GRB.MINIMIZE)

# Constraints
m.addConstr(10*V + 30*M >= 100, "Protein_Requirement")
m.addConstr(20*V + 15*M >= 150, "Carb_Requirement")

# Non-negativity constraints (not strictly necessary since Gurobi defaults to non-negative for continuous variables)
# m.addConstr(V >= 0, "Non_Negative_Vegetarian")
# m.addConstr(M >= 0, "Non_Negative_Meat")

# Optimize the model
m.optimize()

# Print results
if m.status == GRB.OPTIMAL:
    print("Optimal solution found:")
    print(f"Vegetarian Meals: {V.x}")
    print(f"Meat Meals: {M.x}")
    print(f"Total Cost: ${4*V.x + 6*M.x:.2f}")
else:
    print("No optimal solution found")
```