Optimization of EPANET network using GA toolkit

18 views (last 30 days)
A pipe network distribution layout for irrigation purpose is prepared in EPANET. This network have 80 pipes and 80 nodes plus one reservoir Optimisation of pipe network for minimum cost is required to be done using GA tool box of MATLAB.
The pipe network (EPANET file i.e .inp file) needs to be coupled with MATLAB. And then the same network needs to be optimised. That means diameters of all 80 pipes need to be determined using GA tool box of MATLAB, such that it that will suffice the limiting conditions of design viz: minimum pressure head at outlet nodes must be at least 1 m and velocity in all pipes must be in between 0.6 and 1.8 m/s.
the set of commercially available diameters and there cost is available, need to use those diameters only.

Answers (1)

Umang Pandey
Umang Pandey on 19 Aug 2024
Hi Pooja,
To optimize a pipe network for minimum cost using MATLAB's Genetic Algorithm (GA) toolbox, you can follow these general steps. The process involves integrating EPANET with MATLAB, defining the optimization problem, and using GA to find the optimal pipe diameters.
1) Prepare the EPANET Model: Ensure your EPANET model (.inp file) is correctly set up with all pipes, nodes, and the reservoir.
2) Integrate EPANET with MATLAB: Use the EPANET-MATLAB Toolkit, which allows you to interact with EPANET files directly from MATLAB. You can download it from the MATLAB File Exchange : OpenWaterAnalytics/EPANET-MATLAB-Toolkit
3) Define the Optimization Problem:
  • Objective Function: Minimize the total cost of the network by selecting pipe diameters.
  • Decision Variables: Diameters of the 80 pipes.
  • Constraints: i) Minimum pressure head at outlet nodes ≥ 1 m. ii) Velocity in pipes between 0.6 and 1.8 m/s.
4) Implement the Objective Function in MATLAB:
  • Create a function that calculates the total cost based on the diameters chosen by GA.
  • Use the EPANET-MATLAB Toolkit to simulate the hydraulic model and check constraints.
function cost = pipeNetworkObjective(diameters)
% Load EPANET-MATLAB Toolkit
start_toolkit;
d = epanet('your_network.inp');
% Set pipe diameters based on GA input
for i = 1:length(diameters)
d.setLinkDiameter(i, diameters(i));
end
% Run hydraulic simulation
d.solveCompleteHydraulics;
% Check constraints
pressures = d.getNodePressure;
velocities = d.getLinkVelocity;
if any(pressures < 1) || any(velocities < 0.6) || any(velocities > 1.8)
cost = inf; % Penalize infeasible solutions
else
% Calculate cost based on diameters
cost = calculateCost(diameters);
end
% Close EPANET
d.unload;
end
function totalCost = calculateCost(diameters)
% Define cost per diameter (example values)
diameterOptions = [100, 150, 200]; % Example diameters
costPerDiameter = [10, 15, 20]; % Corresponding costs
% Calculate total cost
totalCost = 0;
for i = 1:length(diameters)
idx = find(diameterOptions == diameters(i));
totalCost = totalCost + costPerDiameter(idx);
end
end
5) Configure and Run GA in MATLAB: Set up the GA options and constraints.
% Define GA options
options = optimoptions('ga', 'Display', 'iter', 'PopulationSize', 100, ...
'MaxGenerations', 100, 'UseParallel', true);
% Define bounds and constraints
nvars = 80; % Number of pipes
lb = repmat(min(diameterOptions), 1, nvars);
ub = repmat(max(diameterOptions), 1, nvars);
% Run GA
[optimalDiameters, optimalCost] = ga(@pipeNetworkObjective, nvars, [], [], [], [], lb, ub, [], options);
% Display results
disp('Optimal Diameters:');
disp(optimalDiameters);
disp('Optimal Cost:');
disp(optimalCost);
Hope this helps!
Best,
Umang

Categories

Find more on Agriculture in Help Center and File Exchange

Products


Release

R2024a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!