Minimum spanning tree of an IEEE bus network

6 次查看(过去 30 天)
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 个评论
sibabalo noludwwe
sibabalo noludwwe 2019-7-23
at the moment I am using the attached network just to get the concept of converting a simulink system into a graph object.

请先登录,再进行评论。

采纳的回答

Hari Krishna Ravuri
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 个评论
sibabalo noludwwe
sibabalo noludwwe 2019-7-29
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
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.

请先登录,再进行评论。

更多回答(2 个)

sibabalo noludwwe
sibabalo noludwwe 2019-7-29
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 2019-7-29
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.

类别

Help CenterFile Exchange 中查找有关 Modeling 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by