mInit = [7.561153490360498e+02;
7.587499955104199e+02;
1.517341237962881e+03;
1.524955776824620e+03;
1.526241966991056e+03;
1.639595673674974e+03]; % 根据generateM.m求解的最佳初始质量
vInit = [1.1, 1.8, 1.7, 1.5, 1.6, 1.1]; % 油箱最大供油速度
load("q3OilConsume.mat");
T = 1;
num = 3;
Q3pos = zeros(num,7200,3);
Q3method = zeros(num,100,4);
count = 1;
numCount = 1;
while(numCount<num)
while(T < 5600) % 保证供油时间
t = randi([60,100]); % 随机生成整数
rate = 1;
p1 = rand(1); % 随机比例1
flag = 1; % 还没有成功取到满足条件的值
if(T>5312)
v1 = p1*rate*q3OilConsume(T:T+t)+0.0001; % T表示开始时间
v2 = 0*q3OilConsume(T:T+t);
else
v1 = p1*rate*q3OilConsume(T:T+t); % T表示开始时间
v2 = rate*q3OilConsume(T:T+t) - v1;
end
box = randi(6,1,2); % 随机生成油箱
% 生成随机数
while(flag)
box = randi(6,1,2); % 随机生成油箱
if(box(1) == box(2)) % 生成了两个一样的油箱
p1 = 1;
else
p1 = rand(1); % 随机比例1
end
v1 = p1*rate*q3OilConsume(T:T+t); % T表示开始时间
v2 = rate*q3OilConsume(T:T+t) - v1;
mMust1 = sum(v1);
mMust2 = sum(v2);
% 随机生成合适的油箱
while (box(1) == 1 && box(2) == 6) || (box(1) == 6 && box(2) == 1)
box = randi(6,1,2); % 随机生成油箱,不能同时启动两个备用邮箱
end
% 判断油箱内是否还有油
while(mMust1 > mInit(box(1)) ||mMust2 > mInit(box(2)))
box = randi(6,1,2);
end
% 判断油箱速度是否满足
if(box(1)==box(2))
vFlag1 = max(q3OilConsume(T:T+t)) < max(max(v1),max(v2));
vFlag2 = vFlag1;
else
vFlag1 = vInit(box(1)) > max(v1);
vFlag2 = vInit(box(2)) > max(v2);
end
% vFlag1 = isempty(find((vInit(box(1))-v1)<0)); % 小于0的速度是否为空,返回1,表述数组中吴负数
% vFlag2 = isempty(find((vInit(box(2))-v2)<0));
if(vFlag1 && vFlag2) % 备用邮箱的供油速度都小于主油箱
if(box(1) == 1 && box(2) == 2) % 同时是1 2的情况下
vFlag3 = vInit(box(2)) > max(q3OilConsume(T:T+t));
if(vFlag3)
flag = 0; % 12可行
end
elseif(box(1) == 2 && box(2) == 1)
vFlag3 = vInit(box(1)) > max(q3OilConsume(T:T+t));
if(vFlag3)
flag = 0; % 12可行
end
elseif(box(1) == 5 && box(2) == 6)
vFlag3 = vInit(box(1)) > max(q3OilConsume(T:T+t));
if(vFlag3)
flag = 0; % 56可行
end
elseif(box(1) == 6 && box(2) == 5)
vFlag3 = vInit(box(2)) > max(q3OilConsume(T:T+t));
if(vFlag3)
flag = 0; % 56可行
end
else
flag = 0; % 不是12、56组合
end
end
end
[Q3pos(numCount,T:T+t+1,:),mInit] = getCentroid(box,[v1';v2'],mInit);
% 后续
Q3method(numCount,count,:) = [T,p1,box];
count = count + 1;
T = T + t+1 % 下一秒需要供油的时间
end
% 数据更新下一次
numCount = numCount + 1
T = 1;
flag = 1;
count = 1;
mInit = [7.561153490360498e+02;
7.587499955104199e+02;
1.517341237962881e+03;
1.524955776824620e+03;
1.526241966991056e+03;
1.639595673674974e+03];
end
妄北y
- 粉丝: 2w+
- 资源: 1万+
最新资源
- Lumerical FDTD仿真,逆向设计的片上功率分束器项目,项目工程+脚本代码+1.7w字报告,都很完整
- 光伏电池MPPT仿真模型 1.光伏电池参考一篇文献搭建的 2.在温度25 光照1000的时候光伏电池最大功率10kw 3.仿真在1秒和2秒的时候光照增加200、减小200,可以看到在扰动观察法点作用
- 饼干分包sw20可编辑全套技术资料100%好用.zip
- 变频与移相混合控制的全桥LLC谐振变器 有参考文献(看下图) 控制与移相控制组成的混合式控制全桥LLC谐振变器仿真(PFM+PSM混合控制) 输出电压闭环控制稳定在360V,软开关,宽范围,可实现调频
- 插座耐久试验台step全套技术资料100%好用.zip
- 2024中国大数据产业白皮书.pdf
- 多晶介电击穿相场模拟comsol电树枝 采用comsol相场模拟陶瓷介电击穿过程 晶粒与晶界具有不同的击穿场强,由于晶界的阻挡作用,击穿强度增加 并且晶界在电场作用下出现介电常数降低现象 晶界面
- 文字生成视频-可灵1.6
- DSP芯片程序读取 DSP28德州仪器28系列DSP反汇编,定点器件和浮点器件均支持,能够根据out、hex或bin文件建立可以编译的CCS汇编语言工程,并且编译后可生成二进制完全相同的bin文件,方
- 文字生成视频-可灵1.6
- 储能集装箱sw18可编辑全套技术资料100%好用.zip
- 关键词:微电网;储能系统;一致性算法;充放电分布式协同优化; ## 非完整复现,控制部分未做; 主题:在微电网系统中,储能系统(ESSs)常被用来支持频率控制 由于可再生能源发电的间歇性和负荷需求
- 光伏+混合储能三相并网超级电容能量管理 1、光伏MPPT最大功率跟踪 2、混合储能采用低通滤波器进行功率分配,可有效抑制功率波动, 3、对超级电容的soc进行能量管理,soc较高时多放电,较低时少放
- 阅后即焚平台系统源码 PHP版本.zip
- 在线Base64加解密HTML源码.zip
- EKF扩展卡尔曼滤波算法做电池SOC估计,在Simulink环境下对电池进行建模,包括: 1.电池模型 2.电池容量校正与温度补偿 3.电流效率 采用m脚本编写EKF扩展卡尔曼滤波算法,在Simuli
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈