taherfattahi / dnn-distance-line-protection-zone

Implementing Machine Learning Multi-class Classification Algorithms for obtaining the Micom P543 distance relay protection curve in transmission lines with Deep Neural Network and Random Forest

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Machine Learning Distance Line Protection Zone

Implementing Machine Learning Multi-class Classification Algorithms for obtaining the Micom P543 distance relay protection curve in transmission lines with Deep Neural Network and Random Forest.

For gathering data requirements, first, the distance function of Micom P543 relay was tested with Vebko AMT105 relay tester and the results were given as input to the Deep Neural Network and Random Forest to get the characteristic distance curve.

Features

  • Using Tensorflow to build a Multi Classification Algorithm with a Deep Neural Network model
  • Using Scikit-Learn to build a Multi Classification Algorithm with Random Forest
  • Deep Neural Network Accuracy = 98%
  • Random Forest Accuracy = 96%
  • Using Schneider Electric Micom P543 Relay testing by Vebko AMT105 relay tester to creating the dataset
  • Converting the Tensorflow model to tflite for running on Embedded Board ARM Architecture
  • Using Golang TFLite to be able to easily run tflite model
  • Running on Xilinx Zynq-7020 Embedded Board
  • Usable via Docker file

Installation

First you need install TensorFlow for C

  1. Install bazel
curl https://bazel.build/bazel-release.pub.gpg | sudo apt-key add -
echo "deb [arch=amd64] https://storage.googleapis.com/bazel-apt stable jdk1.8" | sudo tee /etc/apt/sources.list.d/bazel.list
sudo apt update && sudo apt install bazel
sudo apt install openjdk-11-jdk
  1. Build tensorflowlite c lib from source
cd ~/workspace
git clone https://github.com/tensorflow/tensorflow.git && cd tensorflow
./configure
bazel build --config opt --config monolithic --define tflite_with_xnnpack=false //tensorflow/lite:libtensorflowlite.so
bazel build --config opt --config monolithic --define tflite_with_xnnpack=false //tensorflow/lite/c:libtensorflowlite_c.so

# Check status
file bazel-bin/tensorflow/lite/c/libtensorflowlite_c.so
# ELF 64-bit LSB shared object, x86-64
  1. Build go-tflite
export CGO_LDFLAGS=-L$HOME/workspace/tensorflow/bazel-bin/tensorflow/lite/c
export CGO_CFLAGS=-I$HOME/workspace/tensorflow/

Build

For Linux/MacOs amd64:

  export CGO_LDFLAGS=-L$HOME/workspace/tensorflow/bazel-bin/tensorflow/lite/c

  go build main.go

For xilinx Zynq-7020 (ARM-based computers):

  sudo apt-get install gcc-arm-linux-gnueabihf

  export CGO_LDFLAGS=-L$HOME/workspace/tensorflow/bazel-bin/tensorflow/lite/c
  
  CGO_ENABLED=1 GOOS=linux GOARCH=arm CC=arm-linux-gnueabihf-gcc go build -o main

Running

This running for ubuntu/MacOs amd64:

  ./main

This running for xilinx Zynq-7020 (ARM-based computers):

  export LD_LIBRARY_PATH=./arm
  
  ./main

Running with Docker

First of all, clone and the repo then run

  docker build -t dnn .

After pulling and building the image, You can get the result like this

  docker run --rm -t distance ./main

Or you can go to the container for running it manually like this

  docker run -it distance

More Info

Micom P543 Relay testing by vebko AMT105

Graph

Distance Line Protection Zone in the AMPro software

Graph

Graph of the Deep Neural Network

Graph

Model Accuracy Plot

Graph

Model Loss Plot

Graph

Note:

If you had issue and got standard_init_linux.go:211: exec user process caused "exec format error error, try this solution.

Collaborators

License

MIT

About

Implementing Machine Learning Multi-class Classification Algorithms for obtaining the Micom P543 distance relay protection curve in transmission lines with Deep Neural Network and Random Forest


Languages

Language:Jupyter Notebook 78.0%Language:C 18.0%Language:Python 1.8%Language:C++ 1.4%Language:Go 0.8%Language:Dockerfile 0.1%