Minimum spanning tree of an IEEE bus network

1 view (last 30 days)
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 Comments
darova
darova on 23 Jul 2019
Can you please attach data or image?
sibabalo noludwwe
sibabalo noludwwe on 23 Jul 2019
at the moment I am using the attached network just to get the concept of converting a simulink system into a graph object.

Sign in to comment.

Accepted Answer

Hari Krishna Ravuri
Hari Krishna Ravuri on 29 Jul 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 Comments
sibabalo noludwwe
sibabalo noludwwe on 29 Jul 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 on 29 Jul 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.

Sign in to comment.

More Answers (2)

sibabalo noludwwe
sibabalo noludwwe on 29 Jul 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 on 29 Jul 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!