背景介绍
问题背景:两阶段鲁棒优化模型中,一天24个时刻,每个时刻都有上边界或下边界的0-1状态。在给定Tao值下生成随机情景。
实现目标:在给定维度下,生成给定个数个随机值。
输入
Tao=[1 24];
初始值
生成给定长度的0矩阵
chushizhi=zeros(length(Tao),48);
随机给定0-1值
chushizhi=randi([0,1],length(Tao),48);
保证同一时刻不会同时达到上下边界,如果同时达到,令其取为上边界。
for j=1:length(Tao)
for i=1:24
if chushizhi(j,i)+chushizhi(j,i+24)~=1
chushizhi(j,i)=1;chushizhi(j,i+24)=0;
end
end
end
调整
遍历每一个维度,保证Tao值。
for n=1:length(Tao)
i=1;
while sum(chushizhi(n,:))<Tao(n)
chushizhi(n,i)=1;
i=i+1;
end
while sum(chushizhi(n,:))>Tao(n)
chushizhi(n,i)=0;
i=i+1;
end
end
如果超了,令第一个为1的改为0;如果不够,令第一个为0的改为1。直至条件满足。
完整展示
代码
Tao=[1 24];
chushizhi=zeros(length(Tao),48);
chushizhi=randi([0,1],length(Tao),48);
for j=1:length(Tao)
for i=1:24
if chushizhi(j,i)+chushizhi(j,i+24)~=1
chushizhi(j,i)=1;chushizhi(j,i+24)=0;
end
end
end
for n=1:length(Tao)
i=1;
while sum(chushizhi(n,:))<Tao(n)
chushizhi(n,i)=1;
i=i+1;
end
while sum(chushizhi(n,:))>Tao(n)
chushizhi(n,i)=0;
i=i+1;
end
end
结果