To solve this linear programming optimization problem, we first need to define the decision variables and the objective function. Let's denote:

- \(x_A\) as the amount of drug A (in milligrams) to be used in the mixture.
- \(x_B\) as the amount of drug B (in milligrams) to be used in the mixture.

The objective is to minimize the total cost of the mixture, given that it costs $0.50 per mg for drug A and $0.30 per mg for drug B. Thus, the objective function can be written as:

\[ \text{Minimize:} \quad 0.50x_A + 0.30x_B \]

We have constraints based on the requirements for pain killer and fever reliever units in the final mixture:

1. The mixture must contain at least 5 units of pain killer. Given that drug A has 3 units/mg of pain killer and drug B has 2 units/mg, we can write this constraint as:
\[ 3x_A + 2x_B \geq 5 \]

2. The mixture must contain at least 12 units of fever reliever. Since drug A contains 2.5 units/mg of fever reliever and drug B contains 3.5 units/mg, we have:
\[ 2.5x_A + 3.5x_B \geq 12 \]

Additionally, \(x_A\) and \(x_B\) must be non-negative since they represent quantities of drugs.

Now, let's translate this into Gurobi code in Python:

```python
from gurobipy import *

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

# Define the decision variables
x_A = m.addVar(name="drug_A", lb=0)
x_B = m.addVar(name="drug_B", lb=0)

# Define the objective function
m.setObjective(0.50*x_A + 0.30*x_B, GRB.MINIMIZE)

# Add constraints
m.addConstr(3*x_A + 2*x_B >= 5, name="pain_killer_constraint")
m.addConstr(2.5*x_A + 3.5*x_B >= 12, name="fever_reliever_constraint")

# Optimize the model
m.optimize()

# Print the solution
if m.status == GRB.OPTIMAL:
    print("Optimal solution found.")
    print(f"Amount of Drug A: {x_A.x} mg")
    print(f"Amount of Drug B: {x_B.x} mg")
    print(f"Total Cost: ${0.50*x_A.x + 0.30*x_B.x}")
else:
    print("No optimal solution found.")
```