精华内容
下载资源
问答
  • 钢管下料问题

    万次阅读 多人点赞 2019-04-19 09:53:50
    生产中常会遇到通过切割、剪裁、冲压等手段,将原材料加工成所需大小这种工 艺过程,称为原料... 另一个实例:易拉罐下料问题: 用数学建模优化生产管理问题 - CSDN博客 目录 问题描述 1.1 问题(1)的求解 1 问...

    生产中常会遇到通过切割、剪裁、冲压等手段,将原材料加工成所需大小这种工 艺过程,称为原料下料(cutting stock)问题。按照进一步的工艺要求,确定下料方案, 使用料最省或利润最大,是典型的优化问题。本节通过一个实例讨论用数学规划模型解 决这类问题的方法。 另一个实例:易拉罐下料问题: 用数学建模优化生产管理问题 - CSDN博客

    目录

    问题描述

    1.1  问题(1)的求解

    1 问题分析

    2 模型建立 

    3 模型求解

    1.2  问题(2)的求解 

    (1)问题分析

    (2)模型建立 

    (3)模型求解


    问题描述

    某钢管零售商从钢管厂进货,将钢管按照顾客的要求切割后售出。从钢管厂 进货时得到的原料钢管都是 19m 长。

    (1)现有一客户需要 50 根 4m 长,20 根 6m 长和 15 根 8m 长的钢管。应如何下 料最节省?

    (2)零售商如果采用的不同切割模式太多,将会导致生产过程的复杂化,从而增 加生产和管理成本,所以该零售商规定采用的不同切割模式不能超过 3 种。此外,该客户除需要(1)中的三种钢管外,还需要 10 根 5m 长的钢管。应如何下料最节省?

    1.1  问题(1)的求解

    1 问题分析

    首先,应当确定哪些切割模式是可行的。所谓一个切割模式,是指按照客户需要在原料钢管上安排切割的一种组合。例如,我们可以将 19m 长的钢管切割成 3 根 4m 长的钢管,余料为 7m;或者将 19m 长的钢管切割成 4m,6m 和 8m 长的钢管各 1 根, 余料为 1m。显然,可行的切割模式是很多的。

    其次,应当确定哪些切割模式是合理的。通常假设一个合理的切割模式的余料不应该大于或等于客户需要的钢管的最小尺寸。例如,将 19m 长的钢管切割成 3 根 4m 的钢管是可行的,但余料为 7m,可以进一步将 7m 的余料切割成 4m 钢管(余料为 3m), 或者将 7m 的余料切割成 6m 钢管(余料为 1m)。在这种合理性假设下,切割模式一共 有 7 种,如表 3 所示。

    表 3 钢管下料的合理切割模式
    模式类别  4m钢管根数  6m钢管根数   8m钢管根数         余料(m)
    模式 1 4 0 0 3
    模式 2 3 1 0 1
    模式 3 2 0 1 3
    模式 4 1 2 0 3
    模式 5 1 1 1 1
    模式 6 0 3 0 1
    模式 7 0 0 2 3

    问题化为在满足客户需要的条件下,按照哪些种合理的模式,切割多少根原料钢 管,最为节省。而所谓节省,可以有两种标准,一是切割后剩余的总余料量最小,二是 切割原料钢管的总根数最少。下面将对这两个目标分别讨论。

    2 模型建立 

    •  决策变量:

    x_{i } 表示按照第i种模式(i = 1 2,,,7)切割的原料钢管的根数,显然它们应当是非负整数。 决策目标:以切割后剩余的总余料量最小为目标,则由表 3 可得 

    \textup{min}\: \: z_{1}=3x_{1}+x_{2}+3x_{3}+3x_{4}+x_{5}+x_{6}+3x_{7}              ( 1 )

    以切割原料钢管的总根数最少为目标,则有       \textup{min} \: \: z_{2} =\sum_{i=1}^{7}x_{i}             ( 2 )

     

    下面分别在这两种目标下求解。 约束条件:为满足客户的需求,按照表 3 应用 

              4x_{1} +3x_{2}+2x_{3} +x_{4}+x_{5}\geqslant 50\: ;\: \\ \; \; \; x_{2}+x_{4}+x_{5}+3x_{6}\geqslant 20\:                ( 3 )

          x_{3}+x_{5}+2x_{7}\geqslant 15                                               ( 4 )

    3 模型求解

    i)将式(1)和(3)构成的整数线性规划模型(加上整数约束)输入 LINGO 

    model: 
    TITLE 钢管下料-最小化余量; 
    sets: col/1..7/:c,x; 
    row/1..3/:b; 
    link(row,col):a; 
    endsets 
    data: 
    c=3 1 3 3 1 1 3; 
    b=50 20 15; 
    a=4 3 2 1 1 0 0   
        0 1 0 2 1 3 0   
        0 0 1 0 1 0 2; 
    enddata 
    min=@sum(col:c*x); 
    @for(row(i):@sum(col(j):a(i,j)*x(j))>=b(i)); 
    @for(col:@gin(x)); 
    end

     求得按照模式 2 切割 12 根原料钢管,按照模式 5 切割 15 根原料钢管,共 27 根, 总余料量为 27m。但 4m 长的钢管比要求多切割了 1 根,6m 长的钢管比要求多切割了 7 根。显然,在总余料量最小的目标下,最优解将是使用余料尽可能小的切割方式(模 式 2 和模式 5 的余料为 1m),这会导致切割原料钢管的总根数较多。

    ii)将式(2)~(4)构成的整数线性规划模型输入 LINGO 

    model: 
    TITLE 钢管下料-最小钢管数; 
    sets: col/1..7/:c,x; 
    row/1..3/:b; 
    link(row,col):a; 
    endsets 
    data: 
    c=3 1 3 3 1 1 3; 
    b=50 20 15; 
    a=4 3 2 1 1 0 0   
        0 1 0 2 1 3 0   
        0 0 1 0 1 0 2; 
    enddata 
    min=@sum(col:c*x); 
    @for(row(i):[con1]@sum(col(j):a(i,j)*x(j))>=b(i)); 
    @for(col:@gin(x)); 
    [remainder]y=@sum(col:c0*x); 
    end

    求得按照模式 2 切割 15 根原料钢管,按模式 5 切割 5 根,按模式 7 切割 5 根,共 25 根,可算出总余料量为 35m。但各长度的钢管数恰好全部满足要求,没有多切割。 与上面得到的结果比较,总余料量增加了 8m,但是所用的原料钢管的总根数减少了 2 根。在余料没有什么用途的情况下,通常选择总根数最少为目标。 

    1.2  问题(2)的求解 

    (1)问题分析

    按照问题(1)的思路,可以通过枚举法首先确定哪些切割模式是可行的。但由于需要的钢管规格增加到 4 种,所以枚举法的工作量较大。下面介绍的整数非线性规划模 型,可以同时确定切割模式和切割计划,是带有普遍性的方法。 同问题(1)类似,一个合理的切割模式的余料不应该大于或等于客户需要的钢管的最小尺寸(本题中为 4m),切割计划中只使用合理的切割模式,而由于本题中参数都 是整数,所以合理的切割模式的余量不能大于 3m。此外,这里我们仅选择总根数最少为目标进行求解。

    (2)模型建立 

    决策变量:由于不同切割模式不能超过 3 种,可以用 x_{j}  表示按照第 j 种模式(j=1,2,3 )切割的原料钢管的根数,显然它们应当是非负整数。设所使用的第 j 种切割模式下每根原料钢管生产 4m 长,5m 长,6m 长和 8m 长的钢管数量分别为
    r_{1j}\: ,\: r_{2j},\: r_{3j}\: ,\: r_{4j} \:(非负整数)。记客户需求的 4 种钢管的长度为 l_{i}  ,所以l=\left ( 4,5,6,8 \right )\: ; 数量为 b_{i}( i =1,2,3,4 ),即\: b=\left ( 50,10,20,15 \right )

    表4 三种钢管下料问题
       4m钢管根数  5m钢管根数  6m钢管根数  8m钢管根数  余料(m)
    模式 1 r_{11} r_{21} r_{31} r_{41}    \leqslant 3
    模式 2 r_{12} r_{22} r_{32} r_{42} \leqslant 3
    模式 3 r_{13} r_{23} r_{33} r_{43} \leqslant 3

    决策目标:以切割原料钢管的总根数最少为目标,即目标为  \textup{min}\: \sum_{j=1}^{3}x_{j}           (  5 )

    约束条件:为满足客户的需求,应有             \sum_{j=1}^{3}\: r_{ij}x_{j}\geqslant b_{i}\: ,\: i=1,2,3,4               ( 6 )

     每一种切割模式必须可行、合理,所以每根原料钢管的成品量不能超过 19m,也 不能少于 16m(余量不能大于 3m),于是 

    16\: \leqslant \sum_{i=1}^{4}\: l_{i}r_{ij}\leqslant 19 \: ,j=1,2,3                                ( 7 )

     由于l=\left ( 4,5,6,8 \right )\: ; 所以  \sum_{i=1}^{4}\: l_{i}r_{ij}=l_{1}r_{1j}+l_{2}r_{2j}+l_{3}r_{3j}+l_{4}r_{4j}=4r_{1j}+5r_{2j}+6r_{3j}+8r_{4j}

    有的小伙伴私信问我怎么用MATLAB实现它,其实就是把上面的式子(6)和(7)展开就好啦,也就是对于式子(6)有:

    r_{11}x_{1} +r_{12}x_{2} +r_{13}x_{3} \geqslant 50    (4米的钢管需求为50根);

    r_{21}x_{1} +r_{22}x_{2} +r_{23}x_{3} \geqslant 10    (5米的钢管需求为10根)

    r_{31}x_{1} +r_{32}x_{2} +r_{33}x_{3} \geqslant 20    (6米的钢管需求为20根)

    r_{41}x_{1} +r_{42}x_{2} +r_{43}x_{3} \geqslant 15    (8米的钢管需求为15根)


    对于式子(7)有:

    4r_{11}+5r_{21}+6r_{31}+8r_{41} \geqslant 164r_{12}+5r_{22}+6r_{32}+8r_{42} \geqslant 16 ;   4r_{13}+5r_{23}+6r_{33}+8r_{43} \geqslant 16

    4r_{11}+5r_{21}+6r_{31}+8r_{41} \leqslant 19  ;   4r_{12}+5r_{22}+6r_{32}+8r_{42} \leqslant 19  ;  4r_{13}+5r_{23}+6r_{33}+8r_{43} \leqslant 19

    (3)模型求解

    式(5)~(7)构成这个问题的优化模型。由于在式(5)~(7)中出现了决 策变量的乘积,所以这是一个整数非线性规划模型,虽然用 LINGO 软件可以直接求解, 但我们发现有时 LINGO 软件运行很长时间也难以得到最优解。为了减少运行时间,可 以增加一些显然的约束条件,从而缩小可行解的搜索范围。

    例如,由于 3 种切割模型的排列顺序是无关紧要的,所以不妨增加以下约束: x_{1 }\geqslant x_{2 }\geqslant x_{3 }       ( 8 )

    又如,我们注意到所需原料钢管的总根数有着明显的上界和下界。首先,无论如何,原料钢管的总根数不可能少于              [ (  4*50+5*10+6*20+8*15 ) /19] = 26 (根)。其次,考虑一种非常特殊的生产计划:第一种切割模式下只生产 4m 钢管,1 根原料钢管切割 成 4 根 4m 钢管,为满足 50 根 4m 钢管的需求,需要 13 根原料钢管;第二种切割模式 下只生产 5m、6m 钢管,一根原料钢管切割成 1 根 5m 钢管和 2 根 6m 钢管,为满足 10 根 5m 钢管和 20 根 6m 钢管的需求,需要 10 根原料钢管;第三种切割模式下只生产 8m 钢管,1 根原料钢管切割成 2 根 8m 钢管,为满足 15 根 8m 钢管的需求,需要 8 根原料 钢管。于是满足要求的这种生产计划共需  13+10+8= 31 根原料钢管,这就得到了最 优解的一个上界。所以可增加以下约束:

     26\: \leqslant \sum_{i=1}^{3}\: x_{i} \leqslant 31\:          ( 9 )

      将式(5)~(9)构成的模型输入 LINGO 如下: 

    model: 
    Title 钢管下料 - 最小化钢管根数的LINGO模型; 
    SETS:  
        NEEDS/1..4/: LENGTH,b;   
        CUTS/1..3/:X;          
        PATTERNS(NEEDS,CUTS):R;   
    ENDSETS 
    DATA:  
        LENGTH=4 5 6 8;  
        b=50 10 20 15;  
        CAPACITY=19; 
    ENDDATA 
    min=@SUM(CUTS(I): X(I) );    
    @FOR(NEEDS(I):@SUM(CUTS(J):X(J)*R(I,J))>b(I) ); 
    @FOR(CUTS(J):@SUM(NEEDS(I):LENGTH(I)*R(I,J))<CAPACITY );  @FOR(CUTS(J):@SUM(NEEDS(I):LENGTH(I)*R(I,J))>CAPACITY-@MIN(NEEDS(I): LENGTH(I)));             @SUM(CUTS(I):X(I))>26; @SUM(CUTS(I):X(I)) <31; !人为增加约束; @FOR(CUTS(I)|I#LT#@SIZE(CUTS):X(I)>X(I+1) ); !人为增加约束;     
    @FOR(CUTS(J): @GIN(X(J))) ; 
    @FOR(PATTERNS(I,J):@GIN(R(I,J))); 
    end
    

    得到按照模式 1,2,3 分别切割 10,10,8 根原料钢管,使用原料钢管总根数为 28 根。第一种切割模式下 1 根原料钢管切割成 2 根 4m 钢管、1 根 5m 钢管和 1 根 6m 钢管;第二种切割模式下 1 根原料钢管切割成 3 根 4m 钢管和 1 根 6m 钢管;第三种模 式下 1 根原料钢管切割成 2 根 8m 钢管。


    对于问题2 的MATLAB求解方式,相当于有15个未知数。 由于没有等式约束,我们用空矩阵[ ]表示。我们采用fmincon函数求解最小值。有目标函数为:\textup{min}\:\: \: x_{1}+x_{2}+x_{3}

    由于MATLAB中的线性不等式形如AX\leqslant b,所以有 【线性(不等式)约束】为

    -x_{1}-x_{2}-x_{3} \leqslant -26

    x_{1}+x_{2}+x_{3} \leqslant 31; 

    -x_{1} +x_{2} \leqslant 0

    -x_{2} +x_{3} \leqslant 0

    -4r_{11}-5r_{21}-6r_{31}-8r_{41} \leqslant - 16

    -4r_{12}-5r_{22}-6r_{32}-8r_{42} \leqslant - 16 ;

    -4r_{13}-5r_{23}-6r_{33}-8r_{43} \leqslant - 16

    4r_{11}+5r_{21}+6r_{31}+8r_{41} \leqslant 19  ;  

    4r_{12}+5r_{22}+6r_{32}+8r_{42} \leqslant 19  ; 

    4r_{13}+5r_{23}+6r_{33}+8r_{43} \leqslant 19

    非线性(不等式)约束条件为

    -r_{11}x_{1} -r_{12}x_{2} -r_{13}x_{3} +50 \leqslant 0 ; 

    -r_{21}x_{1} -r_{22}x_{2} -r_{23}x_{3} +10 \leqslant 0   

    -r_{31}x_{1} -r_{32}x_{2} -r_{33}x_{3} +20 \leqslant 0  ;

    -r_{41}x_{1} -r_{42}x_{2} -r_{43}x_{3} +15 \leqslant 0   


    所以求解的MATLAB代码如下,由于没有增加整数约束,导致求出来的结果是小数,还望大神在评论区告诉我怎么加整数约束。

     

    clc
    clear
    %close all 
    
    x0 =rand(15,1);  %15个未知数
    
    fun =@(x)x(1)+x(2)+x(3); % 目标函数
    
    %用x(4)、x(5)、x(6)表示r11 、r12 、r13
    %用x(7)、x(8)、x(9)表示r21、 r22、 r23
    %用x(10)、x(11)、x(12)表示r31 、r32 、r33 
    %用x(13)、x(14)、x(15)表示r41 、r42 、r43
    
    % c 为10个线性(不等式)约束,需要转换成小于等于0的形式
    A= [-1 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0;
        1 1 1 0 0 0 0 0 0 0 0 0 0 0 0; 
        -1 1 0 0 0 0 0 0 0 0 0 0 0 0 0;
        0 -1 1 0 0 0 0 0 0 0 0 0 0 0 0;
        0 0 0 -4 0 0 -5 0 0 -6 0 0 -8 0 0;
        0 0 0 0 -4 0 0 -5 0 0 -6 0 0 -8 0;
        0 0 0 0 0 -4 0 0 -5 0 0 -6 0 0 -8;
        0 0 0 4 0 0 5 0 0 6 0 0 8 0 0;
        0 0 0 0 4 0 0 5 0 0 6 0 0 8 0;
        0 0 0 0 0 4 0 0 5 0 0 6 0 0 8;
        ];
    
    b = [-26;31;0;0;-16;-16;-16;19;19;19];
    
    %c为非线性(不等式)约束,需要转换成小于等于0的形式
    c=@(x)[ -x(1)*x(4)-x(2)*x(5)-x(3)*x(6) +50;
        -x(1)*x(7)-x(2)*x(8)-x(3)*x(9) +10;
        -x(1)*x(10)-x(2)*x(11)-x(3)*x(12) +20;
        -x(1)*x(13)-x(2)*x(14)-x(3)*x(15) +15;
        ];
    nonlinfon = @(x)deal(c(x));
    lb = [0;0;0;0;0;0;0;0;0;0;0;0;0;0;0] % 所有的x都大于等于0
    %
    options = optimoptions(@fmincon,'MaxIter',10000);
    options=optimoptions(@fmincon,'MaxFunEvals',100000);
    [x fval exitflag]  = fmincon(fun,x0,A,b,[],[],lb,[],nonlinfon,options)
    

     另外关于exitflag 为-1和-2说明没找到最优解;为1-5说明找到了(局部)最优解。为0是迭代次数很多但仍不收敛,可考虑修改最大迭代次数。

    x =[   16.4649;    0.0001;    0.0000;

        0.1654;    1.1044;    1.0892
        0.2021;    0.8803;    0.9247
        0.2394;    0.7258;    0.7205
        0.3166;    0.5630;    0.5527 ].
    fval =   16.4649
    exitflag =     0

     

     

    展开全文
  • 板材玻璃下料问题

    2012-04-17 14:13:39
    板材玻璃下料问题板材玻璃下料问题板材玻璃下料问题
  • 本文系统深入地讨论了二维下料问题。在分析目前有关二维下料一般算法的基础上,针对这些算法当中存在的问题,提出了两类改进的适于在一般生产工厂应用微机进行运算的二维下料算法,即约束的二维下料算法和无约束二维...
  • 这是简单下料问题的程序,说明了下料方式的搜索
  • 钢管下料问题模型求解

    千次阅读 2020-05-21 09:56:18
    文章目录钢管下料问题模型求解【问题描述】【问题分析】【实验原理】【源代码】 钢管下料问题模型求解 关键词:钢管下料 Python、 Lingo 【问题描述】 某钢管零售商从钢管厂进货,将钢管按照顾客得要求切割后售出...

    钢管下料问题模型求解

    关键词:钢管下料 PythonLingo

    一、问题描述

    某钢管零售商从钢管厂进货,将钢管按照顾客得要求切割后售出,从钢管厂进货时得到得原料钢管都是19m。

    1. 现有一客户需要504m、206m和158m的钢管。问应如何下料最节省?
    2. 零售商如果采用的不同切割模式太多,将会导致生产过程的复杂化,从而增加生产和管理成本,所以零售商规定采取的切割模式不超过3种。此外,该客户除需要(1)中的三种钢管外,还需要105m的钢管,问应如何下料最节省?

    二、问题分析

    问题一:

    ①要使下料最节省,根据实际需要,可选择总余量最小和所用原料钢管根数最少作为目标。在余料没有什么用途的情况下通常选择所用总根数最少为目标。

    ②对于每种切割模式必须合理,即每根钢管剩余原料必须小于4m。


    问题二:

    ①本题的目标为利润扣除废料之后净利润最大。废料分为两种,一种是余料,一种是不能匹配的罐底瓶盖

    ②在该题中,易拉罐个数为整数,但是由于生产数目巨大,故可看作实数


    三、实验原理

    问题一: 钢管的切割模式

    python枚举法列出所有合理切割模式

    4m钢管数 6m钢管数 8m钢管数 余料/m
    模式一 4 0 0 3
    模式二 3 1 0 1
    模式三 2 0 1 3
    模式四 1 2 0 3
    模式五 1 1 1 1
    模式六 0 3 0 1
    模式七 0 0 2 3

    问题二: 钢管切割模式

    python枚举法列出所有合理切割模式

    四、运行结果

    问题一:

    • python求解

    fun: 25.0

    message: ‘Optimization terminated successfully.’

    nit: 4

    slack: array([0., 0., 0.])

    status: 0

    success: True

    x: array([ 5., 0., 5., 0., 0., 15., 0.])


    问题二:

    • python求解
    • lingo求解

    Local optimal solution found.

    Objective value: 28.00000

    Objective bound: 28.00000

    Infeasibilities: 0.000000

    Extended solver steps: 145

    Total solver iterations: 9131


    五、源代码

    问题一:

    • python
    # -*- coding: utf-8 -*-
    from scipy import optimize as op
    import numpy as np
    b_list=[]
    c_list=[]
    for i in range(5):
        for j in range(4):
            for k in range(3):
                if 16<=4*i+6*j+8*k<=19:
                    a_list = [] #存储一种情况
                    a_dict = {} #存储一种情况的数据
                    a_dict["x"]=i
                    a_dict["y"]=j
                    a_dict["z"]=k
                    a_list.append(a_dict)
                    b_list.append(a_list)  
    f=np.array([1,1,1,1,1,1,1])
    a=[];b=[];c=[]
    for k1 in range(7):
        a.append(b_list[k1][0]["x"])
    for k2 in range(7):
        b.append(b_list[k2][0]["y"])
    for k3 in range(7):
        c.append(b_list[k3][0]["z"])
    a=np.asarray(a);b=np.asarray(b);c=np.asarray(c)
    A=np.array([a,b,c])
    b=np.array([50,20,15])
    x=op.linprog(f,-A,-b)
    print(x)
    
    • lingo
    MODEL:
    sets:
    v1/1..7/:c,x;
    v2/1..3/:b;
    link(v2,v1):A;
    endsets
    data:
    c=1,1,1,1,1,1,1;
    A=4,3,2,1,1,0,0
      0,1,0,2,1,3,0
      0,0,1,0,1,0,2;
    b=50,20,15;
    enddata
    min=@sum(v1(i):c(i)*x(i));
    @for(v2(i):@sum(v1(j):A(i,j)*x(j))>b(i));
    @for(v1(i):@gin(x(i)));
    end
    

    问题二:

    • python
    # -*- coding: utf-8 -*-
    #from scipy import optimize as op
    import numpy as np
    import cvxpy as cp
    b_list=[]
    d_list=[]
    e_list=[]
    lst=[]
    for i in range(5): #该模式下切4m长的段数
        for j in range(4): #该模式下切5m长的段数
            for k in range(4): #该模式下切6m长的段数
                for l in range(3): #该模式下切8m长的段数
                    if 16<=4*i+5*j+6*k+8*l<=19:
                        a_list = [] #存储一种情况
                        a_dict = {} #存储一种情况的数据
                        a_dict["x"]=i
                        a_dict["y"]=j
                        a_dict["z"]=k
                        a_dict["m"]=l
                        a_list.append(a_dict)
                        b_list.append(a_list) #合理的切割模式
    '''最多三种切割方式'''
    for m1 in range(len(b_list)):
        for m2 in range(len(b_list)):
            for m3 in range(len(b_list)):
                if m1!=m2!=m3 and m1>m2 and m1>m3 and m2>m3:
                    c_list=[]
                    b_dict={}
                    b_dict["r"]=b_list[m1][0]
                    b_dict["s"]=b_list[m2][0]
                    b_dict["t"]=b_list[m3][0]
                    c_list.append(b_dict)
                    d_list.append(c_list)
    n=3 #求解的变量个数
    for q in range(len(d_list)):
        f=np.array([1,1,1]) #目标函数的系数矩阵
        a=[];b=[];c=[];d=[]
        #系数矩阵第一行
        a.append(-d_list[q][0]["r"]["x"])
        a.append(-d_list[q][0]["s"]["x"])
        a.append(-d_list[q][0]["t"]["x"])
        #系数矩阵第二行
        b.append(-d_list[q][0]["r"]["y"])
        b.append(-d_list[q][0]["s"]["y"])
        b.append(-d_list[q][0]["t"]["y"])
        #系数矩阵第三行
        c.append(-d_list[q][0]["r"]["z"])
        c.append(-d_list[q][0]["s"]["z"])
        c.append(-d_list[q][0]["t"]["z"])
        #系数矩阵第四行
        d.append(-d_list[q][0]["r"]["m"])
        d.append(-d_list[q][0]["s"]["m"])
        d.append(-d_list[q][0]["t"]["m"])
        a=np.asarray(a);b=np.asarray(b);c=np.asarray(c)
        A=np.array([a,b,c,d]) #约束条件的系数矩阵
        B=np.array([-50,-10,-20,-15])
        #创建x,个数是3
        x=cp.Variable(n,integer=True)
        #目标函数
        objective=cp.Maximize(cp.sum(f*x))
        #约束条件,其中A是4×3,x是3×1,A*x=b(b为4×1的矩阵)
        constriants=[0<=x,A*x<=B]
        #求解问题
        prob=cp.Problem(objective,constriants)
        prob.solve(solver=cp.CPLEX)
        lst.append(x.value)
        e_list.append(prob.value)
    print(min(e_list))
    
    • lingo
    model:
    title cutting-stock problem;
    sets:
    !定义基本集合needs及其属性length,num;
    needs /1..4/:length,num;
    !定义基本集合cuts及其属性x;
    cuts /1..3/:x;
    !定义派生集合patterns及其属性r;
    patterns(needs,cuts):r;
    endsets
    data:
    length=4 5 6 8;
    num=50 10 20 15;
    capacity=19;
    enddata
    min=@sum(cuts(i):x(i));
    !满足需求的约束;
    @for(needs(i):@sum(cuts(j):x(j)*r(i,j))>num(i));
    !合理切割模式的约束;
    @for(cuts(j):@sum(needs(i):length(i)*r(i,j))<capacity);
    @for(cuts(j):@sum(needs(i):length(i)*r(I,j))>capacity-@min(needs:length));
    !人为增加的约束;
    @sum(cuts:x)>26;@sum(cuts:x)<31;
    @for(cuts(i)|i#lt#@ size(cuts):x(i)>x(i+1));
    @for(cuts:@gin(x););
    @for(patterns:@gin(r););
    end
    )<capacity);
    @for(cuts(j):@sum(needs(i):length(i)*r(I,j))>capacity-@min(needs:length));
    !人为增加的约束;
    @sum(cuts:x)>26;@sum(cuts:x)<31;
    @for(cuts(i)|i#lt#@ size(cuts):x(i)>x(i+1));
    @for(cuts:@gin(x););
    @for(patterns:@gin(r););
    end
    
    展开全文
  • 实用下料问题

    2007-11-01 20:50:32
    运筹学的下料问题。是一篇论文
  • 对型材下料问题进行了深入的研究,给出了相应问题的数学模型和求解算法。并且与其他软件进行了比较。实验表明:用该文的方法进行下料取得了效果明显。
  • 今天是开学的第三周周末,一整个上午都在上机,感受颇丰. “思想上的巨人,代码上的小矮人”,用来形容我倒不为过.(思想上的巨人有些夸大了哈哈哈)....实验一:钢管下料问题(LP问题) 要求:已知原料钢管总长度为19

    今天是开学的第三周周末,一整个上午都在上机,感受颇丰.

    “思想上的巨人,代码上的小矮人”,用来形容我倒不为过.(思想上的巨人有些夸大了哈哈哈).
    今天深感无力,碰到一个问题,最令我头疼的还是代码.用什么样的算法解决?如何解决?又如何去改进与优化?这是我们每个人在面对(数学)问题时应仔细考虑的问题.
    有时在编写代码前在纸上需要将基本可行方法及步骤写出来,有些东西也确实需要反复推敲方才可能放在软件里面去跑出相对更优的结果.

    感慨至此,奔入主题.

    实验一:钢管下料问题(LP问题)
    

    要求:已知原料钢管总长度为19米,要求在任意输入l1、l2、l3(客户需求长度)以及对应的需求根数n1、n2、n3时,应用穷举法生成所有可能的合理的切割模式,建立线性规划模型并求解.
    解:
    (1)穷举法生成所有合理的切割模式.简便起见,我们先假定客户需求为4、6、8米长度(如书中)的钢管.代码请见附录一:(使用matlab)
    在这里插入图片描述
    附录一:

    totlen = 19; len1 = 8; len2 = 6; len3 = 4; vector = [];               %规定钢管总长度,与客户需求长度
    for num8 = 0:2               %从长度较大者开始切割算起
         restlen = totlen - num8 * len1;               %剩下的用来“分配”另外两种长度的钢管
         if restlen >= 6               %剩下长度能切割的前提是长度足够
             maxnum6 = fix(res tlen / len2);               %剩下钢管分配给中等长度钢管可以切割的最大数量
             for num6 = 0:maxnum6               %从最大数量依次减少(即分情况)
                 restlen = restlen - num6 * len2;               %再剩下的用于最小长度钢管的切割
                 if restlen >= 4               %剩下长度能切割的前提是长度足够
                     num4 = fix(restlen / len3);
                     remain = restlen - num4 * len3;
                     vector =[vector,num8,num6,num4,remain];
                 else
                     num4 = 0;
                     remain = restlen;
                     vector = [vector,num8,num6,num4,remain];
                 end
                 restlen = totlen - num8 * len1;               %重新给切割完最大长度钢管后的钢管长度赋值
             end
         else
             num6 = 0;
             if restlen >= 4
                 num4 = fix(restlen / len3);
             else
                 num4 = 0;
                 remain = totlen - num8 * len1;
             end
             vector = [vector,num8,num6,num4,remain];               %每一组模式有四个数,我们直接规定成一个向量,最后再整理就可
         end
    end
    vector
    (reshape(vector,4,[]))'               %将得到的模式的原有数据整理成矩阵(表格)显示
    

    (2)建立线性规划模型并求解,代码见附录二:(使用lingo17.0)
    为简便起见,先规定客户对于8米、6米、4米钢管的需求根数分别为15、20、50根.建立如下线性规划模型:

    Subject to:
    在这里插入图片描述

    Target function:
    在这里插入图片描述
    求解如下:(以余料最小为优化目标)
    在这里插入图片描述

    附录二:

    //木材分割中的lingo求解(以余料为优化目标)
    model:
    sets:
    num/1..7/:s,w,t,x,obj;
    endsets
    data:
    s=-4,-3,-2,-1,-1,0,0;
    w=0,-1,0,-2,-1,-3,0;
    t=0,0,-1,0,-1,0,-2;
    obj=3,1,3,3,1,1,3;
    enddata
    min=@sum(num(i):obj(i)*x(i));
    @sum(num(i):s(i)*x(i))<=-50;
    @sum(num(i):w(i)*x(i))<=-20;
    @sum(num(i):t(i)*x(i))<=-15;
    @for(num(i):@GIN(x(i)));
    end
    

    原创,转载前请联系邮箱liuan2307511895@foxmail.com 谢谢.*
    最近同时在学习python相关内容,有时间就会发博客,随缘.

    展开全文
  • 圆木二维下料问题是木材企业中常见问题,针对一些头部与尾部直径相差不大的木材,可以将这些木材看作是圆柱体,下料时将其切成和圆木长度相等的多个长方体毛坯,该问题可转化为二维下料问题。采用顺序价值校正框架和...
  • 一维下料问题的研究

    千次阅读 2020-07-24 10:23:54
    所谓一维下料,只关注其中一种属性,而其它属性被认为全部相同,这样便大大降低了下料问题的处理难度。本文研究的一维下料,以长度作为优化目标。 二、术语定义 原料:用于切割的原材料,长度不定。 零件:从原料...

    一、概念

    下料:有若干规格的原材料,要切割成一批若干规格的零件,确定一种切割方式,使得原材料用料最少、产生的废料最少。

    一维下料:上面提到的规格,可以包含很多属性,比如:长度、宽度、厚度等等。所谓一维下料,只关注其中一种属性,而其它属性被认为全部相同,这样便大大降低了下料问题的处理难度。本文研究的一维下料,以长度作为优化目标。

    二、术语定义

    原料:用于切割的原材料,长度不定。

    零件:从原料中切割下来的短料。

    废料:一根原料被使用后,剩余长度无法再用于生产任意零件。一般定义为阈值。

    余料:一个原料被使用后,剩余材料仍然可以在后续生产中进行零件切割。

    三、问题描述

    现有N段长度不等的原料(当然,也可以全部长度相等或者其中一部分长度相等),现需要切割为M段长度不等的零件,生成一种切割方案,使产生的废料最少(阈值)、若必须要产生余料应使余料大于指定长度(阈值)以便余料再利用。

    四、解决方案

    1)穷举法

    当原料和零件数量很小时,穷举法可以对所有切割方案进行穷举遍历,寻找最优解。但是如果原料和零件数量达到一定量后,穷举法时间复杂度成指数级增长,计算机无法算出结果。这里给一些定量的概念,比如从零件的角度穷举,M=20时,穷举数量级为1,048,576,M=30时,穷举数量级为1,073,741,824。即时间复杂度为O(2^M),隐藏零件数量到达20以上时,就变成了无法完成的任务。

    2)遗传算法

    百度搜索“一维下料 遗传算法”,会得到非常多的相关论文搜索结果。遗传算法以进化论为依据,当种群进化若干代后,便会得到一个相对精英的种群。将一维下料问题转化为遗传算法模型如下:

    a)染色体:a1,a2,a3......am,表示第m个零件在第am根原料上截取;

    b)种群初始化:初始化x个可行染色体种群

    c)交叉算子:按交叉概率,对染色体进行两两交叉,注意不要交叉出无效染色体

    d)变异算子:按变异概率,对染色体中的基因进行剔除并变异,注意不要变异出无效染色体

    e)选择算子:采用锦标赛算法或轮盘赌算法,对优秀染色体进行选择

    f)适应度函数:根据优化目标设计适应度函数,一般从利用率、废料率角度设计

    遗传算法能对下料方案有一定程度的优化,但是优化不明显,或许是哪个算子设计不合理、或者参数没有调到合适的值。(注:相关的论文中,结果数据非常优秀,但本人无法调出那么优秀的方案,所以对有些论文报怀疑态度)。

    3)动态规划

    一维下料的核心,其实可以对接背包问题,而动态规划实际上是一种解背包问题的其中一种算法。看了几个论文资料,算法没看太懂,暂没时间做实验,不做评价。

    4)自研算法

    涉及到商业上的问题,不便多说,但整体思路是模拟人工的操作。一般一个工人,拿到一组原料和一组零件规格后,只要给足够的时间,总能设计出一些比较优秀的方案,而此算法正是模拟这个过程。

    五、总结

    算法的东西,需要深入研究,但是不能一味的陷进去,有时候换个思路,可能得到意想不到的效果。大道至简才是精髓。

    最后,放上一个测试链接,有兴趣的欢迎交流:http://106.53.17.139:8088/demo/

    下面贴一组数据:

    方案1:
    余    0,排样规则:2234=2234
    余   37,排样规则:2676=2639
    余   12,排样规则:2777=2765
    余   38,排样规则:2964=2926
    余    1,排样规则:3062=1518+1543
    余   16,排样规则:3134=3118
    余    2,排样规则:3472=3470
    余    8,排样规则:3513=3505
    余    7,排样规则:3574=1690+1877
    余   14,排样规则:3577=1947+1616
    余    8,排样规则:3972=1747+2217
    余    8,排样规则:3996=3988
    余    3,排样规则:4064=2028+2033
    余    3,排样规则:4212=2567+1642
    余    0,排样规则:4496=2759+1737
    余    2,排样规则:4541=2183+2356
    余    0,排样规则:4550=2632+1918
    余    0,排样规则:4765=2918+1847
    余    1,排样规则:4850=4849
    余    6,排样规则:4902=2714+2182
    余    5,排样规则:5869=3076+2788
    余    3,排样规则:5972=3654+2315
    余    1,排样规则:6135=3249+2885
    余    0,排样规则:6209=3794+2415
    余    0,排样规则:7807=3170+2390+2247
    余    2,排样规则:8567=4698+3867
    余    1,排样规则:8904=5174+3729
    余    1,排样规则:9975=2390+2552+2751+2281
    余    0,排样规则:10729=3757+3195+3777
    余    1,排样规则:11176=4688+4019+2468
    余    0,排样规则:11338=5213+3756+2369
    余    2,排样规则:11561=3520+4546+3493
    余    0,排样规则:11571=2290+4000+5281
    余    2,排样规则:12140=3862+4399+2084+1793
    余    0,排样规则:12613=5157+5391+2065
    余    1,排样规则:13086=4737+5052+3296
    余    0,排样规则:13423=4653+4372+4398
    余    2,排样规则:13461=4713+4271+4475
    余    2,排样规则:14717=3222+4870+4678+1945
    余    0,排样规则:14836=4096+5550+5190
    余    0,排样规则:15015=5023+2527+5312+2153
    余    0,排样规则:15155=3852+5336+3706+2261
    余    0,排样规则:15196=5079+2919+4830+2368
    余    0,排样规则:15330=4031+2751+5726+2822
    余    1,排样规则:15440=3417+5634+3687+2701
    余    1,排样规则:15480=2890+4757+5090+2742
    余    0,排样规则:15688=4129+4214+3227+4118
    余    1,排样规则:15733=3609+5587+3739+2797
    余    1,排样规则:15825=4925+5485+5414
    余    0,排样规则:16118=5373+5581+5164
    余    2,排样规则:16525=3363+4639+5489+3032
    余    1,排样规则:16676=5686+5425+5564
    余    2,排样规则:16719=5783+3481+4413+3040
    余    7,排样规则:16736=3907+5722+3463+3637
    余    3,排样规则:16764=5686+5473+5602
    余 3854,排样规则:16793=4223+4454+4262
    余 3506,排样规则:20185=5451+5705+5523
    
    方案2:
    余    0,排样规则:2234=2234
    余   37,排样规则:2676=2639
    余   12,排样规则:2777=2765
    余   38,排样规则:2964=2926
    余    1,排样规则:3062=1543+1518
    余   16,排样规则:3134=3118
    余    2,排样规则:3472=3470
    余    8,排样规则:3513=3505
    余    7,排样规则:3574=1877+1690
    余   14,排样规则:3577=1947+1616
    余    8,排样规则:3972=2217+1747
    余    8,排样规则:3996=3988
    余    3,排样规则:4064=2033+2028
    余    3,排样规则:4212=2567+1642
    余    0,排样规则:4496=2759+1737
    余    2,排样规则:4541=2356+2183
    余    0,排样规则:4550=2632+1918
    余    0,排样规则:4765=1847+2918
    余    1,排样规则:4850=4849
    余    7,排样规则:4902=2742+2153
    余    0,排样规则:5869=3687+2182
    余    0,排样规则:5972=3907+2065
    余    1,排样规则:6135=3249+2885
    余    0,排样规则:6209=3794+2415
    余    0,排样规则:7807=2822+3040+1945
    余    2,排样规则:8567=5489+3076
    余    1,排样规则:8904=2701+4118+2084
    余    0,排样规则:9975=3296+4398+2281
    余    1,排样规则:10729=5164+5564
    余    0,排样规则:11176=3739+5190+2247
    余    3,排样规则:11338=5312+2369+3654
    余    0,排样规则:11561=3757+5336+2468
    余    0,排样规则:11571=5550+2315+3706
    余    0,排样规则:12140=4096+5783+2261
    余    1,排样规则:12613=2890+5722+4000
    余    1,排样规则:13086=3170+3195+3493+3227
    余    0,排样规则:13423=4546+3862+1793+3222
    余    2,排样规则:13461=2390+3756+5023+2290
    余    0,排样规则:14717=4757+4475+5485
    余    0,排样规则:14836=5686+5373+3777
    余    1,排样规则:15015=4372+5523+2368+2751
    余    1,排样规则:15155=4870+3481+4413+2390
    余    0,排样规则:15196=5414+2527+4223+3032
    余    0,排样规则:15330=5634+5425+4271
    余    0,排样规则:15440=3609+3867+5213+2751
    余    1,排样规则:15480=4688+2788+5451+2552
    余    0,排样规则:15688=4214+3520+5157+2797
    余    3,排样规则:15733=5726+4830+5174
    余    0,排样规则:15825=3463+4262+4737+3363
    余    2,排样规则:16118=2714+4713+5052+3637
    余    9,排样规则:16525=3729+4019+4639+4129
    余    1,排样规则:16676=5686+3417+4653+2919
    余   36,排样规则:16719=5587+5705+5391
    余    0,排样规则:16736=4399+3852+4454+4031
    余 3565,排样规则:17866=4678+4698+4925
    余 3508,排样规则:18958=5281+5090+5079
    余 3529,排样规则:20185=5473+5602+5581
    
    方案3:
    余    0,排样规则:2234=2234
    余   37,排样规则:2676=2639
    余   12,排样规则:2777=2765
    余   38,排样规则:2964=2926
    余    1,排样规则:3062=1543+1518
    余   16,排样规则:3134=3118
    余    2,排样规则:3472=3470
    余    8,排样规则:3513=3505
    余    7,排样规则:3574=1690+1877
    余   14,排样规则:3577=1947+1616
    余    8,排样规则:3972=2217+1747
    余    8,排样规则:3996=3988
    余    3,排样规则:4064=2028+2033
    余    3,排样规则:4212=2567+1642
    余    0,排样规则:4496=2759+1737
    余    2,排样规则:4541=2183+2356
    余    0,排样规则:4550=2632+1918
    余    0,排样规则:4765=2918+1847
    余    1,排样规则:4850=4849
    余    6,排样规则:4902=2714+2182
    余    5,排样规则:5869=3076+2788
    余    0,排样规则:5972=3907+2065
    余    2,排样规则:6135=2281+3852
    余    0,排样规则:6209=3794+2415
    余    1,排样规则:7807=5722+2084
    余    3,排样规则:8567=4372+2247+1945
    余    2,排样规则:8904=4688+4214
    余    0,排样规则:9975=5336+4639
    余    0,排样规则:10729=5473+3463+1793
    余    0,排样规则:11176=3654+2390+2390+2742
    余    0,排样规则:11338=2797+2751+3637+2153
    余    1,排样规则:11561=4653+3040+3867
    余    0,排样规则:11571=4413+3296+3862
    余    0,排样规则:12140=4096+5783+2261
    余    0,排样规则:12613=2701+4129+3493+2290
    余    0,排样规则:13086=5581+5190+2315
    余    0,排样规则:13423=5425+2919+5079
    余    0,排样规则:13461=4925+4830+3706
    余    0,排样规则:14717=2527+5164+3417+3609
    余    0,排样规则:14836=5414+4031+5391
    余    0,排样规则:15015=4000+3777+4870+2368
    余    0,排样规则:15155=2890+5634+4262+2369
    余    0,排样规则:15196=5489+3729+3227+2751
    余    0,排样规则:15330=5686+5373+4271
    余    0,排样规则:15440=5213+3249+3756+3222
    余    2,排样规则:15480=5281+5174+5023
    余    3,排样规则:15688=3363+3757+4019+4546
    余    0,排样规则:15733=5485+4698+5550
    余    1,排样规则:15825=2552+3195+4223+3032+2822
    余    1,排样规则:16118=5564+2468+4398+3687
    余    0,排样规则:16525=3520+5157+4678+3170
    余    3,排样规则:16676=3739+5312+4737+2885
    余    7,排样规则:16719=5523+5602+5587
    余   25,排样规则:16736=3481+4713+4399+4118
    余   32,排样规则:16914=5705+5451+5726
    余 3549,排样规则:17235=4454+4475+4757
    余 3664,排样规则:19492=5052+5090+5686
    
    方案4:
    余    0,排样规则:2234=2234
    余   37,排样规则:2676=2639
    余   12,排样规则:2777=2765
    余   38,排样规则:2964=2926
    余    1,排样规则:3062=1518+1543
    余   16,排样规则:3134=3118
    余    2,排样规则:3472=3470
    余    8,排样规则:3513=3505
    余    7,排样规则:3574=1877+1690
    余   14,排样规则:3577=1947+1616
    余    8,排样规则:3972=2217+1747
    余    8,排样规则:3996=3988
    余    3,排样规则:4064=2033+2028
    余    3,排样规则:4212=2567+1642
    余    0,排样规则:4496=2759+1737
    余    2,排样规则:4541=2183+2356
    余    0,排样规则:4550=2632+1918
    余    0,排样规则:4765=2918+1847
    余    1,排样规则:4850=4849
    余    7,排样规则:4902=2742+2153
    余    7,排样规则:5869=3493+2369
    余    0,排样规则:5972=3907+2065
    余    1,排样规则:6135=3249+2885
    余    2,排样规则:6209=4262+1945
    余    1,排样规则:7807=5722+2084
    余    0,排样规则:8567=2714+3463+2390
    余    0,排样规则:8904=4830+2281+1793
    余    1,排样规则:9975=5079+2527+2368
    余    1,排样规则:10729=3032+5281+2415
    余    0,排样规则:11176=4475+4454+2247
    余    0,排样规则:11338=4678+4399+2261
    余    0,排样规则:11561=4223+4870+2468
    余    0,排样规则:11571=3867+5414+2290
    余    0,排样规则:12140=4096+2822+2182+3040
    余    0,排样规则:12613=4688+5373+2552
    余    0,排样规则:13086=5190+5581+2315
    余    2,排样规则:13423=4757+4546+4118
    余    0,排样规则:13461=5023+2890+2797+2751
    余    0,排样规则:14717=4653+3520+3756+2788
    余    0,排样规则:14836=3363+3170+5602+2701
    余    0,排样规则:15015=3739+3729+5157+2390
    余    0,排样规则:15155=3227+5523+3654+2751
    余    1,排样规则:15196=4019+4129+3852+3195
    余    2,排样规则:15330=5052+3417+3637+3222
    余    0,排样规则:15440=5312+4737+5391
    余    1,排样规则:15480=5634+4372+5473
    余    0,排样规则:15688=4639+3706+3481+3862
    余    0,排样规则:15733=2919+4031+5174+3609
    余    1,排样规则:15825=4925+5213+5686
    余    5,排样规则:16118=3296+3687+5336+3794
    余    4,排样规则:16525=5705+5090+5726
    余    0,排样规则:16676=5425+3076+4398+3777
    余    0,排样规则:16719=5783+5485+5451
    余   10,排样规则:16736=4698+3757+4271+4000
    余    2,排样规则:16764=5489+5686+5587
    余 3574,排样规则:16914=4413+4214+4713
    余 3513,排样规则:19791=5550+5564+5164
    
    方案5:
    余    0,排样规则:2234=2234
    余   37,排样规则:2676=2639
    余   12,排样规则:2777=2765
    余   38,排样规则:2964=2926
    余    1,排样规则:3062=1518+1543
    余   16,排样规则:3134=3118
    余    2,排样规则:3472=3470
    余    8,排样规则:3513=3505
    余    7,排样规则:3574=1877+1690
    余   14,排样规则:3577=1947+1616
    余    8,排样规则:3972=2217+1747
    余    8,排样规则:3996=3988
    余    3,排样规则:4064=2033+2028
    余    3,排样规则:4212=2567+1642
    余    0,排样规则:4496=2759+1737
    余    4,排样规则:4541=2290+2247
    余    0,排样规则:4550=2632+1918
    余    0,排样规则:4765=1847+2918
    余    1,排样规则:4850=4849
    余    5,排样规则:4902=2714+2183
    余    7,排样规则:5869=3493+2369
    余    0,排样规则:5972=3907+2065
    余    1,排样规则:6135=3249+2885
    余    0,排样规则:6209=2415+3794
    余    0,排样规则:7807=5451+2356
    余    3,排样规则:8567=3729+2751+2084
    余    0,排样规则:8904=4000+2751+2153
    余    1,排样规则:9975=4372+5602
    余    0,排样规则:10729=4223+4713+1793
    余    0,排样规则:11176=3687+5174+2315
    余    0,排样规则:11338=3227+5079+3032
    余    1,排样规则:11561=2919+2182+2822+3637
    余    0,排样规则:11571=2261+2281+4639+2390
    余    0,排样规则:12140=5373+4399+2368
    余    2,排样规则:12613=3481+3739+5391
    余    1,排样规则:13086=4262+3076+2552+3195
    余    2,排样规则:13423=4737+4031+4653
    余    0,排样规则:13461=4925+4830+3706
    余    0,排样规则:14717=3862+5686+2468+2701
    余    0,排样规则:14836=3363+3756+5190+2527
    余    0,排样规则:15015=5634+4019+3417+1945
    余    0,排样规则:15155=4698+3654+4413+2390
    余    0,排样规则:15196=3463+5425+3520+2788
    余    0,排样规则:15330=4678+3040+4870+2742
    余    0,排样规则:15440=5023+4398+3222+2797
    余    4,排样规则:15480=3852+2890+5564+3170
    余    6,排样规则:15688=4454+5705+5523
    余    0,排样规则:15733=4096+4271+3609+3757
    余    1,排样规则:15825=5722+5414+4688
    余    0,排样规则:16118=5485+5581+5052
    余    6,排样规则:16525=3867+3777+4757+4118
    余    3,排样规则:16676=5164+5726+5783
    余   10,排样规则:16719=5550+5473+5686
    余    7,排样规则:16736=4214+3296+5090+4129
    余 3537,排样规则:17715=5157+4475+4546
    余 3509,排样规则:19492=5281+5213+5489
    余 3533,排样规则:19768=5336+5312+5587
    
    方案6:
    余    0,排样规则:2234=2234
    余   37,排样规则:2676=2639
    余   12,排样规则:2777=2765
    余   38,排样规则:2964=2926
    余    1,排样规则:3062=1518+1543
    余   16,排样规则:3134=3118
    余    2,排样规则:3472=3470
    余    8,排样规则:3513=3505
    余    7,排样规则:3574=1877+1690
    余   14,排样规则:3577=1947+1616
    余    8,排样规则:3972=2217+1747
    余    8,排样规则:3996=3988
    余    3,排样规则:4064=2033+2028
    余    3,排样规则:4212=2567+1642
    余    0,排样规则:4496=2759+1737
    余    2,排样规则:4541=2183+2356
    余    0,排样规则:4550=2632+1918
    余    0,排样规则:4765=2918+1847
    余    1,排样规则:4850=4849
    余    6,排样规则:4902=2369+2527
    余    0,排样规则:5869=3687+2182
    余    0,排样规则:5972=3907+2065
    余    1,排样规则:6135=3249+2885
    余    0,排样规则:6209=3794+2415
    余    1,排样规则:7807=5722+2084
    余    0,排样规则:8567=3227+2552+2788
    余    1,排样规则:8904=5174+3729
    余    1,排样规则:9975=3417+3481+3076
    余    0,排样规则:10729=4688+4096+1945
    余    0,排样规则:11176=2797+5157+3222
    余    0,排样规则:11338=5485+2390+3463
    余    1,排样规则:11561=4118+5052+2390
    余    0,排样规则:11571=2290+4737+2751+1793
    余    0,排样规则:12140=3852+5587+2701
    余    0,排样规则:12613=5391+2822+2247+2153
    余    0,排样规则:13086=4454+3609+5023
    余    0,排样规则:13423=3637+5373+4413
    余    0,排样规则:13461=5213+3706+2281+2261
    余    0,排样规则:14717=2890+3654+5705+2468
    余    0,排样规则:14836=2919+4129+5473+2315
    余    1,排样规则:15015=4372+2751+5523+2368
    余    1,排样规则:15155=5489+5451+4214
    余    1,排样规则:15196=3862+4271+3195+3867
    余    0,排样规则:15330=4698+3520+4398+2714
    余    2,排样规则:15440=4031+5079+3296+3032
    余    3,排样规则:15480=4653+5634+5190
    余    1,排样规则:15688=4475+3757+4713+2742
    余    1,排样规则:15733=4870+5550+5312
    余    2,排样规则:15825=5564+4678+5581
    余    0,排样规则:16118=5602+4830+5686
    余    0,排样规则:16525=3756+5090+4639+3040
    余    2,排样规则:16676=4000+5281+4223+3170
    余    5,排样规则:16719=4019+5425+3777+3493
    余   36,排样规则:16736=3739+5336+4262+3363
    余   91,排样规则:16764=5726+5164+5783
    余 3533,排样规则:17235=4546+4399+4757
    余 3548,排样规则:19573=4925+5414+5686
    
    

     

    展开全文
  • 基于改进文化算法的一维下料问题,吴迪,张剑飞,一维优化下料问题是工程应用中普遍存在的一种组合优化问题,属于NP完备问题。针对一维下料问题,本文将混沌算法,博弈论和遗传算�
  • 数学建模----钢管下料问题使用lingo程序求解 (含源程序) 某钢管零售商从钢管厂进货,将钢管按照顾客的要求切割后出售,从钢管厂进货时得到的原料钢管都是每根长19米. (1) 现有一客户需要50根4米,20根6米,15根8米的...
  • 本文将线性规划与增强顺序法相结合,求解多线材一维下料问题。采用具有全容量特性的解法,一次生成多个排样方式,按比值法选择新排样方式。实验结果表明:对于文献中报道的一些例题,运用算法可降低线材成本;和商业一维下...
  • 研究一维单一原料下料问题,将最优化模型和EPFF算法相结合,建立了混合型模型,即先采用EPFF算法得到下料方式阵,再将其代入线性规划模型中,加上了加工时间以及最大加工能力的限制;最后确定了满足要求的实用下料...
  • 论文研究-合理下料问题数学模型的探讨.pdf, 本文研究了现行文献中合理下料问题的四种数学模型,发现其中一种模型(模型D)是一种不合适的模型,它不能保证用料最少;有两个模型(模型B和C)是等价的,可以互换;而另一模型...
  • 数学建模,一刀切问题,下料问题,数学建模,一刀切问题,下料问题
  • 基于一维算法的一维下料问题模型计算,仅供参考。不谢
  • matlab 遗传算法 一维下料问题

    热门讨论 2011-08-25 14:02:31
    matlab 遗传算法 一维下料问题 非常不错 希望对各位有用
  • 建筑下料问题的讨论与研究 1、 求建筑公司的最小玻璃材料购买量; 2、 在不考虑下料(裁剪)损耗的情况下,求窗户的下料(裁剪)方法,使其浪费最小; 3、 在下料(裁剪)损耗为3%的情况下,同时不考虑将裁坏的大...
  • 针对一维下料问题,提出了减少废料、减少下料设置时间和减少可回收余料的三目标优化模型,用改进的非支配排序进化算法求出问题的Pareto最优解集,运用逼近理想解方法从解集中选出一个满意解作为下料方案,各优化目标...
  • 利用AB分类寻找下料问题的最优解,根据所需零件的不同长度,将材料按余料利用率满足一定条件分为两类进行切割,直到切割完成。
  • 大家好,我是小鸭酱,博客地址为:http://www.cnblogs.com/xiaoyajiang !钢管下料问题2(剩余材料最少) 题目: 钢管原料每根19m 客户需求4m50根 5m10根 6m20根 8m15根 如何下料最节省?; mod...
  • 用lingo解决钢管下料问题

    千次阅读 2014-04-06 18:21:01
    钢管下料问题,如下:
  • 用lingo解决易拉罐下料问题

    千次阅读 2014-04-06 18:45:24
    易拉罐下料问题,如下: 程序如下:
  • 用改进的遗传算法求解工业应用中的一维下料问题
  • 可以用分支定界法求解出一维的下料问题。有利于解决NP问题。
  • 利用模拟退火算法求解下料问题,参见《现代优化计算方法》(第二版),本人是优化算法的初学者,欢迎批评指正。联系方式: junenggai_1982@126.com. QQ:149491882
  • 讨论了如何利用改进的模拟退火算法即单调升温的模拟退火算法求解板式家具生产中的优化下料问 题。在对问题进行数学描述的基础上,给出了...实例表明该算法优化速度快,效率高,能有效解决大规模矩形件 优化下料问题
  • 讨论了如何利用改进的模拟退火算法即单调升温的模拟退火算法求解板式家具生产中的优化下料问题。在对问题进行数学描述的基础上,给出了算法求解的关键步骤和方法;讨论了单调升温模拟退火算法中如何跳出局部最优解,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,136
精华内容 1,254
关键字:

下料问题