求思路,怎样运费最少的问题

Diza1986 2018-03-02 09:30:33
(算法版块根本没人,所以来大牛多的地方求教,谢谢)

举个简单例子,有A,B,C,D四个运输案件

现在可以知道
单独运输费用:
A : 500
B : 400
C : 300
D : 200

合并运输费用: (比单独运还要贵可以很容易从备选中去除掉)
A+B+C : 1101 (比单独各自运输节省99)
A+B : 840 (比单独各自运输节省60)
B+C : 620 (比单独各自运输节省80)
C+D : 360 (比单独各自运输节省40)

最佳的运输方案应该是A+B和C+D,
求教程序的解决思路
...全文
899 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
极客诗人 2018-03-23
  • 打赏
  • 举报
回复
引用 18 楼 Diza1986 的回复:
结合业务加了一些分组等优化逻辑,终于OK了。 核心还是递归全组合,谢谢大家了!
刚好我也通过递归方法将以前系统的价格体系的算法优化了一篇
Diza1986 2018-03-22
  • 打赏
  • 举报
回复
结合业务加了一些分组等优化逻辑,终于OK了。 核心还是递归全组合,谢谢大家了!
Diza1986 2018-03-13
  • 打赏
  • 举报
回复
引用 16 楼 weixin_38925245 的回复:
a 对应单独A的价格 AB代表AB的价格 但是 这个数组里面ABCD 均只出现一次 然后获取这个数组的价钱。
是这意思,要找最省钱的组合,数据量不算小,现在递归全组合求最优解性能崩溃,要重新总结算法了,脑子已经不行了。。。
极客诗人 2018-03-13
  • 打赏
  • 举报
回复
a 对应单独A的价格 AB代表AB的价格 但是 这个数组里面ABCD 均只出现一次 然后获取这个数组的价钱。
极客诗人 2018-03-13
  • 打赏
  • 举报
回复
[a,b,c,d] [ab,c,d] [abc,d] [a,bc,d] 可以这样理解吗?
Diza1986 2018-03-13
  • 打赏
  • 举报
回复
递归,在全组合里找最优解,代码是实现了,数据量稍微大一点结果都出不来。。。哭晕了
Diza1986 2018-03-04
  • 打赏
  • 举报
回复
引用 12 楼 From_TaiWan 的回复:
你得给出每种组合的报价,如b+d,b+c+d等
第一步就是算出可以组合的全部报价, 我想的是可以直接把那些还不如单独送省钱的组合(肯定不是最优)排除掉,可以提高一些后面的效率
秋的红果实 2018-03-03
  • 打赏
  • 举报
回复
你得给出每种组合的报价,如b+d,b+c+d等
Diza1986 2018-03-03
  • 打赏
  • 举报
回复
看来也只能是全遍历了, 考虑用递归枚举求最优解看看
xuzuning 2018-03-03
  • 打赏
  • 举报
回复
枚举: (A+B+C)+ D = 1101 + 200 = 1301 (A+B) + C + D = 840 + 300 + 200 = 1340 A + (B+C) + D = 500 + 620 + 200 = 1320 A + B + (C+D) = 500 + 400 + 460 = 1360 (A+B) +(C+D) = 840 + 460 = 1300 排序得成本最低的方案: (A+B) +(C+D) = 840 + 460 = 1300 不需要什么数学理论和技巧,不需要为简单的事情消耗脑细胞
永远的追梦人 2018-03-03
  • 打赏
  • 举报
回复
直接用暴力法解决
Diza1986 2018-03-02
  • 打赏
  • 举报
回复
引用 7 楼 xomix 的回复:
你条件写的不全面,我隐约觉得你除了ABCD还有一个出发点这个点吗??
实际是只有一个出发点,现在出发点和到达点以及距离都不在考虑范围内,要求就是费用最低。 我感觉这个问题也是比较适用最短路,出发点和ABCD四个点,运费就可以理解是路程,然后求最短路, 只是像A+B+C这样的合并运输的费用怎么反应到三个点的相互距离上呢?还想不明白
  • 打赏
  • 举报
回复
引用 6 楼 Diza1986 的回复:
解释一下,A,B,C,D是4批货物送往4个地点,单独配送的费用是 A : 500 B : 400 C : 300 D : 200 通过价格表计算可以知道下面几种合并运送的方式比单独送费用低, A+B+C : 1101 (比单独各自运输节省99) A+B : 840 (比单独各自运输节省60) B+C : 620 (比单独各自运输节省80) C+D : 460 (比单独各自运输节省40) ×××这里上面写的360,算错了××× 单独看,A+B+C节省最多,如果作为最优方案保留的话,结果就是A+B+C和D单独,费用1101+200 = 1301 但是整体看,如果采用A+B和C+D费用是840+460= 1300,其实是最优的, 平时很少接触算法,这个问题的模型考虑不清楚,最短路?背包?线性规划? 真心有点懵,还请给个思路
你条件写的不全面,我隐约觉得你除了ABCD还有一个出发点这个点吗??
Diza1986 2018-03-02
  • 打赏
  • 举报
回复
解释一下,A,B,C,D是4批货物送往4个地点,单独配送的费用是 A : 500 B : 400 C : 300 D : 200 通过价格表计算可以知道下面几种合并运送的方式比单独送费用低, A+B+C : 1101 (比单独各自运输节省99) A+B : 840 (比单独各自运输节省60) B+C : 620 (比单独各自运输节省80) C+D : 460 (比单独各自运输节省40) ×××这里上面写的360,算错了××× 单独看,A+B+C节省最多,如果作为最优方案保留的话,结果就是A+B+C和D单独,费用1101+200 = 1301 但是整体看,如果采用A+B和C+D费用是840+460= 1300,其实是最优的, 平时很少接触算法,这个问题的模型考虑不清楚,最短路?背包?线性规划? 真心有点懵,还请给个思路
  • 打赏
  • 举报
回复
如果你使用 c# 开发的话,那么可以选择一个开源的专业的数学计算软件包来直接调用其各种规划(例如0、1线性规划)方法。 但是关键在于你首先懂得背后的数学和统计学知识,而跟计算机没有直接关系。
  • 打赏
  • 举报
回复
从程序遍历角度讲一下这个怎么解。 首先你要达到的是a、b、c、d四个点都到达,然后根据价目表生成每个点都到达的方案:   A+B+C :  1101  (比单独各自运输节省99)路1   A+B :       840    (比单独各自运输节省60)路2   B+C :       620    (比单独各自运输节省80)路3   C+D :       360    (比单独各自运输节省40)路4 路1+路4 路2+路3+路4 然后计算这些路径要话费的价格,最后求出最便宜的价格。
  • 打赏
  • 举报
回复
找本规划论(数学或者统计专业的课本)的教材学学。
  • 打赏
  • 举报
回复
你到底是最短路径算法还是打包算法,你连问题都没描述清楚
正怒月神 2018-03-02
  • 打赏
  • 举报
回复
我不懂。 最佳的运输方案应该是A+B和C+D,这是怎么来的?

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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