## Problem Description and Formulation

The city council has a budget of up to $5500 to invest in infrastructure, specifically in clean water and electricity. The goal is to maximize the total profit from these investments under the given constraints.

- Each dollar invested in clean water yields a $1.9 profit.
- Each dollar invested in electricity yields a $2.3 profit.
- No less than $1000 must be invested in clean water.
- No less than 30% of all money invested must be in electricity.

## Symbolic Representation

Let's denote:
- \(x\) as the amount invested in clean water.
- \(y\) as the amount invested in electricity.

The objective function to maximize the total profit (\(P\)) is:
\[ P = 1.9x + 2.3y \]

Subject to the constraints:
1. Budget constraint: \( x + y \leq 5500 \)
2. Clean water investment constraint: \( x \geq 1000 \)
3. Electricity investment constraint: \( y \geq 0.3(x + y) \)
4. Non-negativity constraints: \( x \geq 0, y \geq 0 \)

However, to make the electricity investment constraint more straightforward, we can simplify it:
\[ y \geq 0.3x + 0.3y \]
\[ 0.7y \geq 0.3x \]
\[ y \geq \frac{3}{7}x \]
\[ y \geq 0.42857x \] (approximately)

But for precision and to keep it linear, we'll use \( y \geq 0.3(x + y) \) directly in the model.

## Gurobi Code

```python
import gurobi

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

    # Define variables
    x = model.addVar(name="clean_water", lb=0)  # Investment in clean water
    y = model.addVar(name="electricity", lb=0)  # Investment in electricity

    # Objective function: Maximize profit
    model.setObjective(1.9 * x + 2.3 * y, gurobi.GRB.MAXIMIZE)

    # Budget constraint
    model.addConstr(x + y <= 5500, name="budget_constraint")

    # Clean water investment constraint
    model.addConstr(x >= 1000, name="clean_water_constraint")

    # Electricity investment constraint
    model.addConstr(y >= 0.3 * (x + y), name="electricity_constraint")

    # Solve the model
    model.optimize()

    # Print the status
    if model.status == gurobi.GRB.Status.OPTIMAL:
        print("Optimal Solution:")
        print(f"Investment in clean water: ${x.varValue:.2f}")
        print(f"Investment in electricity: ${y.varValue:.2f}")
        print(f"Total Profit: ${model.objVal:.2f}")
    else:
        print("The model is infeasible.")

solve_investment_problem()
```

This code sets up the linear programming problem as described, using Gurobi to find the optimal investment strategy that maximizes profit under the given constraints.