• Shapley值的一个应用


         看书有这样一个问题,某互联网公司今天需要加班,需要编写一个500行的程序代码,产品经理找了三个程序员来完成。按照完成量发奖金:1号普通程序员独立能写100行,2号大神程序员独立能写125行,3号美女程序员能写50行。但如果程序员两两合作,会产生不同的编码效率:1号和2号合作能写270行,2号与3号合作能写350行,1号与3号合作能写375行。当然,三名程序员共同合作能完成500行。若共有1000元项目奖金,该如何给这三名程序员分配呢?

       下面,我们尝试用Shapley值经行计算。首先,计算可能的联盟数量。显然,三个人的联盟形成方法一共有6种:

      (1)1号邀请2号加入组成S联盟,3号加入S联盟;

      (2)1号邀请3号加入组成S联盟,2号加入S联盟;

      (3)2号邀请1号加入组成S联盟,3号加入S联盟;

      (4)2号邀请3号加入组成S联盟,1号加入S联盟;

      (5)3号邀请1号加入组成S联盟,2号加入S联盟;

      (6)3号邀请2号加入组成S联盟,1号加入S联盟;

        按照Shapley值的计算过程,下一步需要计算每位程序员的边际贡献,

      

      

      1号普通程序员的Shapley值为:(100 + 100 + 145 + 150 + 325 + 150 )/ 6 = 970 / 6

      2号大神程序员的Shapley值为:(170 + 125 + 125 + 125 + 125 + 300 )  / 6  =  970 / 6

      3号美女程序员的Shapley值为:(230 + 275 + 230 + 225 + 50  +  50 )/  6 =  1060 /  6

      三人的Shapley值的总和正好等于500。   所以根据Shapley值,1号普通程序员应该获得奖金为:1000 x 0.3233 = 323.3元,2号大神程序员应该获得奖金同样为323.3元,3号美女程序员获得奖金为353.3元。

  • 相关阅读:
    .NET Core 3.0之创建基于Consul的Configuration扩展组件
    .NET Core 3.0之深入源码理解Configuration(三)
    .NET Core 3.0之深入源码理解Configuration(二)
    .NET Core 3.0之深入源码理解Configuration(一)
    python __getattr__ & __getattribute__ 学习
    nginx+uwsgi+flask+supervisor 项目部署
    Read a large file with python
    MySQL 基础回顾(2020/06/14修改)
    Linux运维: Rsync同步数据(ubuntu16.04+windows10)
    斐波那契数列的5种python实现写法
  • 原文地址:https://www.cnblogs.com/tianqianlan/p/10402628.html
Copyright © 2020-2023  润新知