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:
- \(R\) as the number of regular laptops produced.
- \(T\) as the number of touchscreen laptops produced.

The objective is to maximize profit. Given that each regular laptop gives a profit of $200 and each touchscreen laptop gives a profit of $300, the total profit (\(P\)) can be represented by the equation:
\[ P = 200R + 300T \]

Now, let's consider the constraints:
1. **Manual Labor Constraint**: The company has 3000 minutes available for manual labor. Each regular laptop requires 20 minutes of manual labor, and each touchscreen laptop requires 25 minutes.
   - This constraint can be represented as: \(20R + 25T \leq 3000\)

2. **Calibration Constraint**: The company has 2000 minutes available for calibration. Each regular laptop takes 10 minutes of calibration, and each touchscreen laptop takes 20 minutes.
   - This constraint can be represented as: \(10R + 20T \leq 2000\)

3. **Non-Negativity Constraints**: Since the number of laptops cannot be negative, we have:
   - \(R \geq 0\)
   - \(T \geq 0\)

Given these definitions, we can formulate the problem as a linear programming problem and solve it using Gurobi in Python. Here's how you could implement this:

```python
from gurobipy import *

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

# Define variables
R = m.addVar(vtype=GRB.CONTINUOUS, name="Regular_Laptops", lb=0)
T = m.addVar(vtype=GRB.CONTINUOUS, name="Touchscreen_Laptops", lb=0)

# Objective function: Maximize profit
m.setObjective(200*R + 300*T, GRB.MAXIMIZE)

# Constraints
m.addConstr(20*R + 25*T <= 3000, "Manual_Labor_Constraint")
m.addConstr(10*R + 20*T <= 2000, "Calibration_Constraint")

# Optimize model
m.optimize()

# Print results
if m.status == GRB.OPTIMAL:
    print(f"Optimal solution: Produce {R.x:.0f} regular laptops and {T.x:.0f} touchscreen laptops.")
    print(f"Maximum Profit: ${200*R.x + 300*T.x:.2f}")
else:
    print("No optimal solution found")
```