Minimum spanning tree of an IEEE bus network

3 visualizaciones (últimos 30 días)
sibabalo noludwwe
sibabalo noludwwe el 23 de Jul. de 2019
Respondida: sibabalo noludwwe el 29 de Jul. de 2019
hi Guys.
I have a 9 bus IEEE test feeder in Simulink and I would like to get a minimum spanning tree from one node to the other. the problem is I am struggling to automatical represent the physical network in matlab so I can peform minimum spanning tree.
how do I represent a physical network by its edges and nodes in matlab from simulink.
thanks
  2 comentarios
darova
darova el 23 de Jul. de 2019
Can you please attach data or image?
sibabalo noludwwe
sibabalo noludwwe el 23 de Jul. de 2019
at the moment I am using the attached network just to get the concept of converting a simulink system into a graph object.

Iniciar sesión para comentar.

Respuesta aceptada

Hari Krishna Ravuri
Hari Krishna Ravuri el 29 de Jul. de 2019
Hi,
I understand that you have a 9 bus IEEE test feeder model in Simulink and wanted to get a Minimum Spanning Tree for the network. As of now, there is no in-built function in MATLAB or Simulink to convert a Simulink model into a Graph. But you can write a script to perform this. For this you need to decide what blocks in the Simulink model will be interpreted as Nodes and what blocks / connections will be interpreted as edges in the graph.
You can use the get_param property to get to the Outport and you can start traversing the whole network. When you traverse a block update the Graph depending on the way you want to interpret the block either as a node or as an edge. If the network is complex, you may traverse the same graph more than once. In this case, I suggest you perform a Depth First Traversal. Please refer https://www.mathworks.com/help/simulink/slref/block-specific-parameters.html for Block specific parameters. Once the graph is ready, if the graph is dense, I suggest using Prims Minimum spanning tree algorithm. If the graph is sparse, I suggest using Kruskal's Minimum spanning tree algorithm.
  2 comentarios
sibabalo noludwwe
sibabalo noludwwe el 29 de Jul. de 2019
thank you,
I tried something like this and I also got the distribution lines themselves represented as nodes and also struggled to convert the three lines as one edge and I was not able to load their weight as well. please assist further.
thanks
Hari Krishna Ravuri
Hari Krishna Ravuri el 29 de Jul. de 2019
Having three lines between two blocks can be viewed as multigraph. You can convert three lines as one edge by converting the multigraph into a single graph. Please refer https://www.mathworks.com/help/matlab/ref/graph.simplify.html for more information. By using get_param you can get the line parameters and calculate the cost.

Iniciar sesión para comentar.

Más respuestas (2)

sibabalo noludwwe
sibabalo noludwwe el 29 de Jul. de 2019
THANKS,
when i use simplify I am getting this error:
Undefined function 'simplify' for input arguments of type 'matlab.graphics.chart.primitive.GraphPlot'.
attached is the graph that i want to simplify and instead am getting all the blocks in simulink.

sibabalo noludwwe
sibabalo noludwwe el 29 de Jul. de 2019
I did exactly as the examples on the referal but it does not seem to work with a directed graph I am not sure what is the problem.
Also I used the following
b=find_system('power_13NodeTestFeeder','SearchDepth',1,'Type','block');
h=get_param(b, 'Handle')
and am getting parameters of all the blocks. how do I make sure I only get load flow buses.

Community Treasure Hunt

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

Start Hunting!

Translated by