针对如何生成和为定值的随机数问题,关键点在于和为定值、随机数,可应用于优化算法的种群生成环节,如生成总发电量为定值的日随机负荷/随机发电计划,具体代码如下:包含1、生成和为定值的随机数(最后一位常为负数);2、生成和为定值的随机数(均为正数)
1、生成和为定值的随机数(最后一位常为负数)
SUM_powini = 1.401942259882683e+05;
N = 24; % 随机数个数
r = zeros(1, N); % 生成的随机数
sumtemp = floor(SUM_powini/N); % 每生成一个随机数后,剩余的和
for i=1:(N-1)
r(i) = sumtemp.*rand();
sumtemp = floor((SUM_powini - r(i))/(N-i) );
end
r(N) = SUM_powini - sum(r(1:N-1));
2、生成和为定值的随机数(均为正数)
通过添加限制,利用while循环可筛选出全为非负数的随机数
N=24;
PH = zeros(1,N);
SUM_powini = 1.401942259882683e+05;
% 初始化总负荷
counter = 0;
while (PH(N)<=0) && (counter <100)
sumtemp = floor(SUM_powini/N);
for j=1:(N-1)
PH(j) = sumtemp.*abs(rand());
sumtemp = floor((SUM_powini - PH(j))/(N-j));
end
PH(N) = SUM_powini - sum(PH(1:N-1)); % 初始化负荷
counter = counter + 1;
end