【数学建模lingo学习】lingo解决整数规划问题4:钢管切割问题

1导语

lingo是一款用于解决规划问题的软件,可以求解线性规划,非线性规划等规划问题。如果有不了解lingo的小伙伴可以观看以下视频学习:

Lingo(1):基础篇——基本界面与解方程_哔哩哔哩_bilibili

2题目

某单位需要加工制作100套钢架,每套钢架长为2.9m,2.1m和1m的圆钢各一根。已知原料长为6.9m,问如何切割原材料可以使得使用的原材料最少。

3分析

解 假设从原料中分别切割2.9米,2.1m,1m的圆钢各一根,则需要100个原料,此时料头(将原料切割后剩下的部分)长度为0.9,以这个方案为最坏的方案。使用matlab枚举出所有可行的方案后,再根据每个方案列出目标函数和约束条件。

用matlab列出的所有方法如下:

方案1方案2方案3方案4方案5方案6方案7
1m数量0112446
2.1m数量3012010
2.9m数量0210100

由题意知需要使得使用的原材料最少则设按照第i个方案切割的原料数量为xi(i=1,2,3..7),则有目标函数:

 

由题意知,需要生产100套圆钢,依据上面三种切割方法得约束条件为:

4代码求解

matlab穷举所有方案:

clear,clc %清空命令行窗口和工作区
for i =0:6 %从原材料中切割出1米的钢管数量
    for j=0:3 %从从原材料中切割出2.1米的钢管数量
        for k=0:2 %从从原材料中切割出2.9米的钢管数量
            %从原料上切割2.9m,2.1m,1m的钢管各一根时需要的原料长度为6m,且用6.9m的原料切割2.9m,                        
            2.1m,1m钢管总长度不能大于6.9m
            if i*1+j*2.1+k*2.9>=6 & i*1+j*2.1+k*2.9<=6.9
            %列出各个方案的矩阵
            disp([i,j,k])
            end
        end
    end
end

lingo求解规划问题

model:

!创建矩阵;
sets:
factory/1..7/:x;
endsets

!列出目标函数和表达式;
min=@sum(factory(i):x(i));
x(1)+2*x(2)+x(7)>=100;
3*x(3)+2*x(4)+x(5)+x(7)>=100;
4*x(1)+x(2)+2*x(4)+4*x(5)+6*x(6)+x(7)>=100;
!规定整数时需要用循环挨个固定x为整数;
@for(factory(i):@gin(x));
end

5计算结果

需要钢管数量为:91根

非常感谢各位小伙伴看到这里,如果觉得有用给我点个赞吧,听说点赞的人一夜暴富~

  • 15
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Lingo是一款强大的规划问题求解软件,可以帮助解决各种复杂的规划问题,包括投料问题。投料问题是指在生产过程中,如何合理安排原料的投放,使得能够在满足生产需求的前提下,最大程度地降低成本和资源的浪费。 使用Lingo解决投料问题,首先需要建立一个数学模型,将问题转化为数学表达式。然后,根据生产需求、原料约束、成本等因素,设置相应的目标函数和约束条件。通过Lingo的求解功能,可以自动计算得出最优的投料方案。 在建立数学模型时,需要考虑到生产目标和约束条件的具体情况。比如,如果要最大化产量,可以将目标函数设置为产量的总和;如果要最小化成本,可以将目标函数设置为成本的总和。同时,需要考虑到原料的供应限制、质量要求等约束条件,以确保求解结果符合实际情况。 除了建立数学模型,Lingo还提供了一系列优化算法和求解方法,可以根据问题的规模和复杂度选择最合适的求解方式。例如,对于较小规模的问题,可以使用线性规划方法求解;对于较大规模的问题,可以使用混合整数规划或启发式算法求解。 总之,Lingo是一款功能强大的求解软件,可以有效地解决投料问题。通过建立合理的数学模型,设置适当的目标函数和约束条件,并选择合适的求解方法,可以得到最优的投料方案,提高生产效率,降低成本和资源的浪费。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值