求解一个动态资源分配问题的算法

Yuanhuaishu001 2019-04-13 12:04:20
问题描述:有m个车间,来了n个不同的设备,已知每个设备分别在不同车间产生的利润值,当利润值为0时,该设备不能分配到相应的车间里,求在最大分配原则的基础上的利润最大值。注意:第一重要的时尽量少的未分配设备的车间数。在线等 请热心回复
...全文
1843 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
636f6c696e 2019-04-19
  • 打赏
  • 举报
回复
我就知道你的题目表达就是错的,第一优先是配对然后才是利润,你看你的问题表达是什么鬼东西
引用 16 楼 Yuanhuaishu001 的回复:
那我在描述一下,3个车间,4个设备,利润表((0,4,0,6),(2,5,7,8),(0,0,0,7)),求最大配对数基础上的最大利润
  • 打赏
  • 举报
回复
引用 17 楼 Yuanhuaishu001的回复:
[quote=引用 13 楼 qq_30270773的回复:][quote=引用 12 楼 Yuanhuaishu001的回复:][quote=引用 9 楼 weixin_42039994的回复:]算法很简单,没挑战性,就差列出代码,你自己不会写吗?
我觉得很难,因为要求在配对出最大数的基础上求最大利润。也就是说比如2号设备在1车间产生50利润,3号设备在1车间产生40利润,2号在2车间产生40利润。因为2号车间只能放2号设备,那就要舍弃2号放入1车间[/quote] 作业车间调度问题,你的问题在那本书上是一个例子,你去找这个书看下算法介绍就可以自己写了[/quote] 请推荐书名,能把相应的书给介绍一下呢[/quote] 《作业车间调度理论与算法》,华中科技大学出版社出版的,这个的确是NP难度问题,国内一些学者也给出了比较好的精确解算法,不过还是建议按元启发式算法算吧,难度会低很多。
zilaishuichina 2019-04-18
  • 打赏
  • 举报
回复
这不是背包问题么, 搜一下背包问题就好了, 都是现成的算法
wallesyoyo 2019-04-18
  • 打赏
  • 举报
回复
接上面。

假如现在有m个车间,n台设备。

可以构建一个n*m行,m+n列的矩阵。
每一行代表将某一个设备放到某一个车间。
前m列代表每一行放法在各个车间产生的利润,后n列代表每一行放法所使用的设备情况。

以上面楼主举的例子为例。4个设备,3个车间,利润如下表,Di代表设备,Rj代表车间。



构建矩阵如下:



每一行DiRj代表将第i台设备放到第j号车间。

现在问题就变成了,选择这个矩阵的一个行集合,依次要满足下面3个条件。

1. 后4列每一列都只有一个1。(每个设备只能使用一次)(精确覆盖问题)
2. 前3列每列的和,不为0的列最少。(最大车间覆盖)(重复覆盖问题)
3. 前3列每列的和,加起来值最大。(最大利润)

其中一种选择的行集合为:



这种情况也就是要求的最优解。

其实就是后4列求精确覆盖,前3列求重复覆盖,用舞蹈链算法去求解可以实现快速剪枝,枚举出每种情况,从未求出最优解。


wallesyoyo 2019-04-18
  • 打赏
  • 举报
回复

我觉得(可能不是),这个问题是NP困难的额,只有通过穷举法去做额,怎样设计好的算法去最高效地解决才是主要。

个人感觉可以用精确覆盖+重复覆盖来求得所有最大覆盖车间的情况(用舞蹈链算法),然后计算这些所有情况的最大利润。
  • 打赏
  • 举报
回复
最大分配原则是什么意思,你还有什么限定条件没说。第一重要的时尽量少的未分配设备的车间,这句话什么意思
wdonghai 2019-04-17
  • 打赏
  • 举报
回复
题目是道好题,只是楼主不正经。
因为2号车间只能放2号设备,那就要舍弃2号放入1车间,这段话真不知道该怎么理解。
而且楼主的题目前因后果都弄不清楚,只是想到什么就加上什么,别人真没法理解。
我感觉这是一道线性规划类的题目,出题的话应该会用个表格列出相关信息的,而且
一般的程序题都会交代输入是什么内容,然后输出是什么内容的例子数据的。
636f6c696e 2019-04-17
  • 打赏
  • 举报
回复
语文能力太差,题目都表达不清楚,哎
Yuanhuaishu001 2019-04-17
  • 打赏
  • 举报
回复
引用 13 楼 qq_30270773的回复:
[quote=引用 12 楼 Yuanhuaishu001的回复:][quote=引用 9 楼 weixin_42039994的回复:]算法很简单,没挑战性,就差列出代码,你自己不会写吗?
我觉得很难,因为要求在配对出最大数的基础上求最大利润。也就是说比如2号设备在1车间产生50利润,3号设备在1车间产生40利润,2号在2车间产生40利润。因为2号车间只能放2号设备,那就要舍弃2号放入1车间[/quote] 作业车间调度问题,你的问题在那本书上是一个例子,你去找这个书看下算法介绍就可以自己写了[/quote] 请推荐书名,能把相应的书给介绍一下呢
Yuanhuaishu001 2019-04-17
  • 打赏
  • 举报
回复
那我在描述一下,3个车间,4个设备,利润表((0,4,0,6),(2,5,7,8),(0,0,0,7)),求最大配对数基础上的最大利润
  • 打赏
  • 举报
回复
引用 12 楼 Yuanhuaishu001的回复:
[quote=引用 9 楼 weixin_42039994的回复:]算法很简单,没挑战性,就差列出代码,你自己不会写吗?
我觉得很难,因为要求在配对出最大数的基础上求最大利润。也就是说比如2号设备在1车间产生50利润,3号设备在1车间产生40利润,2号在2车间产生40利润。因为2号车间只能放2号设备,那就要舍弃2号放入1车间[/quote] 作业车间调度问题,你的问题在那本书上是一个例子,你去找这个书看下算法介绍就可以自己写了
Yuanhuaishu001 2019-04-16
  • 打赏
  • 举报
回复
引用 9 楼 weixin_42039994的回复:
算法很简单,没挑战性,就差列出代码,你自己不会写吗?
我觉得很难,因为要求在配对出最大数的基础上求最大利润。也就是说比如2号设备在1车间产生50利润,3号设备在1车间产生40利润,2号在2车间产生40利润。因为2号车间只能放2号设备,那就要舍弃2号放入1车间
毒药台 2019-04-15
  • 打赏
  • 举报
回复
算法很简单,没挑战性,就差列出代码,你自己不会写吗?
  • 打赏
  • 举报
回复
作业车间问题,你看看工业工程的相关书籍吧
636f6c696e 2019-04-15
  • 打赏
  • 举报
回复
题目都表达不清楚,让别人怎么回答呢?自己好好读读你的题目吧,好多地方都不通顺。
A 安平 2019-04-15
  • 打赏
  • 举报
回复
为什么不能分配问题
sichuanwww 2019-04-15
  • 打赏
  • 举报
回复
用vector或list自己去算吧
Yuanhuaishu001 2019-04-15
  • 打赏
  • 举报
回复
是我100分太少还是问题太难?继续请教
Yuanhuaishu001 2019-04-14
  • 打赏
  • 举报
回复
可以放多个设备。条件第一要求最大配对数,然后有多余设备可以任意放到车间,寻求最大利益
Yuanhuaishu001 2019-04-13
  • 打赏
  • 举报
回复
沙发 自己坐
加载更多回复(1)

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧