To solve Jacob's investment problem, we need to maximize his profit given the constraints on investing in the logging and shipping industries. Let's denote:

- \(L\) as the amount invested in the logging industry,
- \(S\) as the amount invested in the shipping industry.

The objective function to maximize is the total profit, which can be represented as:
\[0.06L + 0.03S\]

Given constraints are:
1. The total investment cannot exceed $3000: 
\[L + S \leq 3000\]
2. At least 50% of the money must be invested in the logging industry:
\[L \geq 0.5 \times (L + S)\]
3. At least $1000 must be invested in the shipping industry:
\[S \geq 1000\]

We also know that \(L\) and \(S\) cannot be negative since they represent amounts of money.

Let's translate these constraints into Gurobi code to find the optimal investment strategy for Jacob.

```python
from gurobipy import *

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

# Define variables
L = m.addVar(name="Logging_Investment", lb=0)  # Amount invested in logging
S = m.addVar(name="Shipping_Investment", lb=0)  # Amount invested in shipping

# Objective function: Maximize profit
m.setObjective(0.06 * L + 0.03 * S, GRB.MAXIMIZE)

# Constraints
m.addConstr(L + S <= 3000, name="Total_Investment")  # Total investment limit
m.addConstr(L >= 0.5 * (L + S), name="Logging_Minimum_Percentage")
m.addConstr(S >= 1000, name="Shipping_Minimum_Investment")

# Solve the model
m.optimize()

# Print results
if m.status == GRB.OPTIMAL:
    print("Optimal solution found:")
    print(f"Logging Investment: ${L.x:.2f}")
    print(f"Shipping Investment: ${S.x:.2f}")
    print(f"Maximum Profit: ${m.objVal:.2f}")
else:
    print("No optimal solution found.")
```