客户除了要50根4m长、20根6m长、15根8m长,还需要10根5m长的钢管,应该如何下料最节省?

解:这里以总根数最少为标准。

用lingo12解决如下:

model:
!钢管下料问题,以钢管根数最少为目标;
sets:
 !定义基本集合Needs,及其属性length、num;
 Needs/1..4/:length,num;
 Cuts/1..3/:x;
 !定义派生集合Pattern,及其属性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(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钢管;

用sets和data解决钢管切割问题(根数最少)相关推荐

  1. 算法学习笔记----用动态规划解决钢管切割问题

    (说明:由于CSDN的博客中不能添加下标等特殊符号,所以部分内容使用截图的形式) 通过对问题进行高度抽象,现在我们的问题,就是要递归地求解r n 的最大值,下面采用的是一种自顶向下的递归方法: int ...

  2. 【算法导论】动态规划之“钢管切割”问题

    动态规划,其实跟分治法有些相似,基本思想都是将复杂的问题分成数个简单的子问题,然后再去解决.它们的区别在于,分治法关注的子问题不相互"重叠",而动态规划关注的子问题,多是相互&qu ...

  3. Day2补充:钢管切割问题

    转自:https://blog.csdn.net/cyp331203/article/details/42806159 Day2补充:钢管切割问题 一. 问题背景: 某公司生产长钢管,然后一般,会将钢 ...

  4. DP之钢管切割,最长回文字符串,最长公共子串

    在做LeetCode第3题的时候,用到了DP,但是自己对DP还是不了解,所以翻开算法导论,开始看动态规划喽,学好动态规划,走遍天下都不怕. 钢管切割 对于一根长n米的钢管,每个长度的价格不一样,对于长 ...

  5. 动态规划——钢管切割最小代价问题

    一.问题描述: 设有一根长度为L的钢条,在钢条上标有n个位置点(p1,p2,......,pn).现在需要按钢条上标注的位置将钢条切割为n+1段,每次切割的代价为所切的钢条长度,试求在所有的切割方案中 ...

  6. questasim中点击 add wave 后,显示 no data 解决方法

    questasim中点击 add wave 后,显示 no data 解决方法 昨天在questasim中编译sv 文件,顺利出波形.没有关闭软件,打算今天接着研究.却发现没有波形了... 重新点击a ...

  7. 钢管切割 2018-2-5

    钢管切割原始问题: 某公司生产长钢管,然后一般,会将钢条切断,变成不同长度,然后去售卖.其中有个问题是,不同长度的钢管的售价是不一样的,但是它们并不是完全按照比例来,比如2米的钢管售价要比3米的钢管售 ...

  8. “ error: the following arguments are required: --model, --data“解决办法

    "error: the following arguments are required: --model, --data"解决办法 问题描述 解决办法 问题描述 pycharm运 ...

  9. 钢管下料问题(以钢管根数最少为标准)

    钢管下料问题(以钢管根数最少为标准),则程序如下: model: !以钢管根数最少,为标准; min=x1+x2+x3+x4+x5+x6+x7; 4*x1+3*x2+2*x3+x4+x5>=50 ...

最新文章

  1. 线性表 ----链表的C语言实现
  2. golang sqlite数据库 rows.Close()造成 错误database is locked
  3. oracle的all函数,oracle函数 MIN([distinct|all]x)
  4. 【Win32汇编】字符串逆序
  5. Swift之深入解析如何实现Promise
  6. c语言 乱码转化为16进制_面向小白的C语言科普教程(一)文件和扩展名、编码和十六进制...
  7. SAP Analytics Cloud里如何基于一个已有的model创建Story
  8. spark sql读取hive底层_[大数据]spark sql读写Hive数据不一致
  9. node.js——sequelize-auto模块生成数据库models及使用
  10. 问题解决 | maven包冲突了怎么办,这款插件你不容错过
  11. 算法分析与设计(NPC问题)
  12. Nginx的软件架构
  13. AttributeError: 'module' object has no attribute 'urlopen报错解决办法
  14. LOJ-10105(欧拉回路模板,套圈法,递归)
  15. TIA PORTAL博途中进行网络组态时,拓扑视图要不要组态,有什么作用?
  16. fastlane实现Android自动化打包
  17. ValueError: Only images with 2 spatial dimensions are supported. If using with color/multichannel im
  18. ubuntu 16.04 安装nvidia驱动 下载nvidia官方驱动
  19. Java实现信用卡校验
  20. 数据中心双活该如何构建

热门文章

  1. 如何为新员工找到团队“归属感”
  2. mysql存储过程 2000工资加200_花200万留学才拿2000工资?瞎扯!海归平均工资真相是这样的~...
  3. 第三方物流学习(四)
  4. 不负热爱砥砺前行 ,谱写ULTRADX(奥创)时代新篇章
  5. 山回路转时时见,世事如棋局局新
  6. 更稳定的手势识别方法-基于手部骨架与关键点检测
  7. 7-130 圆形体体积计算器(有注释)
  8. WORD制表位完成杂志目录视频教程
  9. java写病毒_java编写小病毒程序
  10. DB2 SQLSTATE:428C9,不能将ROWID列指定为INSERT或UPDATE的目标列。