没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
Capacity=xlsread('C:\Users\Administrator\Desktop\数模代码合集\数模第二次优秀论文研读\第三题\各机组段容量.xls');
Price=xlsread('C:\Users\Administrator\Desktop\数模代码合集\数模第二次优秀论文研读\第三题\各机组的段价.xls');
Speed=xlsread('C:\Users\Administrator\Desktop\数模代码合集\数模第二次优秀论文研读\第三题\各机组的爬坡速率.xls');
format short g;
[n,m]=size(Capacity); %n=8个机组 m=10段
PL=982.4; %负荷需求
art=zeros(n,1); %蚂蚁标识符
sum=0; %和值
g=zeros(n,1); %g对应每个机组的段容量和
part=zeros(8,1); %完整与否
while(1)
MIN=Price(1,art(1)+1); %每次循环默认第一个为最小值
for i=2:n
if art(i)==10
continue; %蚂蚁走到底
end
if Price(i,art(i)+1)<MIN
MIN=Price(i,art(i)+1); %逐行检索最小值
end
end %找到最小值MIN
[I,J]=find(Price(:,:)==MIN); %确定MIN位置
if size(I,1)~=1 %有多个MIN
I=I(1);
J=J(1); %记录第一个MIN
Price(I,J)=inf; %暂时把MIN值改为inf 以免影响后面的循环
end
art(I)=art(I)+1; %蚂蚁标识符对应位置+1
sum=sum+Capacity(I,J); %求和
if sum<PL
g(I)=g(I)+Capacity(I,J); %记录每个机组的段容量
Price=xlsread('C:\Users\Administrator\Desktop\数模代码合集\数模第二次优秀论文研读\第三题\各机组的段价.xls');
Speed=xlsread('C:\Users\Administrator\Desktop\数模代码合集\数模第二次优秀论文研读\第三题\各机组的爬坡速率.xls');
format short g;
[n,m]=size(Capacity); %n=8个机组 m=10段
PL=982.4; %负荷需求
art=zeros(n,1); %蚂蚁标识符
sum=0; %和值
g=zeros(n,1); %g对应每个机组的段容量和
part=zeros(8,1); %完整与否
while(1)
MIN=Price(1,art(1)+1); %每次循环默认第一个为最小值
for i=2:n
if art(i)==10
continue; %蚂蚁走到底
end
if Price(i,art(i)+1)<MIN
MIN=Price(i,art(i)+1); %逐行检索最小值
end
end %找到最小值MIN
[I,J]=find(Price(:,:)==MIN); %确定MIN位置
if size(I,1)~=1 %有多个MIN
I=I(1);
J=J(1); %记录第一个MIN
Price(I,J)=inf; %暂时把MIN值改为inf 以免影响后面的循环
end
art(I)=art(I)+1; %蚂蚁标识符对应位置+1
sum=sum+Capacity(I,J); %求和
if sum<PL
g(I)=g(I)+Capacity(I,J); %记录每个机组的段容量
elseif sum==PL
g(I)=g(I)+Capacity(I,J);
disp('sum=PL');
break;
else
g(I)=g(I)+(Capacity(I,J)-sum+PL); %调整sum和g确保sum=PL
sum=PL;
art(I)=art(I)-1; %第一遍的bug 最后一个应该减去1
part(I)=1; %不完整最后一个
break; %出循环条件
end
end
%---------------step1---------------------
Price=xlsread('C:\Users\Administrator\Desktop\数模代码合集\数模第二次优秀论文研读\第三题\各机组的段价.xls');
g0=[120 73 180 80 125 125 81.1 90]'; %初始g0
v=Speed.*60; %各机组的爬坡速率矩阵
t=1/4; %十五分钟为一个交易周期
g2=zeros(8,1);%辅助矩阵
flag=zeros(8,1);
while(1)
for i=1:n
if g(i)-g0(i)>=v(i)*t %爬不到这么高的情况
g(i)=g0(i)+v(i)*t; %新的最大值g(i)
g2(i)=g(i);%辅助矩阵来确定位置
for j=1:10 %对每个段容量的循环
g2(i)=g2(i)-Capacity(i,j); %依次减
if g2(i)==0 %刚好等于0
art(i)=j;
break;
elseif g2(i)<0 %小于0,即最后一段只取了一部分,art(i)=j-1
g(I)=g(I)+Capacity(I,J);
disp('sum=PL');
break;
else
g(I)=g(I)+(Capacity(I,J)-sum+PL); %调整sum和g确保sum=PL
sum=PL;
art(I)=art(I)-1; %第一遍的bug 最后一个应该减去1
part(I)=1; %不完整最后一个
break; %出循环条件
end
end
%---------------step1---------------------
Price=xlsread('C:\Users\Administrator\Desktop\数模代码合集\数模第二次优秀论文研读\第三题\各机组的段价.xls');
g0=[120 73 180 80 125 125 81.1 90]'; %初始g0
v=Speed.*60; %各机组的爬坡速率矩阵
t=1/4; %十五分钟为一个交易周期
g2=zeros(8,1);%辅助矩阵
flag=zeros(8,1);
while(1)
for i=1:n
if g(i)-g0(i)>=v(i)*t %爬不到这么高的情况
g(i)=g0(i)+v(i)*t; %新的最大值g(i)
g2(i)=g(i);%辅助矩阵来确定位置
for j=1:10 %对每个段容量的循环
g2(i)=g2(i)-Capacity(i,j); %依次减
if g2(i)==0 %刚好等于0
art(i)=j;
break;
elseif g2(i)<0 %小于0,即最后一段只取了一部分,art(i)=j-1
剩余5页未读,继续阅读
资源评论
- a15666482018-12-06代码可以参考
CodeHuba
- 粉丝: 2606
- 资源: 7
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- unity开发教程.docx
- 代码使用Pygame库实现了一个简单的烟花模拟 核心逻辑包括烟花和粒子类的定义,处理位置、爆炸、尾迹和绘制等操作
- Matlab Simulink 电力电子仿真-Flyback(反激电路)电路分析
- tudou-android-release.apk
- 数据分析教程.docx
- 基于matlab实现用有限元法计算电磁场的Matlab工具 .rar
- 基于matlab实现有限元算法 计算电磁场问题 边界条件包括第一类边界和第二类边界.rar
- 基于matlab实现用于计算不同车重下的电动汽车动力性和经济性.rar
- 基于matlab实现遗传算法求解多车场车辆路径问题 有多组算例可以用.rar
- 浏览器.apk
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功