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

龙年行大运
- 粉丝: 1402
- 资源: 3960
最新资源
- 基于仿真平台MATLAB的储能配置分析:多种调度模式下光储电站的经济性最优储能容量配置策略,基于仿真平台MATLAB与多种调度模式的光储电站经济性最优储能容量配置研究,多种调度模式下的光储电站经济性最
- 基于微信小程序的EBA篮球分组设计源码
- 基于ASP.NET和SQL Server的简单留言板设计源码
- Matlab六自由度机械臂关节空间轨迹规划算法:基于3次与5次多项式插值法及353多项式的应用与实践,基于Matlab的六自由度机械臂关节空间轨迹规划算法研究:3次与5次多项式插值法及353多项式应用
- 基于JavaScript的菜品管理功能reggie2-master设计源码
- 基于Benders分解算法的两阶段鲁棒优化问题求解:MATLAB YALMIP+CPLEX实战案例解析与入门指南,基于Benders分解算法的两阶段鲁棒优化问题求解:详解实践与文献解读,基于bende
- 基于Java和HTML的车位租赁管理系统设计源码
- 离散空间矢量模型下的电流控制策略:基于DOB估计的参考电流预测与调控,基于离散空间矢量模型的预测电流控制及DOB参考电流外环估计,离散空间矢量模型预测电流控制 外环才用dob估计参考电流 ,核心关键词
- 基于Vue的养老服务平台中州养老设计源码
- 基于Java Swing实现的连连看小游戏设计源码
- 探索COMSOL多物理场模拟:热流固耦合、压缩空气作用下的应力场、温度场与渗流场综合分析,探索Comsol多物理场模拟:热流固耦合、压缩空气及其对应力场、温度场和渗流场的影响,comsol多物理场:
- 基于微信小程序的校园疫情防控及外出报备小程序设计源码
- 基于Vue框架的流浪动物救助网站前端设计源码
- 基于TypeScript的ZRouter鸿蒙动态路由框架设计源码
- 网络安全学习路线111
- 基于深度学习的猫狗图像识别(完整代码+数据集+一键运行)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈


