To solve this optimization problem, we need to define variables that represent the number of plates of Indian and Thai food. Let's denote these as `x` for Indian food and `y` for Thai food. The objective is to minimize the total cost, which can be represented as `12x + 15y`, given the constraints on protein and carbs.

The constraints are:
1. Minimum of 200 units of protein: `13x + 8y >= 200`
2. Minimum of 50 units of carbs: `23x + 12y >= 50`
3. Non-negativity constraints since we cannot have a negative number of plates: `x >= 0`, `y >= 0`

We will use the Gurobi Python interface to model and solve this linear programming problem.

```python
from gurobipy import *

# Create a new model
m = Model("WeightLossProgram")

# Define variables
x = m.addVar(vtype=GRB.CONTINUOUS, name="IndianFood", lb=0)
y = m.addVar(vtype=GRB.CONTINUOUS, name="ThaiFood", lb=0)

# Set the objective function: minimize cost
m.setObjective(12*x + 15*y, GRB.MINIMIZE)

# Add constraints
m.addConstr(13*x + 8*y >= 200, "ProteinRequirement")
m.addConstr(23*x + 12*y >= 50, "CarbRequirement")

# Optimize model
m.optimize()

# Print solution
if m.status == GRB.OPTIMAL:
    print("Optimal solution found:")
    print(f"Indian Food Plates: {x.x}")
    print(f"Thai Food Plates: {y.x}")
    print(f"Total Cost: ${12*x.x + 15*y.x:.2f}")
else:
    print("No optimal solution found")
```