% data for power flow problem

n = 12; % total number of nodes

m = 18; % number of edges (transmission lines)

k = 4; % number of generators

rand('state',0);

Pmax = 1+4*rand(m,1); % transmission line capacities

Gmax = [3; 2; 4; 7];  % maximum generator power

c    = [4; 8; 5; 3];  % supply generator costs

d    = 1+1.5*rand(n-k,1); % network power demands

% graph incidence matrix

A = [ -1 -1  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0 ;

       0  0 -1 -1  0  0  0  0  0  0  0  0  0  0  0  0  0  0 ;

       0  0  0  0  0  0  0  0  0 -1 -1  0  0  0  0  0  0 -1 ;

       0  0  0  0  0  0 -1  0  0  0  0  0  0  0 -1  0 -1  0 ;

       1  0  0  0  1 -1  0  0  0  0  0  0  0  0  0  0  0  0 ;

       0  1  1  0 -1  0  1 -1  0  0  0  0  0  0  0  0  0  0 ;

       0  0  0  1  0  0  0  0 -1  1  0  0  0  0  0  0  0  0 ;

       0  0  0  0  0  0  0  1  1  0  0  0 -1  0  1  0  0  1 ;

       0  0  0  0  0  0  0  0  0  0  1 -1  0  0  0  0  0  0 ;

       0  0  0  0  0  0  0  0  0  0  0  1  1 -1  0  0  0  0 ;

       0  0  0  0  0  0  0  0  0  0  0  0  0  1  0  1  0  0 ;

       0  0  0  0  0  1  0  0  0  0  0  0  0  0  0 -1  1  0 ];



% the code below is not data for the problem

% it is used only to generate the network graph



% x-y coordinates

XY = [ ... % node x-y coordinates

 1.5 5.2;   % node 1

 4.9 5;     % node 2

 6.9 3.5;   % node 3

 1.9 3.5;   % node 4

 0.2 4.4;   % node 5

 3.2 4.8;   % node 6

 5.9 4.5;   % node 7

 3.9 3.6;   % node 8

 5.9 2.5;   % node 9

 3.9 3;     % node 10

 1.4 2.5;   % node 11

 0 3];      % node 12



% node adjacency matrix

Ad = -A*A';

Ad = Ad - diag(diag(Ad));



epsx = 0.05; epsy = 0.15; % text placing offset 



figure; 

% connect edges

gplot(Ad,XY,'-k'); hold on;



% label generator nodes

for j = 1:k

    plot(XY(j,1),XY(j,2),'rs',...

        'MarkerFaceColor','r',...

        'MarkerSize',12);

    text(XY(j,1)-eps,XY(j,2)+epsy,int2str(j),'FontSize',10);      

end



% label regular nodes 

for j = k+1:n

    plot(XY(j,1),XY(j,2),'.k',...

    'MarkerSize',15);

end

axis off; hold off;

% print('-depsc','pwr_net.eps');

