概述
CCF基于买方意向的货物撮合交易--Rank6开源
公众号: ChallengeHub
引言
本次ccf购买赛题方案分享,由【吃饭第一名】队伍开源了他们第六方案,团队成员由「同济大学 starry」、「浙江大学 吃饭第一名」、「浙江大学 carol_zheng」以及在职算法工程师「wang-zhq 」组成。
作为最优化场景的题目,在目前的算法竞赛场景中还是很少见到的,非常值得我们去学习。
之前在我们的公众号发布过starry的高分的baseline开源,里面详细描述了赛题背景和赛题方案,如有对赛题还不够了解的,可以关注我们公众号,查看历史文章,或者点击下面链接了解一下:
baseline开源????:
https://mp.weixin.qq.com/s/9AhT0iEs-99a-cHkVstI
赛题链接????:
https://www.datafountain.cn/competitions/487
下面就来一起看下他们最优化的解决方案吧!
1:尽量满足货物的第一意向:
1.1:
根据buyer购买意向的不同可以将Buyer分为不同的组。第一步就是对这些组进行优先级排序,决定先满足哪些第一意向的buyer。主要的方法是根据该第一意向需求的数量与供给的数量的比值,
也就是该第一意向货物的稀缺性。根据稀缺性和该意向下Buyer需要购买的数量进行排序。稀缺性越高越靠前,购买数量越高越靠前。
1.2:
输入意向和货物品种,将满足该意向的seller货物删选出来,如果总数量不为0,则开始对buyer进行优先级排序。对上一步获得的buyer批次进行排序,由于第一意向的货物之间有入库时间约束。排序的时候必须要满足这个规则,但是为了让意向得分更好的货物先进行货物购买,因此有以下几个规则:
- 如果第一意向供给的货物大于需求的货物,那么所有的货物都可以满足第一意向,这时候不需要考虑入库约束,直接根据货物的意向得分进行倒序
- 如果供给不足,那么先对货物根据入库时间倒序,把需要满足第一意向的货物挑选出来,再根据意向得分进行倒序
1.3:
这一步是为每个buyer提供货物,提供货物的原则是在不增加仓库的前提下,最大的满足客户的需求(如果增加一个仓库能满足第二意向可以考虑增加仓库)。最后将货物可以选择的货物根据仓库的数量进行倒序。计算是否有多个仓库可以满足货物的供货需求,如果是的话,根据货物的品种不同,分为两种情况:
- 如果是SR,那么不管直接根据仓库数量和该仓库的下货物满足buyer意向进行排序。仓库数量多的,满足意向分高的排在前排。
- 如果是CF,需要选择仓库,寻求在哪个仓库可以的带最大意向得分,如果意向得分一样,那么仓库数量多的排在前排。
对货物进行排序后,只需要一个一个分配货物,并且计算意向匹配。
2:
经过上一步的流程,所有buyer都满足了第一意向,没有满足的代表无法满足第一意向了。接下里开始第二意向。第二意向的操作与第一意向基本相同。其中两点不同之处在于:
在1.2中,不需要根据输入意向对seller进行筛选,还要就是因为第二意向没有入库约束,因此,不用考虑1.2.2,直接根据buyer的意向得分进行倒序。
3:
经过两步之后,剩下的货物不能满足任何意向了。采用简单的贪心算法求解就可以了,保证仓库的最大得分。
完整代码,关注公众号ChallengeHub,后台回复「购买意向」获取。
欢迎扫码关注ChallengeHub公众号
欢迎加入ChallengeHub学习交流群
最后
以上就是拼搏马里奥为你收集整理的CCF基于买方意向的货物撮合交易--Rank6开源CCF基于买方意向的货物撮合交易--Rank6开源的全部内容,希望文章能够帮你解决CCF基于买方意向的货物撮合交易--Rank6开源CCF基于买方意向的货物撮合交易--Rank6开源所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复