现在面临一个问题。

有三个人,A、B、C:

有三个物品,1、2、3:

需要将这三个物体分给三个人,每人一个。每个人对三个物品的喜好不同,要怎样分配才能让三个人的总满意度最高?


分配问题  广泛存在于生产和生活中。例如为一组工作人员分配任务,或者为作战小组分配进攻目标等等。在分配过程中,精明的分配者一定会实现某个目的,例如让每个工作人员充分发挥专长,最高质量地完成任务;或者为每个作战小组分配相距最近的进攻目标,最快速地结束战斗。怎样分配能实现这些目的,就是分配问题的解。


拍卖算法是用来解决这类问题的经典算法,灵感来自于经济活动中的拍卖过程,是一种能够在有限步计算中获得最佳分配的算法。

回到我们开始时的例子。A先生擅长球类运动,滑板也略有涉及,但是对在海浪里穿梭这项运动并不感冒。因此A先生最想要网球拍,有点想要滑板,完全不想要冲浪板。根据三个物品对于A先生的重要性,我们为这三项物品打分为4、2、0。在这个例子中,我们打分并没有复杂的规则:某人想要某件物品的愿望越迫切,打分越高。同样,其余两位也表达了自己的喜好。于是我们得到了下面这张图。

图中线上的数字表示某人对某物品的打分,也就是喜好。从物品的角度而言,线上的数字代表如果某一个物体被分配给了某个人,将会给这个人带来多少好处(即,价值 Value,文献中常用 表示 j 物品分配给第 i 个人的价值)。

为了实现总体满意度最高的分配,三位先生坐在一起竞争物品的归属。按照商业原则,当我们和竞争对手想买同一件物品时,我们必须付比对手更多的钱(即,价格 Price,文献中常用 表示 j 物品的价格),才能将物品据为己有。于是三位先生开始对物品报价。

在首次出价之前,三个物品的起拍价都是0。

A先生首先出价。对于A先生而言,目前三个物品的价格都是0。如果A先生选择购买1物品,那么花费0元购得4点的价值,A先生这笔交易的收益(即,净利润 Profit) 为 


重要公式1: 收益计算公式                                       


A先生购买1、2、3三个物品的收益分别为4、2、0。算法为每个人赋予了自利性,即总是选择收益最高的物品,这也是算法最终得到最优解的重要保证。基于自利性,A先生选择了1物品,并对1物品报价,提高了它的价格。价格提高的幅度在之间,即每次报价最少比原来提高,最多比原来提高(增幅范围的意义和的详细计算将在下文中阐述,本例中选取)。


重要公式2:报价计算公式                        


A先生将物品1的价格提高到,局面变成了下图。

B先生开始报价。他购买1、2、3三个物品的收益分别是  -1.3、3、1。由于A先生的提价,1物品的价格已经高于1物品能够提供给B先生的价值,因此B先生不会再考虑1物品。B先生选择了收益最高的2物品,并提升了它的价格至,如下图所示。

C先生开始报价。他购买1、2、3三个物品的收益分别是 0.7、0.7、2。根据自利性,C先生选择3物品,并修改3物品的价格为,如下图所示。

到此步为止,所有人都得到了分配,算法终止。分配结果中,总体满意度(喜好值的和)为,是在所有分配方案中总体满意度最高的方案。


算法停止条件:当每个人都获得分配 或者 每个人购买所有物品的最大收益都不大于0。


还有一个疑问,我们应该如何控制报价的增长?

如果我们不限制报价增长幅度的下限,那么当两个人对同一物品展开竞价时,价格提升的会很慢,甚至完全没有提升,竞价将会永无止境的持续下去;

如果我们不限制报价增长幅度的上限,那么一次报价就可能使物品的价格超过价值,导致无法参与后续的拍卖。

因此我们限制报价增幅的上下限。


重要推论1:对于nn物品的分配,当价值 (即图中横线上标注的数字)为整数时,若

则算法结束时获得最优解。


在上例中,有3个人参与分配,,因此我们选取 


重要公式3:如果除了当前要提价的 j 物品之外,没有其它能够提供正收益的物品,则

如果除了当前要提价的 j 物品之外,还有一个物品 k ,购买它产生的收益仅次于物品 j,则

                                                                                  


例如在第一步A先生提价的过程中,最高收益来自于1物品,收益为4。物品2也提供大于零的收益,为2,仅次于1物品提供的收益。由公式3可以得到

由于提价过程中给出的是一个范围,在设计算法时,一般采用上限值作为提价的幅度,因为提价的幅度越高,算法结束的越快。在许可的范围内取最大幅度,即可保证最优性,又可以加快算法速度。

扩展阅读:

拍卖算法的开山之作:

Dimitri P. Bertsekas, A Distributed Algorithm for the Assignment Problem, 1979

论文链接:http://web.mit.edu/dimitrib/www/Orig_Auction.pdf

最优分配问题——拍卖算法相关推荐

  1. 拍卖算法:Astar算法:Dijkstra;BFS;DFS

    BFS:优先搜索深度小的节点,呈现波状的搜索方式,找到的第一条路经就是在最短路径. 实现简单 可以找到最优解 耗时 遍历的点多 DFS: 优先搜索深度大的节点,可以快速的得到一条路径,但找到的往往不是 ...

  2. 武器目标分配问题研究进展: 模型、算法与应用

    源自:系统公正与电子技术 作者:李梦杰  常雪凝  石建迈  陈超  黄金才  刘忠 摘 要 武器目标分配问题是指挥控制与任务规划领域的关键难点之一, 也是军事运筹领域的基础研究课题.经过多年研究, ...

  3. Windows Azure 解决方案系列:组合拍卖供应商以云服务快速拓展,并节省成本

    公告:本博客为微软云计算中文博客的镜像博客.部分文章因为博客兼容性问题,会影响阅读体验.如遇此情况,请访问原博客. Adslot 组合拍卖供应商以云服务快速拓展,并节省成本 Tradeslot 专攻于 ...

  4. java获取数组穷举_请教一下两个数组各取一个元素生成新的数组的穷举算法设计?...

    题目描述 比如第一组数是:A B C D E 第二组是:1 2 3 4 两组数不一定是对称的,第一组数量比第二组可能多也可能少也可能相同,输出结果举例如下:A1 B2 C3 D4 (只组合不排序),要 ...

  5. 最小费用流算法不完全指南-2017华为软件精英挑战赛

    1.前言 整个比赛历时70多天,是一场持久战,期间看了不少资料,实现了一些算法,现总结如下. 初赛的思路是启发式+费用流,启发式实现了遗传算法.模拟退火,费用流实现了连续最短路(spfa),zkw/p ...

  6. 多无人机任务分配与路径规划算法学习(一)

    本文是阅读"多无人机任务分配与路径规划算法研究_丁家如"文献的学习记录. 记录的第一部分是有关任务分配的知识,各种模型的建立就放到下次来写. 一.多无人机任务分配的本质 目前阅读的 ...

  7. 数学建模算法与应用学习day1——线性规划问题整数规划问题

    以下内容来自司守奎编写的数学建模算法与应用学习,主要是记录自己的学习历程,转载还请标明出处! 一.线性规划 知识点 1.1线性规划问题 1.1.2线性规划解的概念 f = [-2 ; -3 ; 5]; ...

  8. 空中群体机器人研究综述

    文章目录 Abstract I. INTRODUCTION II. MODELS, STABILITY AND CONTROLLABILITY OF SWARMS A. Types of Multia ...

  9. Clipper: 开源的基于图论框架的鲁棒点云数据关联方法(ICRA2021)

    <CLIPPER: A Graph-Theoretic Framework for Robust Data Association>(ICRA 2021 ) 基于图论的点云数据关联方法,通 ...

最新文章

  1. linux安装mysql phpmyadmin_ubuntu mysql远程连接+phpmyadmin安装
  2. jwt token 太长_理解 JWT 鉴权的应用场景及使用建议
  3. echarts 没有icon导致工具栏无法显示_Icon失误导致OMG输掉比赛,曾经的单杀王也拉垮?天秀操作难再现...
  4. 美国人民:机器人好棒棒,花钱买一个?1000块不能再高了
  5. Oracle系统表查询方法
  6. http协议-响应和请求
  7. NAT和代理服务器的调研
  8. Trapcode Particular 4 for Mac(AE三维粒子插件)附序列号破解版
  9. 动软代码生成器的具体使用方法步骤
  10. windows装oracle数据库,在 Windows 上安装 Oracle 数据库 11g
  11. golang学习(一)—— 简介
  12. 职场打拼小妙招,建议你们收藏使用!
  13. 专业Java报表工具Stimulsoft Reports.Java常见问题解答
  14. FPN:feature pyramid networks for object detection
  15. 套索回归 岭回归_使用kydavra套索选择器进行回归特征选择
  16. 无线智能风扇软件端APP设计
  17. * IO原理剖析-装饰器设计模式(1)
  18. java抓取数据包查询12306余票信息
  19. 计算机收藏夹位于哪个磁盘,Win7收藏夹在哪个盘?查看收藏夹网址保存在哪里的方法...
  20. Https双向认证Android客户端配置

热门文章

  1. 2017面向对象程序设计(Java)第六周学习总结
  2. 初高中学生基于计算机模拟的材料分子性质研究科研课题介绍
  3. 塔菲尔曲线斜率的大小_塔菲尔曲线斜率是怎么获得的
  4. 农产品电子商务行业研究及十四五规划分析报告
  5. AndroidStudio系统广播Broadcast电话监听
  6. python爬虫 requests+lxml爬取前程无忧网之模拟浏览器登录
  7. mysql 除数为0显示100,保留两位小数,显示百分号的相关操作
  8. Jhipster技术栈 - UAA原理分析
  9. 阿里最新股权曝光:软银持股23.9% 蔡崇信持股1.4%
  10. g-sync显示器到底能提升多少游戏性能?