用sets和data解决钢管切割问题(根数最少)
客户除了要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解决钢管切割问题(根数最少)相关推荐
- 算法学习笔记----用动态规划解决钢管切割问题
(说明:由于CSDN的博客中不能添加下标等特殊符号,所以部分内容使用截图的形式) 通过对问题进行高度抽象,现在我们的问题,就是要递归地求解r n 的最大值,下面采用的是一种自顶向下的递归方法: int ...
- 【算法导论】动态规划之“钢管切割”问题
动态规划,其实跟分治法有些相似,基本思想都是将复杂的问题分成数个简单的子问题,然后再去解决.它们的区别在于,分治法关注的子问题不相互"重叠",而动态规划关注的子问题,多是相互&qu ...
- Day2补充:钢管切割问题
转自:https://blog.csdn.net/cyp331203/article/details/42806159 Day2补充:钢管切割问题 一. 问题背景: 某公司生产长钢管,然后一般,会将钢 ...
- DP之钢管切割,最长回文字符串,最长公共子串
在做LeetCode第3题的时候,用到了DP,但是自己对DP还是不了解,所以翻开算法导论,开始看动态规划喽,学好动态规划,走遍天下都不怕. 钢管切割 对于一根长n米的钢管,每个长度的价格不一样,对于长 ...
- 动态规划——钢管切割最小代价问题
一.问题描述: 设有一根长度为L的钢条,在钢条上标有n个位置点(p1,p2,......,pn).现在需要按钢条上标注的位置将钢条切割为n+1段,每次切割的代价为所切的钢条长度,试求在所有的切割方案中 ...
- questasim中点击 add wave 后,显示 no data 解决方法
questasim中点击 add wave 后,显示 no data 解决方法 昨天在questasim中编译sv 文件,顺利出波形.没有关闭软件,打算今天接着研究.却发现没有波形了... 重新点击a ...
- 钢管切割 2018-2-5
钢管切割原始问题: 某公司生产长钢管,然后一般,会将钢条切断,变成不同长度,然后去售卖.其中有个问题是,不同长度的钢管的售价是不一样的,但是它们并不是完全按照比例来,比如2米的钢管售价要比3米的钢管售 ...
- “ error: the following arguments are required: --model, --data“解决办法
"error: the following arguments are required: --model, --data"解决办法 问题描述 解决办法 问题描述 pycharm运 ...
- 钢管下料问题(以钢管根数最少为标准)
钢管下料问题(以钢管根数最少为标准),则程序如下: model: !以钢管根数最少,为标准; min=x1+x2+x3+x4+x5+x6+x7; 4*x1+3*x2+2*x3+x4+x5>=50 ...
最新文章
- 线性表 ----链表的C语言实现
- golang sqlite数据库 rows.Close()造成 错误database is locked
- oracle的all函数,oracle函数 MIN([distinct|all]x)
- 【Win32汇编】字符串逆序
- Swift之深入解析如何实现Promise
- c语言 乱码转化为16进制_面向小白的C语言科普教程(一)文件和扩展名、编码和十六进制...
- SAP Analytics Cloud里如何基于一个已有的model创建Story
- spark sql读取hive底层_[大数据]spark sql读写Hive数据不一致
- node.js——sequelize-auto模块生成数据库models及使用
- 问题解决 | maven包冲突了怎么办,这款插件你不容错过
- 算法分析与设计(NPC问题)
- Nginx的软件架构
- AttributeError: 'module' object has no attribute 'urlopen报错解决办法
- LOJ-10105(欧拉回路模板,套圈法,递归)
- TIA PORTAL博途中进行网络组态时,拓扑视图要不要组态,有什么作用?
- fastlane实现Android自动化打包
- ValueError: Only images with 2 spatial dimensions are supported. If using with color/multichannel im
- ubuntu 16.04 安装nvidia驱动 下载nvidia官方驱动
- Java实现信用卡校验
- 数据中心双活该如何构建
热门文章
- 如何为新员工找到团队“归属感”
- mysql存储过程 2000工资加200_花200万留学才拿2000工资?瞎扯!海归平均工资真相是这样的~...
- 第三方物流学习(四)
- 不负热爱砥砺前行 ,谱写ULTRADX(奥创)时代新篇章
- 山回路转时时见,世事如棋局局新
- 更稳定的手势识别方法-基于手部骨架与关键点检测
- 7-130 圆形体体积计算器(有注释)
- WORD制表位完成杂志目录视频教程
- java写病毒_java编写小病毒程序
- DB2 SQLSTATE:428C9,不能将ROWID列指定为INSERT或UPDATE的目标列。