To solve Jon's investment problem, we need to set up a linear programming model that maximizes his earnings while adhering to the given constraints. Let's denote:
- \(x_m\) as the amount invested in the milk industry,
- \(x_c\) as the amount invested in the cheese industry.

The objective function to maximize earnings can be represented as:
\[ \text{Maximize:} \quad 0.08x_m + 0.06x_c \]

Given constraints are:
1. The total investment is $30,000: \( x_m + x_c = 30000 \)
2. The amount invested in the milk industry must be at least three times as much as the amount invested in the cheese industry: \( x_m \geq 3x_c \)
3. The maximum amount that can be invested in the milk industry is $25,000: \( x_m \leq 25000 \)

Let's express these conditions and the objective function using Gurobi in Python:

```python
from gurobipy import *

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

# Add variables
x_m = m.addVar(vtype=GRB.CONTINUOUS, name="milk_investment")
x_c = m.addVar(vtype=GRB.CONTINUOUS, name="cheese_investment")

# Set the objective function
m.setObjective(0.08*x_m + 0.06*x_c, GRB.MAXIMIZE)

# Add constraints
m.addConstr(x_m + x_c == 30000, "total_investment")
m.addConstr(x_m >= 3*x_c, "milk_vs_cheese")
m.addConstr(x_m <= 25000, "max_milk_investment")

# Optimize the model
m.optimize()

# Print the results
if m.status == GRB.OPTIMAL:
    print("Optimal solution found:")
    print(f"Milk Investment: ${x_m.x}")
    print(f"Cheese Investment: ${x_c.x}")
    print(f"Maximum Earnings: ${0.08*x_m.x + 0.06*x_c.x}")
else:
    print("No optimal solution found")

```