statsizechk matlab,什么错误?

%本程序返回并且要求不重复选定的支路矩阵

function Y=fusion(Bus,Branch)

%采用根节点融合法产生初始辐射状网络

%  Bus            待选节点

%  Branch         待选支路

%  Y              选定支路集

%  yi             为1建设该线路;为0则不建

Bus=[0 0 1

1 1.2+i*0.9 0

2 1.5+i*1.13 0

3 0.6+i*0.45 0

4 0.4+i*0.3 0

5 1.2+i*0.9 0

6 0.75+i*0.55 0

7 0.8+i*0.6 0

8 0.5+i*0.38 0

9 0.55+i*0.41 0];

%支路节点,负荷,电源点

Branch=[0 1 0.246+i*0.463 0 0.0 400

1 3 0.898+i*0.931 0 0.0 300

0 2 0.084+i*0.139 0 30.5 400

2 4 0.726+i*0.613 0 8.7 300

3 5 0.633+i*0.515 0 10.3 300

8 3 0.422+i*0.333 0 12.2 300

8 7 0.345+i*0.234 0 15.9 300

6 7 0.754+i*0.556 0 9.0 300

9 4 0.112+i*0.150 0 21.0 300

5 7 0.675+i*0.433 0 14.3 300

4 5 0.231+i*0.123 0 23.0 350

9 6 0.234+i*0.155 0 17.8 300

5 6 0.456+i*0.354 0 12.0 300

4 8 0.854+i*0.724 0 9.1 300

4 3 0.868+i*0.760 0 19.2 300

6 0 0.135+i*0.240 0 23.4 400];

%第1列首节点,2列尾节点,3列支路阻抗,4列特征支路,5列该支路投资,6列电流限制

m=length(Branch);  %取支路数

Y=zeros(m,1);      %待选线路初始化为0矩阵

n=length(Bus);      %取节点数

N=[];               % 存根节点

Q=[];               % 存与电源点相连的支路号

%S=[];               %存未标记矩阵

%本段程序取根节点群 默认是0

%这段程序没有用吧。

l=1;

N(l)=0;     %将0加入根节点群。

l=l+1;

%本段程序取与电源点相连的支路

t=1;

for p=1:m

bi=Branch(p,:);

j=find(bi(1,1)==N);       %判断支路端点是否是电源点

q=find(bi(1,2)==N);

if (isempty(j)&isempty(q))

continue;

else Q(t)=p;

t=t+1;

end

end

s=unidrnd(length(Q));

b=Q(s);                      %取与电源点相连的任意支路号

Y(b)=1;

Branch(b,4)=1;        %标记该条支路

if Branch(b,1)==0

Bus(Branch(b,2)+1,3)=1;

elseif Branch(b,1)~=0

Bus(Branch(b,1)+1,3)=1;

end

while(1)

while(1)

u=unidrnd(m);

pi=Branch(u,:);

if pi(:,4)~=1          %随机取未标记支路

break

end

end

%以上小段程序取任意未标记支路

if pi(1,1)==0        %为了不使节点号为0

Bus(pi(1,2)+1,3)=1;

Y(u)=1;

Branch(u,4)=1;

elseif pi(1,2)==0

Bus(pi(1,1)+1,3)=1;

Y(u)=1;

Branch(u,4)=1;

elseif  Bus(pi(1,1)+1,3)==0&Bus(pi(1,2)+1,3)==0

continue

elseif  Bus(pi(1,1)+1,3)==1&Bus(pi(1,2)+1,3)==1

Y(u)=0;

else

Y(u)=1;

Branch(u,4)=1;

Bus(pi(1,1)+1,3)=1;

Bus(pi(1,2)+1,3)=1;

end

for ni=1:n

if Bus(ni,3)==0

break

end

end

end

我单步试过了。可以。但是好像跳不出while外循环

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值