Any useful software for applying neural networks in power systems? I know MATLAB has a NN toolbox but besides that, is there any other useful software available?
MATLAB with its neural network toolbox is a powerful tool also because you can integrate it with simulink models. You can also use Python which has entire libraries dedicated to ann and machine learning in general, but since Python is an interpreted high-level language it requires some knowledge in programming. You can try to take a look at Keras library which is not much complicated.
I have developed PSO code in MATLAB for training ANN for solving fitting problems for which MATLAB based Toolbox is used. Here is the concerned article:
Code Codes in MATLAB for Training Artificial Neural Network using...
MATLAB with its neural network toolbox is a powerful tool also because you can integrate it with simulink models. You can also use Python which has entire libraries dedicated to ann and machine learning in general, but since Python is an interpreted high-level language it requires some knowledge in programming. You can try to take a look at Keras library which is not much complicated.
Filippo Erinle Can you please elaborate on how to use this toolbox for data prediction? lets say I have one input X and one input Y. I put it in the model and it gives me regression lines. How can it be used to predict future output values?
Umair Shahzad First of all the expected relation between input-output is linear or non linear? The neural networks work very well with non linear and complex relations but on the other hand they are a sort of “black box” which are not able to explain in physical meaning the behavior of a system. So I suggest you to use neural networks only for non linear prediction with complex behavior. If in your application there is a linear relationship I suggest to opt for other methods like for example least square regression. Then if you decide to choose NN I suggest you to develop a Script on matlab using the available NN function through “line of code” and not using the graphic interface of toolbox. In this way you can set all the parameters you need. On the matlab site there are the explanations on how use neural networks functions and the related commands.
The first step is to choose the type of NN, select the activation function for the nodes, the number of layer (input, hidden and output), the number of neurons for each layer, the algorithm which generates the training process. Remember that you have to make a trade off between complexity and the ability to predict of the neural networks, this is an important aspect. Then you have to divide your data (couple of input-output) into 2 sets. One is the training set which is used to identify the NN model ( the weight and the bias of the neural networks). One is the validation set which allows you to verify if the NN created on the basis of the training set is able to fit well your application problem. The training set and the validation set must be composed by different data and it is a key point. You can consider as training set 70% of your data and the remaining as validation set. You have to identify the NN through the training by providing the input-output training set as input of training process. So, the NN is identify and you have to evaluate the capability of your identified NN to fit the data of the validation set through some type of error indices. If the identified NN works well you can use this NN to predict the future output by providing the future input to the model of your application made by NN. Obviously in matlab you have to define your data of input and output as vectors. However you can find a lot of articles on the web which describe both the state of art of NN and their application in different sectors such as power systems.
Umair Shahzad Is R lying between 0.2 and 0.3 only for the validation set or also for the training set? You must have a lot of data to be able to identify a suitable neural network.
You can try to use levenberg-marquardt as training method, a feedforward neural network with more o less 10 neurons in the hidden layer and how attivation function of the hidden layer neurons use the log sigmoid.
R of 0.3 for validation is a very poor result. It seems that the model identified does not fit the data in the validation set. Remember that R is a little tricky because its formal definition is for an OLS, so there is not the best index to verify the quality of a nn ( you have to choose indices according to your application, for example indices for the evaluation of an energy problem are different from those of a robotics problem). However, I think 0.3 is a too low value. As I already said the training is useful for identifying the network (determine the bias and the weights), while the validation is useful for understanding if the network is able to “explain” your data. In other word the validation is a verification of how the network works with your type of system. The R of training is necessarily close to 1 because you are forcing the network to go through those values. Instead in the validation you are considering data outside of those used to identify the network. I think there are some mistakes in your set up which lead to a sort of overfitting of the training data. I suggest you to control all the set up of the neural network ( use feedback neural network, not radial basis; activation function, a reasonable number of neurons, training algorithm). Maybe you are using a too small number of samples data or the input you are using are not enough(or the
right ones) to describe the output. If you plot in the same graph both the validation output from your data and the estimate output from your nn, you can realize that with a R of 0.3 the result is not acceptable, almost for all applications.
Umair Shahzad Filippo Erinle had been gave a beautiful response regarding MATLAB and i'm totally agree with him regarding MATLAB. for more details please, see below shared links.
Article Application of Neural Networks in Power Systems; A Review
Conference Paper Artificial neural network applications for power system protection
Umair Shahzad I think it is better you have a look at the courses on Machine learning (Neural network) first to have a detailed idea about the training error, testing error, mean square error, regression coefficient etc.
Moreover, simple neural network commonly suffers from the problem of over-fitting (High variance) which can be improved using L2 regularization technique. There are also more powerful optimization algorithm being used nowadays (Adam) compared to the classic gradient descent.
I learn these materials from "Machine learning" and "Deep learning" courses taught by Prof. Andrew Yang which could also be beneficial for you.