CCF基于买方意向的货物撮合交易--Rank6开源

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学习交流群
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值