To solve this problem, we need to define the decision variables and the objective function. Let's denote the number of units of medication A as `x` and the number of units of medication B as `y`. The objective is to minimize the total cost, which can be represented as `1*x + 2*y`.

The constraints are based on the requirements for cough relief, pain relief, and fever relief. For cough relief, we need at least 20 units, so the constraint is `1*x + 3*y >= 20`. For pain relief, we need at least 25 units, leading to the constraint `2*x + 1*y >= 25`. Lastly, for fever relief, we require at least 30 units, resulting in the constraint `3*x + 2*y >= 30`.

All variables should be non-negative since they represent quantities of medications.

Here is the Gurobi code that captures this problem:

```python
from gurobipy import *

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

# Define the decision variables
x = m.addVar(vtype=GRB.CONTINUOUS, name="medication_A", lb=0)
y = m.addVar(vtype=GRB.CONTINUOUS, name="medication_B", lb=0)

# Set the objective function
m.setObjective(1*x + 2*y, GRB.MINIMIZE)

# Add the constraints
m.addConstr(1*x + 3*y >= 20, "cough_relief")
m.addConstr(2*x + 1*y >= 25, "pain_relief")
m.addConstr(3*x + 2*y >= 30, "fever_relief")

# Optimize the model
m.optimize()

# Print the results
if m.status == GRB.OPTIMAL:
    print("Optimal solution found:")
    print(f"Medication A: {x.x}")
    print(f"Medication B: {y.x}")
    print(f"Total Cost: {m.objVal}")
else:
    print("No optimal solution found")
```