function bancai_num = save_opt1(sel_same_lower,result_bancai_all,leve_data,save_file_name)
%result_bancai_all 具体参考jisuan_shengyu1的解释
%leve_data(:,1)剩余的编号,leve_data(:,2)一个边,leve_data(:,3)另一个边,
% load('leve_data.mat')
%step1:将sel_same_lower中分组合并
data0 = [];
for i=1:length(sel_same_lower)
data0 = [data0;sel_same_lower{i}];
end
%%%step2:算法2对所有已用的板材再利用
save_file = {'板材号','产品id','产品x坐标','产品y坐标','产品x方向长度',...
'产品y方向长度'};
NG = length(result_bancai_all);
for ii=1:NG %第ii个板材
bancai_i = result_bancai_all{ii}; %当前板材存储的长条
N = size(bancai_i,1); %当前板材的条带数
x_axis = 0; %初始的从最左端存储
%%%%%%第一步:存储每个条带的所有物品位置,以及搜寻每个条带剩余位置可存放的物品
for i=1:N %第i个条带
%%首先,存储该条带中物品的位置
[~,~,ind2] = intersect(bancai_i{i,1},data0(:,1));
wupin = data0(ind2,:);
Ni = size(wupin,1); %该条带的物品数
y_axis = cumsum([0;wupin(:,2)]);
save_datai = [ii*ones(Ni,1),wupin(:,1),x_axis*ones(Ni,1),y_axis(1:Ni),...
wupin(:,[3,2])];
save_file = [save_file;num2cell(save_datai)];
%%其次,存储该条带中的剩余位置
shengyu = bancai_i{i,2};
[save_data,leve_data] = find_you_shang1(leve_data,shengyu);
save_data = [ii*ones(size(save_data,1),1),save_data]; %添加板材信息
save_file = [save_file;num2cell(save_data)];
x_axis = x_axis+wupin(1,3); %x坐标更新
end
%%%%%%%%%%%%%%%%右边废料再利用
x_remain = 1220-x_axis;
y_remain = 2440;
y_axis = 0;
shengyu_r = [x_axis,y_axis,x_remain,y_remain];
[save_data,leve_data,x_axis] = find_you_shang1(leve_data,shengyu_r);
%%判断右边是否还有
while size(save_data,1)>0
save_data = [ii*ones(size(save_data,1),1),save_data]; %添加板材号
save_file = [save_file;num2cell(save_data)];
x_remain = 1220-x_axis;
y_remain = 2440;
shengyu_r = [x_axis,0,x_remain,y_remain];
[save_data,leve_data,x_axis] = find_you_shang1(leve_data,shengyu_r);
end
end
% %%%%%对于剩余的所有物品执行操作
kk=ii+1;
while size(leve_data,1)>0
shengyu_r = [0,0,1220,2440];
[save_data,leve_data,x_axis] = find_you_shang1(leve_data,shengyu_r);
while size(save_data,1)>0
save_data = [kk*ones(size(save_data,1),1),save_data]; %添加板材号
save_file = [save_file;num2cell(save_data)];
x_remain = 1220-x_axis;
y_remain = 2440;
shengyu_r = [x_axis,0,x_remain,y_remain];
[save_data,leve_data,x_axis] = find_you_shang1(leve_data,shengyu_r);
end
kk = kk+1;
end
bancai_num = save_file{end,1};
writecell(save_file,save_file_name);
end
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
1.项目代码均经过功能验证ok,确保稳定可靠运行。欢迎下载体验!下载完使用问题请私信沟通。 2.主要针对各个计算机相关专业,包括计算机科学、信息安全、数据科学与大数据技术、人工智能、通信、物联网等领域的在校学生、专业教师、企业员工。 3.项目具有丰富的拓展空间,不仅可作为入门进阶,也可直接作为毕设、课程设计、大作业、初期项目立项演示等用途。 4.当然也鼓励大家基于此进行二次开发。在使用过程中,如有问题或建议,请及时沟通。 5.期待你能在项目中找到乐趣和灵感,也欢迎你的分享和反馈! 【资源说明】 基于Matlab实现两阶段遗传算法和贪心策略的多约束排样问题优化源码(含超详细注释+数据+运行说明).zip 下载代码,放入matlab路径,运行“main.m”,就可以得到最终的方案。 基于Matlab实现两阶段遗传算法和贪心策略的多约束排样问题优化源码(含超详细注释+数据+运行说明).zip 下载代码,放入matlab路径,运行“main.m”,就可以得到最终的方案。 基于Matlab实现两阶段遗传算法和贪心策略的多约束排样问题优化源码(含超详细注释+数据+运行说明).zip 下载代码,放入matlab路径,运行“main.m”,就可以得到最终的方案。 基于Matlab实现两阶段遗传算法和贪心策略的多约束排样问题优化源码(含超详细注释+数据+运行说明).zip 下载代码,放入matlab路径,运行“main.m”,就可以得到最终的方案。
资源推荐
资源详情
资源评论
收起资源包目录
基于Matlab实现两阶段遗传算法和贪心策略的多约束排样问题优化源码(含超详细注释+数据+运行说明).zip (30个子文件)
tiaoxuan_max.m 1KB
dataA5.csv 27KB
jisuan_remain.m 1KB
Mutate.m 263B
Select.m 233B
find_you_shang1.m 1KB
main.m 2KB
Reverse.m 542B
dataA3.csv 31KB
find_leve_opt.m 1KB
jiance_GA.m 627B
GA_beibao.m 2KB
bianma_opt.m 355B
PathLength.m 257B
second_GA.m 2KB
使用说明.md 170B
jisuan_main.m 2KB
dataA1.csv 26KB
save_opt1.m 3KB
Sus.m 455B
Fitness.m 125B
InitPop.m 238B
Reins.m 296B
jisuan_main_new.m 1KB
select_opt.m 2KB
dataA2.csv 25KB
Recombin.m 1KB
first_GA.m 1KB
intercross.m 474B
dataA4.csv 28KB
共 30 条
- 1
资源评论
北航程序员小C
- 粉丝: 2244
- 资源: 1825
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功