## Problem Description and Formulation

The retired professor wants to invest up to $50,000 in the airline and railway industries. The profit yield from each dollar invested in the airline industry is $0.30, and from the railway industry is $0.10. There are two main constraints:

1. A minimum of $10,000 must be invested in the railway industry.
2. At least 25% of all money invested must be in the airline industry.

## Symbolic Representation

Let's denote:
- \(x_1\) as the amount invested in the airline industry,
- \(x_2\) as the amount invested in the railway industry.

The objective is to maximize the total profit \(P = 0.30x_1 + 0.10x_2\).

Subject to:
1. Total investment constraint: \(x_1 + x_2 \leq 50000\)
2. Minimum railway investment constraint: \(x_2 \geq 10000\)
3. Minimum airline investment constraint: \(x_1 \geq 0.25(x_1 + x_2)\)
4. Non-negativity constraints: \(x_1 \geq 0, x_2 \geq 0\)

## Simplifying Constraints

The third constraint can be simplified:
\(x_1 \geq 0.25x_1 + 0.25x_2\)
\(0.75x_1 \geq 0.25x_2\)
\(3x_1 \geq x_2\)

## Gurobi Code

```python
import gurobi

def solve_investment_problem():
    # Create a new model
    model = gurobi.Model()

    # Define variables
    x1 = model.addVar(lb=0, name="Airline_Investment")
    x2 = model.addVar(lb=0, name="Railway_Investment")

    # Objective: Maximize profit
    model.setObjective(0.30*x1 + 0.10*x2, gurobi.GRB.MAXIMIZE)

    # Constraints
    model.addConstr(x1 + x2 <= 50000, name="Total_Investment")
    model.addConstr(x2 >= 10000, name="Minimum_Railway_Investment")
    model.addConstr(3*x1 >= x2, name="Minimum_Airline_Investment")

    # Optimize
    model.optimize()

    # Print solution
    if model.status == gurobi.GRB.OPTIMAL:
        print("Optimal Solution:")
        print(f"Airline Investment: ${x1.varValue:.2f}")
        print(f"Railway Investment: ${x2.varValue:.2f}")
        print(f"Maximum Profit: ${model.objVal:.2f}")
    else:
        print("No optimal solution found.")

solve_investment_problem()
```