To solve the given optimization problem, we first need to define the decision variables and the objective function. Let's denote:

- \(x_c\) as the amount invested in clean water,
- \(x_e\) as the amount invested in electricity.

The objective is to maximize the total profit. Given that each dollar invested in clean water yields a $1.9 profit and each dollar invested in electricity yields a $2.3 profit, the objective function can be written as:

\[ \text{Maximize:} \quad 1.9x_c + 2.3x_e \]

The constraints are as follows:

1. The total budget is up to $5500:
\[ x_c + x_e \leq 5500 \]

2. No less than $1000 must be invested in clean water:
\[ x_c \geq 1000 \]

3. No less than 30% of all money invested must be in electricity. This can be represented as:
\[ x_e \geq 0.3(x_c + x_e) \]
Simplifying, we get:
\[ x_e \geq 0.3x_c + 0.3x_e \]
\[ 0.7x_e \geq 0.3x_c \]
\[ x_e \geq \frac{0.3}{0.7}x_c \]
\[ x_e \geq \frac{3}{7}x_c \]

Now, let's translate these into Gurobi code in Python:

```python
from gurobipy import *

# Create a model
m = Model("Infrastructure_Investment")

# Define the decision variables
x_c = m.addVar(name='clean_water', lb=0)  # Amount invested in clean water
x_e = m.addVar(name='electricity', lb=0)   # Amount invested in electricity

# Set the objective function
m.setObjective(1.9*x_c + 2.3*x_e, GRB.MAXIMIZE)

# Add constraints
m.addConstr(x_c + x_e <= 5500, name='budget')  # Total budget constraint
m.addConstr(x_c >= 1000, name='min_clean_water')  # Minimum clean water investment
m.addConstr(x_e >= (3/7)*x_c, name='min_electricity_percentage')  # Minimum electricity percentage

# Optimize the model
m.optimize()

# Print the solution
if m.status == GRB.OPTIMAL:
    print("Optimal solution found:")
    print(f"Clean Water Investment: {x_c.x}")
    print(f"Electricity Investment: {x_e.x}")
    print(f"Total Profit: {m.objVal}")
else:
    print("No optimal solution found")
```