构建网上购书最优联盟.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
构建网上购书最优联盟

构建网上购书最优联盟 崔超 200220632035 Southwest University cuichao@swnu.edu.cn Abstract 此篇文章重在构建囊括最多变量因素的网上购书联盟。计算最优则变成了不断测试不断更改变量的统计型问题。而联盟要求的最低构建要素是: 联盟中心到站点的运输费用应该是随订购数目的增加而增加,而物品的单价应随订购的数目的增加而减少 联盟内部存在运输费用,他与联盟中心的位置,联盟中成员个数,以及每个成员离联盟中心的距离相关 联盟中每个人的购买能力和需求不同 加盟时必须满足加盟双方在加盟后收益不会减少 联盟形成后重新计算最优的联盟中心 Introduction 虽然很难,就像要我们找出所有影响我们情绪的因素(哦天哪,恐怕哲学家似的思考也总有纰漏),但,首先,我们还是来试图分析到底都有哪些变量影响着我们弱小联盟的嬗变“心理”。:) 让我们从小的易实现改变的细节开始吧!就好象人们都总是欺软怕硬,捡软柿子捏似的(动物最大的特点)。从最低构建要素起步! 第一,每本书每单位距离长度的运费。在我的设计中,我给了它一个不伦不类的(但我觉得还能自解释的)变量名称:perKmFreight(每公里运费)。相应的设置函数名为:SetperKmFreight。我们的目标就是在最后构建联盟时,这个变量的值由我们动态输入决定。 注意,这里已经有一个不知不觉的假设,即,运费和书本的数量、距离的长度成线性关系。 第二,价格曲线的设定。更多从现实意义角度看,折扣的数学描述似乎更像些分段函数。比如买上多少本,那么你可获得一个更好的折扣。且看一下代码片段: if ( GetBook().GetPurchaser().GetRequirement() = 10 ) return 1.00; if ( GetBook().GetPurchaser().GetRequirement() = 30 ) return 0.90; if ( GetBook().GetPurchaser().GetRequirement() = 30 ) return 0.85; if ( GetBook().GetPurchaser().GetRequirement() = 100 ) return 0.80; if ( GetBook().GetPurchaser().GetRequirement() = 130 ) return 0.75; if ( GetBook().GetPurchaser().GetRequirement() = 200 ) return 0.70; return 0.65; 在我的考虑中,书的折扣曲线是因书的类型不同而变化的,这样设定新的价格曲线也更易于扩展!比如,我可以设定计算机类图书的价格曲线,也可以设定历史类图书的价格曲线。以后哪天高兴了,我还可以让BooType再生几个娃娃。见下图: 熟悉GoF的人会发现,这是一个Strategy(策略)模式。这样,在承受了多几个类的代价之后,我们获得的是丢弃了关于定制价格曲线的硬编码、可扩展性更好、代码自描述。 第三,每个人至多愿意买多少本书。这是一个匪夷所思的问题,但它的提出完全是为了更好的在测试中,控制每个购买者需求数量的随机数的范围,以摆脱硬编码。请容忍我让你觉得古里古怪的这个问题。 在我的设计中,关于这个因素,我给予的变量是:maxper(希望还能自描述),相应的设置函数为:Setmaxper。 第四,书店可动态选择,即书店的位置可以变化。我的设计中,有一个BookstoreManifest类,它是一个单件模式。内含了所有书店的信息。这个清单,可动态添加新的书店信息。如下图所示: 第五,地图的大小(MapBound)也应当动态在测试中决定。在我的设计中,运用了GoF的Singleton(单件)模式,来达到了一个Java中全局变量的效果,使起在其他类中想C/C++里的全局变量一样工作。见下图: 第六,书籍的价格,作为Book的一个data member,生成Book对象的职责应交由Bookstore完成。Bookstore会有一个销售书籍的清单(d_sellbook),购买者动态选择一本清单中的书籍,如此,书籍价格、折扣都是在测试中动态决定。啊哈,我又多摸清了这个小家伙的两个臭脾气:) 第七,构架。这是我用了一个Composite(聚合)模式,见下页图示。从OO的角度上考虑,我把单个购买者(SinglePerson)和联盟(Alliance)都看作is a(是一个)购买者

文档评论(0)

woai118doc + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档