for loop doesn't seem to loop
1 次查看(过去 30 天)
显示 更早的评论
Hi I have the following code
for i = 1:8760
A = [PVtech(i,:) WTtech(i,:)];
b = demand(i);
f = [CRF*PVtechcost(i,:).*PVcap(i,:)./PVtech(i,:) CRF*WTtechcost(i,:).*WTcap(i,:)./WTtech(i,:)];
x(i) = linprog(f, A,b,[], [], lb);
end
I am trying to optimise linprog over the 8760 data set but I can't seem to get the loop going for each row. therefore when I run it is get a size of A to be 1x30 (when it should be 8760 by 30) Does anyone see where I have coded wrongly ?
thank you
0 个评论
采纳的回答
Ryan
2012-7-3
You're not specifying the row of A that you are writing the data to, so each loop it just places [PVtech(i,:) WTtech(i,:)] into the first row of A.
Try:
for m = 1:8760
A(m,:) = [PVtech(m,:) WTtech(m,:)];
b = demand(m);
f = [CRF*PVtechcost(m,:).*PVcap(m,:)./PVtech(m,:) CRF*WTtechcost(m,:).*WTcap(m,:)./WTtech(m,:)];
x(m) = linprog(f, A,b,[], [], lb);
end
更多回答(2 个)
Thomas
2012-7-3
编辑:Thomas
2012-7-3
use ii instead of i since i is built into matlab for complex numbers
for ii=1:8760
ii % to show which loop you are in
A(ii,:)=[PVtech(ii,:) WTtech(ii,:)];
You also might have to change your
x(ii,:) = linprog(f, A(ii,:),b,[], [], lb)
Though I do feel that your program was running right just that you were only seeing the last A which will be 1x30 since it was being overwritten.
to see if you are going through the loop
just output ii
2 个评论
Ryan
2012-7-3
Are you sure that you are showing us everything that is happening in the code? Doing something simplified such as:
for ii = 1:8760
A(ii,:) = 1;
end
returns an 8760x1 vector for me.
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!