找回密码
 欢迎注册
楼主: aimisiyou

[原创] 一维下料算法

[复制链接]
发表于 2019-10-30 23:03:15 | 显示全部楼层
clc
clear all
close all
%% 读取钢筋数据
data=load('钢筋明细表.txt');%读取数据
r=unique(data(:,1));%获得有哪几种钢筋直径
L=9000;%原始钢管长度
%% 计算每种钢筋尺寸的原材料的切割方式
global L_data d_data
for i1=3:3%length(r)%每种直径的材料依次循环
    fprintf('XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n')
    fprintf(strcat('直径为',num2str(r(i1)),'的切割方式为:\n'))
%% 获取最终的尺寸和数量
I1=find(data(:,1)==r(i1));
L_data=unique(data(I1,2));%获得有哪几种钢筋长度
d_data=zeros(length(L_data),1);%计算不同钢筋长度的数量
m=length(L_data);%钢筋的种类
for i2=1:length(I1)
    for i3=1:length(L_data)
       if data(I1(i2),2)==L_data(i3)
           d_data(i3)=d_data(i3)+1;
       end
    end
end
k=0;
for i2=1:length(L_data)
    k=k+ceil(d_data(i2)/floor(L/L_data(i2)));%计算一个初始的范围
end
%% 用GA求解
%未知数为aij和k1,aij前k1行有数据,后面k-k1行为0
LB=zeros(k*m+1,1);%下限
b=d_data;
A=zeros(m,k*m);
for i3=1:m%不同的钢筋种类
    for i4=1:k
        A(i3,i3+(i4-1)*k)=1;
    end
end

%% 显示结果
end
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2019-10-31 12:13:54 | 显示全部楼层
王守恩 发表于 2019-10-30 18:18
我会做具体的题目。
比如原材料规格2m,毛坯规格及数量要求分别为0.8m10根,0.6m4根,1.5m65根,0.7m6根 ...

你的世界别人不懂。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2019-10-31 12:16:36 | 显示全部楼层

当零件数量很多时,GA的效率有些低吧。有没有更高效的算法?
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2025-10-17 06:25 , Processed in 0.027297 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表