【数学建模】2017年B题 您所在的位置:网站首页 拍照挣钱的平台下载什么软件 【数学建模】2017年B题

【数学建模】2017年B题

2024-07-17 17:06| 来源: 网络整理| 查看: 265

“拍照赚钱”的任务定价

\quad\quad “拍照赚钱”是移动互联网下的一种自助式服务模式。用户下载APP,注册成为APP的会员,然后从APP上领取需要拍照的任务(比如上超市去检查某种商品的上架情况),赚取APP对任务所标定的酬金。这种基于移动互联网的自助式劳务众包平台,为企业提供各种商业检查和信息搜集,相比传统的市场调查方式可以大大节省调查成本,而且有效地保证了调查数据真实性,缩短了调查的周期。因此APP成为该平台运行的核心,而APP中的任务定价又是其核心要素。如果定价不合理,有的任务就会无人问津,而导致商品检查的失败。 \quad\quad 附件一是一个已结束项目的任务数据,包含了每个任务的位置、定价和完成情况(“1”表示完成,“0”表示未完成);附件二是会员信息数据,包含了会员的位置、信誉值、参考其信誉给出的任务开始预订时间和预订限额,原则上会员信誉越高,越优先开始挑选任务,其配额也就越大(任务分配时实际上是根据预订限额所占比例进行配发);附件三是一个新的检查项目任务数据,只有任务的位置信息。请完成下面的问题:

研究附件一中项目的任务定价规律,分析任务未完成的原因。为附件一中的项目设计新的任务定价方案,并和原方案进行比较。实际情况下,多个任务可能因为位置比较集中,导致用户会争相选择,一种考虑是将这些任务联合在一起打包发布。在这种考虑下,如何修改前面的定价模型,对最终的任务完成情况又有什么影响?对附件三中的新项目给出你的任务定价方案,并评价该方案的实施效果。

注:附件请前往数学建模官网下载:http://www.mcm.edu.cn/upload_cn/node/437/IqAO5Qqi8f23d8738a07a0604b8629ce9bb061ad.rar

解题初想法&一些问题

\quad\quad 针对问题一,这实际上是让你要挖掘任务属性(位置、定价)、会员属性(位置、信誉值)与任务是否完成内在联系。所以,如何分析找到主要矛盾? \quad\quad 针对问题二,这其实是一个博弈论的问题。要求用更低的定价换取更高的任务完成率。如何重新给定价格呢?如何判定重新定价后任务是否完成呢? \quad\quad 针对问题三,感觉也可以沿用问题二的模型,将打包后的任务看做是一个任务,这样就可以代入模型二求解。但是,要附加打包策略:各个任务什么情况下会被打包,打包后任务属性该如何设定? \quad\quad 针对问题四,这个可以用问题二的模型和问题三的模型联合求解。可以得到一个定价总花费和任务完成率。可对比原任务集(附件一)说明效果。

寻求答案 B104

\quad\quad 针对问题一,他们为每个任务点都赋予了一些属性:任务偏僻程度、该点任务密度、该点会员密度,并提供了这些属性的计算公式。并且他们认为定价由三部分组成:基础定价(65)、赏金(由任务属性决定)、随机因素定价(天气等原因,实际解题中被忽略)。之后,他们针对所有任务点的价格和任务属性做了一个线性回归,结果非常Amazing啊!在未完成的任务当中,有89%的部分实际定价小于通过回归计算得来的定价,因此得到结论:任务未完成的主要原因是定价偏低。

\quad\quad 这个第二问、第三问我都没看明白, M s M_s Ms​是什么? M L ( V L ) M_L(V_L) ML​(VL​)和 M L M_L ML​是说的一个量吗? V H V_H VH​是全部任务的拟合结果还是已完成任务的拟合结果?没看明白。不知道写的些啥。放弃了。

B248

\quad\quad 针对问题一,他们先针对数据进行可视化操作,初步分析了会员、任务及任务完成情况的大致分布(从图中挖掘信息)。之后,他们对数据进行了异常值滤除的操作,并且,对任务区域进行了网格化处理(将原来任务区域分成了50*50个小方格)。然后求出每个小方格的指标(网格用户数量,任务数量、平均用户完成能力、到中心点的距离)。针对任务完成和任务未完成两种情况下分别对指标-价格进行灰色关联度分析,得到两组关联度系数,通过分析两组关联度系数差值来衡量影响(差值越大说明对应指标对于任务完成与否的影响越大)。

\quad\quad 针对问题二,他们通过定义一个吸引度矩阵,表示任务对于用户的吸引度,并且用户会首先选择吸引度最高的任务。由于不同用户的预定的时间段不同,所有针对用户做一个分时段处理。对于任务而言,若被多个用户选择,则信誉度最高的那个人将执行任务。针对每个任务均设置一个阈值,他们利用附件一的数据,若任务完成则设置阈值为周围用户吸引度的最小值。若任务未完成,则设置该任务的阈值为周围用户吸引度的最大值。之后重新设置定价,重新计算吸引度矩阵,此时,每个任务都对应一个用户,若任务-用户吸引度大于阈值,则判定任务完成,若小于阈值,则判定任务未完成。 Q:如何重新给定价格呢? A:附件一中任务未完成的适当调高价格,任务已完成的适当调低价格。 Q:如何判定重新定价后任务是否完成呢? A:通过利用附件一已有数据针对每个任务设置阈值,若任务-用户吸引度大于阈值,判定任务完成,反之判定任务不完成。

\quad\quad 针对问题三,他们仅仅针对距离对任务进行了分类,并且设置类别最大任务数,利用多级聚类(第一级将所有任务分成150类,再针对超过最大任务数的类别进行第二级分类),思路与解题初想法的思路几乎一致。他们对于分类之后的任务组位置属性为聚类中心点,价格属性分均值、最大值、最小值三种情况。再代入到问题二中的模型进行求解。最后与问题二中未打包的情况进行一个对比分析。 Q:各个任务什么情况下会被打包? A:任务分布较为密集时,并且类别任务总数是有限制的。 Q:打包后任务属性该如何设定? A:位置为打包后距离中心,价格属性分三种情况分别求解:平均价格、最大价格、最小价格,因此最后的时候也是得到了三个结果。

\quad\quad 针对问题四,他们非常新颖也很大胆,采用了BP神经网络的方法进行了问题的求解。首先,他们将任务分成了四个区域,之后类似问题三对任务进行打包处理,计算每一项任务(组)到其所属区域中心点的距离。BP神经网络的输入层为:任务经纬度、到所属区域中心点距离;输出层为:任务定价、任务完成情况。并且以问题三的数据作为训练数据,然后将问题四的数据代入到神经网络中得到输出,即为问题结果!

\quad\quad 这篇论文写的很通透易懂,也被数模官网作为了2017年B的范文。我觉得也很不错,到时候比赛的时候我们也得向这篇文章作者们学习,一定得把论文写明白。

B264

\quad\quad 针对问题一,他们认为会员密集程度、任务集中程度、任务难易程度、不同经济地区会员的期望值是影响定价的主要因素,针对前三个论文中分别提出了计算方法,并且给定了价格随三个因素的计算公式。之后针对不同原因进行分析,并且划分了不同区域。

\quad\quad 针对问题二,他们首先对问题一的模型进行了完善,将地区经济发展情况和会员领取限额考虑在内,构建了新的定价模型,不过他们是直接构建公式,定义也比较简单。然后,他们定义了用户满意度,并且基于用户满意度构造了某一任务是否完成的可能性指标,当这个可能性指标大于阈值时,存在会员可以完成这个任务,否则不被完成。最后一步即为任务与用户的匹配。在这里明确了目标函数:最大的任务完成量,明确了约束条件,并用公式加以描述。最后采用最大流的算法求解模型。 Q:如何重新给定价格呢? A:通过自定义了一个定价模型。实际在编程求解的时候,对定价模型有了修正,选取任务完成率最高的定价方案。 Q:如何判定重新定价后任务是否完成呢? A:构造了一个可能性指标衡量任务是否完成。

\quad\quad 针对问题三,他们提出了三条打包原则,并且根据三条打包原则提出了相应的公式,重新定义打包后的价格,用户到打包后任务组的距离,以及打包后任务完成的可能性指标。利用问题二中的模型进行求解。 Q:各个任务什么情况下会被打包? A:根据三条原则:距离相近、未完成的任务应尽量与自己距离相近的已完成的任务打包发布、距离相近的价格差比较大的任务应尽量考虑打包发布。并且规定了最大打包数量为5。 Q:打包后任务属性该如何设定? A:打包后价格为平均价格,打包后用户到打包集合的距离为到各个任务点的平均距离。

\quad\quad 针对问题四,他们舍弃了任务难易程度这个指标,模型同问题三的模型。进行求解,最终得到了每个任务定价以及完成情况。

小彩蛋——利用pyecharts绘制任务、用户的地理分布

提示:运行前请将附件一和附件二表格放置于代码的同级目录下。

from pyecharts import options as opts from pyecharts.charts import Geo from pyecharts.faker import Faker import pandas as pd import numpy as np import random taskx = [] tasky = [] names = [] file = "附件一:已结束项目任务数据.xls" df = pd.read_excel(file) for line in df: if line == "任务号码": for name in df[line]: names.append(name) if line == "任务gps 纬度" or line == "任务gps经度" or line == "任务标价": tmp = [] for d in df[line]: tmp.append(d) taskx.append(tmp) if line == "任务执行情况": for d in df[line]: tasky.append(d) taskx = np.array(taskx).T tasky = np.array(tasky) pos = [] file = "附件二:会员信息数据.xlsx" df = pd.read_excel(file) for line in df: if line == "会员编号": for name in df[line]: names.append(name) if line == "会员位置(GPS)": for s in df[line]: pos.append([float(s.split()[1]),float(s.split()[0])]) json_pos = {} completed = [] uncompleted = [] members = [] len_x = len(taskx) for i in range(len_x): json_pos[names[i]] = [taskx[i,1],taskx[i,0]] if (tasky[i]==1): completed.append([names[i],1]) else: uncompleted.append([names[i],0]) for i in range(len(pos)): json_pos[names[len_x+i]] = pos[i] members.append([names[len_x+i],1]) import json json_str = json.dumps(json_pos) with open('pos.json', 'w') as json_file: json_file.write(json_str) c = ( Geo(init_opts=opts.InitOpts(width="1800px",height="900px")) .add_schema(maptype="广东") .add_coordinate_json("pos.json") # 颜色部分可能有点bug .add("已完成任务", completed,symbol_size = 5,color = "#00BCD4") .add("未完成任务", uncompleted,symbol_size = 5,color = "red") .add("用户",members,symbol_size=5,color="green") .set_series_opts(label_opts=opts.LabelOpts(is_show=False)) .set_global_opts( # visualmap_opts=opts.VisualMapOpts(), title_opts=opts.TitleOpts(title="") ) .render("DistributionMap.html") )

利用浏览器打开DistributionMap.html,调整大小截图如下。 法



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有