├── Bus8.m ├── LICENSE ├── README.md ├── continuous_pso.m ├── my_cost.m └── reliability_indices.m /Bus8.m: -------------------------------------------------------------------------------- 1 | function [branch, bus] = Bus8() 2 | % Fb Tb R X st Lb r 3 | % branch = [ 1 2 0 0 1 0.4 10 4 | % 2 3 0 0 1 0.2 9 5 | % 3 4 0 0 1 0.3 12 6 | % 2 5 0 0 1 0.5 20 7 | % 5 6 0 0 1 0.2 15 8 | % 3 7 0 0 1 0.1 8 9 | % 7 8 0 0 1 0.1 12]; 10 | branch = [ 1 2 0 0 1 .238 6.932 11 | 2 3 0 0 1 .096 7.948 12 | 3 4 0 0 1 .2 8.136 13 | 2 5 0 0 1 .1862 11.75 14 | 5 6 0 0 1 .1962 11.57 15 | 3 7 0 0 1 .1 8 16 | 7 8 0 0 1 .1 11.33 ]; 17 | 18 | 19 | 20 | 21 | 22 | % b nc Kw Kvar lb r 23 | bus= [ 1 0 0 0 0 0 24 | 2 200 1000 0 0 0 25 | 3 150 700 0 0 0 26 | 4 100 400 0 0 0 27 | 5 150 500 0 0 0 28 | 6 100 300 0 0 0 29 | 7 250 200 0 0 0 30 | 8 50 150 0 0 0]; 31 | 32 | end -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2025 Harshal Amin 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ⚡ Reliability Evaluation of Electrical Distribution Networks using Particle Swarm Optimization (PSO) 2 | 3 | This project focuses on modeling, evaluating, and optimizing the **reliability of a radial electrical distribution system** using **Particle Swarm Optimization (PSO)**. The aim is to minimize system failure rates and outage durations by identifying optimal network configurations, supporting utility planning and infrastructure investment decisions. 4 | 5 | --- 6 | 7 | ## 📌 Problem Statement 8 | 9 | In power distribution systems, **reliability** is a critical measure of the system’s ability to deliver uninterrupted service to consumers. Reliability indices such as **SAIFI**, **SAIDI**, **CAIDI**, and **Energy Not Supplied (ENS)** are used to evaluate system performance. This project builds a simulation framework in MATLAB to compute and optimize these indices in an **8-bus radial network**. 10 | 11 | --- 12 | 13 | ## 🎯 Objectives 14 | 15 | - Compute key reliability indices for a radial distribution network. 16 | - Model multiple failure paths using the **cut-set method**. 17 | - Use **PSO** to optimize load-point reliability metrics by minimizing: 18 | - Failure rate (λ) 19 | - Average outage time (r) 20 | - Support network expansion and planning through optimized reliability assessment. 21 | 22 | --- 23 | 24 | ## 🧪 Approach 25 | 26 | 1. **System Modeling** 27 | - Simulated an 8-bus radial distribution system in MATLAB. 28 | - Identified all paths using the **cut-set technique** to find critical failure scenarios. 29 | 30 | 2. **Reliability Analysis** 31 | - Calculated: 32 | - **SAIFI** (System Average Interruption Frequency Index) 33 | - **SAIDI** (System Average Interruption Duration Index) 34 | - **CAIDI** (Customer Average Interruption Duration Index) 35 | - **ENS** (Energy Not Supplied) 36 | 37 | 3. **Optimization using PSO** 38 | - Applied **Continuous Particle Swarm Optimization** to minimize failure rate and outage time. 39 | - Incorporated constraints to maintain system feasibility. 40 | 41 | 4. **Evaluation** 42 | - Compared base-case vs optimized scenarios to validate performance improvements. 43 | 44 | --- 45 | 46 | ## 🧠 Key Techniques 47 | 48 | - **Cut-set Analysis** – Identifies all relevant disconnection paths in the radial system. 49 | - **PSO** – Bio-inspired algorithm used for multi-parameter optimization. 50 | - **Reliability Metrics** – Derived from IEEE standards and calculated at both load-point and system-wide levels. 51 | - **Constraint-based Optimization** – Ensures electrical system feasibility under new configurations. 52 | 53 | --- 54 | 55 | ## 📈 Results 56 | 57 | - Optimized reliability indices show a significant **reduction in outage time and failure frequency**. 58 | - PSO effectively adjusted network parameters to enhance reliability. 59 | - The model provides a tool for **investment planning**, network **reconfiguration**, and **feeder design**. 60 | 61 | --- 62 | 63 | ## 🛠 Tools & Technologies 64 | 65 | - MATLAB 66 | - Particle Swarm Optimization 67 | - Power Systems Simulation 68 | - Reliability Engineering Principles 69 | 70 | --- 71 | 72 | ## 📌 References 73 | 74 | - IEEE RTS Documentation for Reliability Test Systems 75 | - Roy Billinton & Ronald Allan – *Reliability Evaluation of Power Systems* 76 | - Civicioglu, P. – *Backtracking Search Optimization Algorithm for numerical optimization problems* 77 | 78 | --- 79 | 80 | ## 👨‍💻 Author 81 | 82 | **Harshal Amin** 83 | 📍 MS Business Analytics & Information Management, Purdue University 84 | 🔗 [LinkedIn](https://linkedin.com/in/amin82) | [GitHub](https://github.com/harshal2962) 85 | 86 | --- 87 | 88 | ## 📝 License 89 | 90 | This project is licensed under the MIT License. 91 | -------------------------------------------------------------------------------- /continuous_pso.m: -------------------------------------------------------------------------------- 1 | clc 2 | clear all 3 | [ldata,bdata]=Bus8(); 4 | st = ldata(:,5); 5 | ldata(st==0,:) =[]; 6 | branches=[1 2*size(ldata,1)]; 7 | maxit=100;it=0; 8 | pop=200; 9 | w= 1; 10 | c1= 2.05; 11 | c2= 2.05; 12 | minz=[0.2 0.05 0.1 0.1 0.15 0.05 0.05]; 13 | maxz=transpose(ldata(:,6)); 14 | minr=[6 6 4 8 7 6 6]; 15 | maxr=transpose(ldata(:,7)); 16 | totmax=[maxz maxr]; 17 | totmin=[minz minr]; 18 | particle0.position=[]; 19 | particle0.velocity=[]; 20 | particle0.cost=[]; 21 | particle0.best.position=[]; 22 | particle0.best.cost=[]; 23 | particle=repmat( particle0,pop,1); 24 | 25 | globalbest.cost=inf; 26 | for i =1:pop 27 | particle(i).position=unifrnd(totmin,totmax,branches); 28 | particle(i).velocity=zeros(branches); 29 | particle(i).cost= my_cost(it,totmin,totmax,particle(i).position); 30 | particle(i).best.position=particle(i).position; 31 | particle(i).best.cost= particle(i).cost; 32 | if particle(i).cost