文档库 最新最全的文档下载
当前位置:文档库 › 2005年数学建模B题(含代码)

2005年数学建模B题(含代码)

2005年数学建模B题(含代码)
2005年数学建模B题(含代码)

2013高教社杯全国大学生数学建模竞赛

承诺书

我们仔细阅读了中国大学生数学建模竞赛的竞赛规则.

我们完全明白,在竞赛开始后参赛队员不能以任何方式(包括电话、电子邮件、网上咨询等)与队外的任何人(包括指导教师)研究、讨论与赛题有关的问题。

我们知道,抄袭别人的成果是违反竞赛规则的, 如果引用别人的成果或其他公开的资料(包括网上查到的资料),必须按照规定的参考文献的表述方式在正文引用处和参考文献中明确列出。

我们郑重承诺,严格遵守竞赛规则,以保证竞赛的公正、公平性。如有违反竞赛规则的行为,我们将受到严肃处理。

我们参赛选择的题号是(从A/B/C/D中选择一项填写): B

我们的参赛报名号为(如果赛区设置报名号的话):

所属学校(请填写完整的全名):华南师范大学增城学院

参赛队员(打印并签名) :1.

2.

3.

指导教师或指导教师组负责人(打印并签名):

日期:年月日

赛区评阅编号(由赛区组委会评阅前进行编号):

2013高教社杯全国大学生数学建模竞赛

编号专用页

赛区评阅编号(由赛区组委会评阅前进行编号):

赛区评阅记录(可供赛区评阅时使用):

全国统一编号(由赛区组委会送交全国前编号):

全国评阅编号(由全国组委会评阅前进行编号):

DVD 在线租赁

摘要

问题(三):题目需要我们回答购买各种DVD 的数量来使95%的会员能看到他DVD 想看到的DVD ,并且要怎么分配才能使满意度达到最大;每种建立以总的购买数最小、会员满意度最大为双目标的规划模型。通过确定在一个月内每张DVD 的在每个会员中手中的使用率;然后通过c 语言程序编程来确定每种DVD 的购买量;建立0-1规划模型;通过LINGO 软件使满意度达到最大,来最终确定DVD 的分配;

一级,二级目标,将多目标规划转化为单目标;同时将第j 种DVD 的购买量

j y 的整数约束去掉,求解出最小购买数为178.125张。将最小购买数作为约束条件,优化满意度后,得到最大满意度为95%;然后对此时DVD 的购买量j y 向上取整,得到总购买数为186张。当购买数为186张时,会员满意度达到97%。

三、模型假设

1、租赁周期为一个月,每月租两次的会员可以在月中再租赁一次;

2、同一种DVD 每人只能租赁一次;

3、DVD 在租赁过程中无损坏;

4、会员每月至少交一次订单;

5、会员只有把前一次所借的DVD 寄回,才可以继续下一次租赁

6、月底DVD 全部收回,继续下个周期的租赁;

7、随着时间的推移,该网站的会员们的流动情况不会出现大变动。

四、符号说明

符号 意义

Q

DVD 的张数

ij a

会员i 对j DVD 订单的数量 ij c

会员i 对某种j DVD 偏爱度

b第j种DVD总中张数

j

B 会员对网站的满意度

i会员的标号

j DVD的种类

k网站对DVD购买的量

一、问题的重述

随着信息时代的到来,网络成为人们生活中越来越不可或缺的元素之一。许多网站利用其强大的资源和知名度,面向其会员群提供日益专业化和便捷化的服务。例如,音像制品的在线租赁就是一种可行的服务。这项服务充分发挥了网络的诸多优势,包括传播范围广泛、直达核心消费群、强烈的互动性、感官性强、成本相对低廉等,为顾客提供更为周到的服务。

考虑如下的在线DVD租赁问题。顾客缴纳一定数量的月费成为网站会员,可以订购DVD租赁服务。会员对哪些DVD有兴趣,只要在线提交订单,网站就会通过快递的方式尽可能满足要求。会员提交的订单包括多张基于其偏爱程度排序的DVD。网站会根据手头现有的DVD数量和会员的订单进行分发。每个会员每个月租赁次数不得超过2次,每次获得3张DVD。会员看完3张DVD之后,只需要将DVD放进网站提供的信封里寄回(邮费由网站承担),就可以继续下次租赁。考虑回答下面问题:

(1)网站准备购买一些新的DVD,通过问卷调查1000个会员,得到了愿意观看这些DVD的人数(表1给出了其中5种DVD的数据)。此外,历史数据显示,60%的会员每月租赁DVD两次,而另外的40%只租一次。假设网站现有10万个会员,对表1中的每种DVD来说,应该至少准备多少张,才能保证希望看到该DVD的会员中至少50%在一个月内能够看到该DVD?如果要求保证在三个月内至少95%的会员能够看到该DVD呢?

(2)表2中列出了网站手上100种DVD的现有张数和当前需要处理的1000位会员的在线订单,如何对这些DVD进行分配,才能使会员获得最大的满意度?请具体列出前30位会员(即C0001~C0030)分别获得哪些DVD。

(3)继续考虑表2,并假设表2中DVD的现有数量全部为0。如果你是网站经营管理人员,如何决定每种DVD的购买量,以及如何对这些DVD进行分配,才能使一个月内95%的会员得到他想看的DVD,并且满意度最大?

(4)如果你是网站经营管理人员,你觉得DVD 的需求预测、购买和分配中还有哪些重要问题值得研究?请明确提出你的问题,并尝试建立相应的数学模型。 表1 对1000个会员调查的部分结果 DVD 名称 DVD1 DVD2 DVD3 DVD4 DVD5 愿意观看的人数 200 100 50 25 10

表2 现有DVD 张数和当前需要处理的会员的在线订单(表格格式示例) DVD 编号 D001 D002 D003 D004 … DVD 现有数量 10 40 15 20 … 会员在线订单 C0001 6 0 0 0 … C0002 0 0 0 0 … C0003 0 0 0 3 … C0004 0 0 0 0 … … … … … … …

注:D001~D100表示100种DVD, C0001~C1000表示1000个会员, 会员的在线订单用数字1,2,…表示,数字越小表示会员的偏爱程度越高,数字0表示对应的DVD 当前不在会员的在线订单中。

二、问题的分析

问题分析:题中列出了网站手上20种DVD 的现有张数和当前需要处理的100位会员的在线订单,要得到使会员获得最大满意度的DVD 分配方案,这可以通过建立线形规划模型来实现。由于每个会员对不同DVD 的偏爱程度不同,且题中所给的列表中会员的在线订单中数字越小表示会员的偏爱程度越高。由于每个会员可以按偏爱程度在20种DVD (可以参考)

五、模型的建立与求解

(一):问题一

由历史数据,60%的会员每月租赁DVD 两次,而另外40%的人只租一次。由假设会员如果在当月归还了DVD ,一般会同时有第2次的租赁要求,因此认为有60%的会员在一个月有两次租赁需求,其他40%的会员为一次。近似认为会员的需求基本上能满足,从而认为有60%的会员会在一个月内归还DVD ,另外40%则不能。在一个月内归还的DVD 还可以满足另一个会员,又新购DVD 一般会较受欢迎,因此认为该DVD 一直在周转中,没有出现该DVD 空闲情况。故可以合理地认为一张新DVD 在一个月内以60%的概率满足两个会员,40%的概率满足一个会员,从而一张DVD 的相对一个人来说使用率为 7.0%402

%60=+;

需要准备的j DVD 张数为j Q ;由调查结果1000个会员中愿意观看DVD 的购买量为i x 。

模型一、

保证希望看到该DVD 的会员中至少50%在一个月内能够看到该DVD 需要准备的DVD 的张数:

7.0%501000

100000???=j j x Q

保证希望看到该DVD 的会员中至少95%在三个月内能够看到该DVD 需要准备的DVD 的张数:

37.0%951000

100000÷???=j j x Q

模型的求解:

当2001=x 时 保证希望看到该DVD 的会员中至少50%在一个月内能够看到该

DVD 需要准备的DVD 的张数

70007.0%502001000

1000001=???=Q

保证希望看到该DVD 的会员中至少95%在三个月内能够看到该DVD 需要准备的DVD 的张数:

443437.0%952001000

1000001=÷???=Q

同理可得各种DVD 需要准备的张数,计算得下表1: 表1:各种DVD 需要准备的张数

为了验证模型一的准确性:我们建立了模型二 模型二

我们将每月租凭DVD 两次的会员平均分成两部分,一部分是在月初借DVD ,月中还DVD ;第二部分是在月中借DVD ,月末还DVD ;这样就将第一部分月初借的DVD 在月中的时候再借给第二部分;这样就能使需要准备的DVD 数达到最小。

保证希望看到该DVD 的会员中至少50%在一个月内能够看到该DVD 需要准备的DVD 的张数:

DVD 名称

DVD 1 DVD 2 DVD 3 DVD 4 DVD 5 为50%时DVD 购买量

7000 3500 1750 875 350

为95%时DVD 购买量

4434 2217 1109 555 222

%50%)401000

100000

2%

601000

100000(??+

??=j j j x x Q

保证希望看到该DVD 的会员中至少95%在三个月内能够看到该DVD 需要准备的DVD 的张数:

3

%

95%)4010001000002%

601000100000

(??+??=

j j j x x Q 模型求解:

保证希望看到该DVD 的会员中至少50%在一个月内能够看到该DVD 需要准备的DVD 的张数:

7000%50%)402001000

100000

2%

602001000100000

(=??+??=j Q

保证希望看到该DVD 的会员中至少95%在三个月内能够看到该DVD 需要准备的DVD 的张数:

44343

%

95%)6020010001000002%

602001000100000

(1=??+??=Q

同理可得各种DVD 需要准备的张数,计算得下表2: 表2:各种DVD 需要准备的张数

(二)、问题二

会员i 对某种DVD 偏爱度ij c 的量化:会员对DVD 偏爱度ij c 是随着订单数字

ij a ij (a 0)>时的增加而减少,其中会员对网站的满意度与满足会员的偏爱度是挂钩的;因此我们可用一非增函数来度量;从心理学的角度来看:随着ij a 的增加,相邻的两个订单数字之间的偏爱度的差会越来越小,所以我们定义了;

??

???==0

1ij ij ij c a c 00=≠ij ij a a

不同会员在对同一种DVD 偏爱指数相同时,我们在分配DVD 时优先考虑编号在前的会员。要确定把那张DVD 租给哪个会员,才能使满意度达到最大,因此我

DVD 名称

DVD 1 DVD 2 DVD 3 DVD 4 DVD 5 为50%时DVD 购买量

7000 3500

1750

875

350

为95%时DVD 购买量

4434 2217 1109 555 222

们引入ij x 表示把第j 种DVD 是否租给第i 个会员;从问题我们可以看出这是一个如何分配的问题,我们不妨把其中现有DVD 的张数看成现有判断条件为需要完成的任务,把每一为会员看成完成这些任务的人选,其中他们对各种DVD 的偏爱度就代表他们完成相对应的任务的能力;我们就要使他们对各种任务的完成能力达到最大;

ij

i i j j ij x

c B ∑∑=====

10001

100

1

max

约束条件所有的会员分配到j 种DVD 的数量之和不能超过现有的第j 种DVD 的张数

j i i ij

b x

<=∑==1000

1

=j (1、2...100;ij x 为0-1变量)

由于网站每次对每个会员DVD 的分配要么0张要么3张所以

i j j u 3100

=∑

== (i=1、2、...1000;ij u 为0-1变量)

对问题(2)建立0—1规划模型。 模型三: 目标函数;

ij

i i j j ij x

c B ∑∑=====

10001

100

1

max

约束条件:??????

?????=<=∑∑====3

10001000

1j j ij

j i i ij x b x (i u 、ij x 均为0-1变量;i=1、2....1000;j=1、2....100);

模型求解: 用LINGO 数学软件实现对此题0-1规划模型的求解;执行的代码

见附录一;可以获得的最大满意度为1634.712其中前30位会员(即C0001~C0030)获得DVD 情况如下表所示

前30名会员获得DVD 的情况

会员编号

DVD 编号 C0001 DVD 8

DVD 41

DVD 98

C0002 DVD 6 DVD 44 DVD 62 C0003

DVD 32

DVD 50

DVD 80

C0004DVD7DVD18DVD41 C0005DVD66DVD68DVD11 C0006DVD19DVD53DVD66 C0007DVD26DVD66DVD81 C0008DVD31DVD35DVD71 C0009DVD53DVD78DVD100 C0010DVD41DVD55DVD85 C0011DVD59DVD63DVD66 C0012DVD31DVD2DVD41 C0013DVD21DVD78DVD96 C0014DVD52DVD23DVD 89 C0015DVD13DVD85DVD52 C0016DVD84DVD97DVD10 C0017DVD67DVD47DVD51 C0018DVD41DVD60DVD78 C0019DVD84DVD86DVD66 C0020DVD45DVD89DVD61 C0021DVD53DVD45DVD50 C0022DVD57DVD55DVD38 C0023DVD95DVD29DVD81 C0024DVD76DVD41DVD37 C0025DVD9DVD69DVD94 C0026DVD22DVD68DVD95 C0027DVD58DVD78DVD80 C0028DVD8DVD34DVD37 C0029DVD55DVD30DVD26 C0030DVD62DVD37DVD98

(三):问题三

问题三是问题一和问题二的结合,要求我们在确保95%的会员能得到他想看的DVD 的前提下使会员对网站的满意度达到最大;在这里我们需要解决的问题 如何使采购的DVD 总数量最少;2、如何每种DVD 的采购量,才能使客户的满意度达到最大;因此我们求出需要准备DVD 总数的上下限,假定网站在一个月内分配给会员一次DVD (三张他想要看的DVD )即认为会员得到他想看的

DVD 。由于在一个月内一张DVD 使用率为0.7设购买第j 种DVD 的数量为j b ,

相当于能够满足网站在一个月内需求为j 种DVD 的会员数

7

.0j b 。每一种DVD 都

满足95%的会员的观看,这样既能满足题目要求,又能使满足度达到最大;所以需要购买j 种DVD 的数量j b 有如下表达式:

上限:每月租二次的人两次会员还回来的DVD 全部不能重复利用,则得出可以借出的DVD 总数的上限为

45606%9510006.03%9510004.0=???+???

下限:每月租二次的人两次会员还回来的DVD 全部能重复利用,则得出可以借出的DVD 总数的下限为

28503%9510006.03%9510004.0=???+??? 利用模型一的方法进行求解:

目标函数: ∑==?=1000

1

%

957.0i i ij

j x

b

(ij x 为0-1变量,即当ij a 小于6大于时0,ij x 就为1;否则就为0;j=1、2....100)

约束条件: 4560

2850

100

1

<==<∑==j j j

b

(ij x 为0-1规划;当ij a =0时ij x =0,ij x =1,j=1、2....100)

建立0-1规划模型

目标函数: ij i i j j ij x c B ∑∑=====100011001max 约束条件:?????

?

?????=<=∑∑====i

j j ij j i i ij u

x b x 310001000

1

(i u 为0、1、2变量,ij x 为0-1变量;i=1、2....1000;j=1、2....100);

模型求解:

在通过c语言进行编程求解中过程中,在数据的输入方面存在很大困难,所以我们先把excel里们的数据复制记事本然后复制到word,通过查找、替换我们把空格替换成逗号,然后就把数据复制带0.6

+

+

vc里面,这样数据的处理就得到了解决;然后通过c语言和LINGO进行编程可以求出各种DVD的购买量,执行的程序见附录二与附录三;

表2:DVD的购买量

DVD 编号DVD

1

DVD

2

DVD

3

DVD

4

DVD

5

DVD

6

DVD

7

DVD

8

DVD

9

DVD

10

购买

43 67 48 76 39 54 56 58 69 49

DVD 编号DVD

11

DVD

12

DVD

13

DVD

14

DVD

15

DVD

16

DVD

17

DVD

18

DVD

19

DVD

20

购买

51 55 51 63 51 75 52 45 51 67

DVD 编号DVD

21

DVD

22

DVD

23

DVD

24

DVD

25

DVD

26

DVD

27

DVD

28

DVD

29

DVD

30

购买

68 49 65 41 50 59 52 39 50 71

DVD 编号DVD

31

DVD

32

DVD

33

DVD

34

DVD

35

DVD

36

DVD

37

DVD

38

DVD

39

DVD

40

购买

47 68 60 62 68 61 43 59 58 52

DVD 编号DVD

41

DVD

42

DVD

43

DVD

44

DVD

45

DVD

46

DVD

47

DVD

48

DVD

49

DVD

50

购买

88 66 51 65 64 52 57 50 54 64

DVD 编号DVD

51

DVD

52

DVD

53

DVD

54

DVD

55

DVD

56

DVD

57

DVD

58

DVD

59

DVD

60

购买

71 52 57 45 57 59 57 46 59 58

DVD 编号 DVD 61 DVD 62 DVD 63 DVD 64 DVD 65 DVD 66 DVD 67 DVD 68 DVD 69 DVD 70

购买量

47

60 55 60 48 60 65 61 61 66

DVD 编号

DVD 71

DVD 72 DVD 73 DVD 74 DVD 75 DVD 76 DVD 77 DVD 78 DVD 79 DVD 80

购买量

64 66 47 59 46 39 39 57 56 51

DVD 编号

DVD 81 DVD 82 DVD 83 DVD 84 DVD 85 DVD 86 DVD 87 DVD 88 DVD 89 DVD 90

购买量

59

33 45 35 63 44 66 42 43 55

DVD 编号

DVD 91

DVD 92 DVD 93 DVD 94 DVD 95 DVD 96 DVD 97 DVD 98 DVD 99 DVD 100

购买量

73 49 43 45 79 47 67 62 39 66

(四):问题四

我觉得DVD 的需求预测、购买和分配中还要考虑收入和费用;

假设:会员的入会费为y 元,网站每月共有i 名新会员加入;每月的收入就为yi 每一张DVD 的平均购买费为s 元,DVD 的购买数量为k ;每月的购买费就为ks

每一张DVD 使用的时间为m 月,所以每月DVD 的折旧费为m

s

元;

网站每月正常使用费用(如工人的工资,日常饮用水等)为L 元; 建立模型五

yi >ks +m

s

+L

所以每月DVD 的购买数量

s

L

m s yi k --<

在DVD 的需求预测方面还需要考虑会员的入会费和DVD 的更新速度; 在DVD 的分配方面还需要考虑会员的在线时长,会员们之前所订购的DVD 的种类,消费习惯。

六、模型结果的分析

3、在问题三方面我们对每一种DVD 都满足95%的会员的观看,这样既能满足题目要求使DVD 的总数要达到满足95%的会员的观看,又能使满足度达到最大;

附件一: model: sets:

dvd/1..100/:total;!total 为网站现有

j

DVD

的数量;

huiyuan/1..1000/; !自定义0-1向量; pianai(huiyuan,dvd):data0; bianliang(huiyuan,dvd):data1;

Endsets

!目标函数(总体满意度最大);

max=@sum(pianai(i,j):data1(i,j)*data0(i,j));

! x (i,j) ,t (i)为0-1变量; @for(bianliang:@bin(data1)); ! 约束条件每人可租DVD 数Yi=3或0;

@for(huiyuan(j):@sum(bianliang(j,i):data1(j,i))<=3); ! 所租

j

DVD

总数小于网站现有

j

DVD

的数量;

@for(dvd(i):@sum(bianliang(i,j):data1(i,j))<=total(i));

data:

total=10 40 15 20 20 12 30 33 35 25 29 31 28 61 2 28 28 26 31 38 34 29 35 22 29 81 1 19 25 41 29 35 1 40 39 5 106 30 29 2 110 6 15 36 34 11 32 25 2 64 40 26 33 26 61 2 11 38 44 36 27 31 42 44 12 81 10 35 33 30 2 40 15 11 28 24 20 88 9 28 31 8 22 3 70 21 34 4 38 27 39 28 24 15 50 24 36 55 2 40 ; ! 网站现有j

DVD

的数量;

data0=

6 0 0 0 0 0 8 1 0 0 4 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 7 0 0 0 0 0 0 0 5 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 2 0 0 9 0 0 0 0 0 0 0 0 0 0 0

0 3 0 0

0 0 0 0 5 1 0 0 0 8 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 10 0 0 0 0 0 0 0 0 0 7 0

0 0 3 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 0 0 4 0 0 0 0 0 0 0 0 6 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9

0 0 0 0

......

......

0 0 0 0 0 0 0 0 0 0 0 0 0 0 10 0 0 0 0 0

0 0 2 0 0 0 9 8 0 0 0 0 0 0 0 0 0 0 0

0 0 4 3 0 0 5 0 0 0 0 0 1 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 6 0 0 7 0 0 0 0

0 0 0 0

0 0 0 0 0 0 0 0 0 0 8 0 1 0 0 0 0 0 0 0

0 0 0 5 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0

0 0 0 0 0 0 0 9 0 0 0 6 0 0 0 0 0 0 0

0 0 0 0 0 0 0 3 0 0 2 0 0 0 7 0 0 0 0

0 0 0 0

0 0 0 0 5 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0

0 0 0 0 0 0 0 0 8 0 0 0 0 0 10 0 7 0 0

0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 0 0 9 0 0 0 0 0 0 0 0 0 0 6 3 0 0 0

0 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0

0 0 0 0

0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 8 0 10 0 0 6 0

0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 7 9 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 5 0 0 1 0 0 0

0 0 0 4

;

enddata

end

附录二:

#include

int main(void)

{

int x[1000][100]={6,0 ,0 ,0 ,0 ,0 ,8,1 ,0 ,0 ,4 ,0 ,0 ,0 ,0 ,0................}; //输入每位会员的的在线订单

int maxB,i,j,c[1000][100],b[100],k=0,y=0,n[100]={0};

for(i=0;i<1000;i++){

for(j=0;j<100;i++){

if(x[i][j]==0)

c[i][j]=0;

else c[i][j]=1/x[i][j];}

//得出偏爱度,当1/x[i][j]不为0时;c[i][j]=1/x[i][j];当当1/x[i][j]为0时c[i][j]=0;

}

//进行0—1规划;

for(i=0;i<1000;i++){

for(j=0;j<100;i++){

if(x[i][j]==0)

x[i][j]=0;

else if(x[i][j]<=3)

x[i][j]=1;

else x[i][j]=0;}

}

//求出需要第j种DVD的人数

for(j=0;j<100;i++ ){

for(i=0;i<1000;i++){

n[j]=n[j]+x[i][j];

}

}

//得出第j种DVD需采购数量

for(j=0;j<100;i++){

b[j]=0.7*0.95*n[j];

}

//再次进行0-1规划

for(j=0;j<100;i++){

for(i=0;i<1000;i++){

if(k

k=k+x[i][j];}

else

x[i][j]=0;

}

for(i=0;i<1000;i++){ for(j=0;j<100;i++){ if(y!=3) y=y+x[i][j]; else x[i][j]=0;} }

//输出需要购买j 种DVD 的数量,并且求出满意度。 for(j=0;j<100;i++){ printf("%d",b[j]); for(i=0;i<1000;i++){ maxB=maxB+c[i][j]*x[i][j]; } }

//输出满意度

printf("%d\n",maxB); return 0; }

附录三: model: sets:

dvd/1..100/:total;!total 为网站现有

j

DVD

的数量;

huiyuan/1..1000/; !自定义0-1向量; pianai(huiyuan,dvd):data0; bianliang(huiyuan,dvd):data1;

Endsets

!目标函数(总体满意度最大);

max=@sum(pianai(i,j):data1(i,j)*data0(i,j));

! x (i,j) ,t (i)为0-1变量; @for(bianliang:@bin(data1)); ! 约束条件每人可租DVD 数Yi=3或0;

@for(huiyuan(j):@sum(bianliang(j,i):data1(j,i))<=3); ! 所租

j

DVD

总数小于网站现有

j

DVD

的数量;

@for(dvd(i):@sum(bianliang(i,j):data1(i,j))<=total(i));

data: total=

43 67 48 76 39 54 56 58 69 49 51 55 51 63 51 75 52 45 51 67 68 49 65 41 50 59 52 39 50 71 47 68 60 62 68 61 43 59 58 52 88 66 51 65 64 52 57 50 54 64 71 52 57 45 57 59 57 46 59 58 47 60 55 60 48 60 65 61 61 66 64 66 47 59 46 39 39 57 56 51 59 33 45 35 63 44 66 42 43 55 73 49 43 45 79 47 67 62 39 66

; ! 网站现有

j

DVD

的数量;

data0=

6 0 0 0 0 0 8 1 0 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

7 0 0 0 0 0 0 0 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 9 0 0 0 0 0 0 0 0 0 0 0 0 3 0 0

0 0 0 0 5 1 0 0 0 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10 0 0 0 0 0 0 0 0 0 7 0 0 0 3 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 0 0 0 0 ...... ......

0 0 0 0 0 0 0 0 0 0 0 0 0 0 10 0 0 0 0 0 0 0 2 0 0 0 9 8 0 0 0 0 0 0 0 0 0 0 0 0 0 4 3 0 0 5 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 0 0 7 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 8 0 1 0 0 0 0 0 0 0 0 0 0 5 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 9 0 0 0 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 0 2 0 0 0 7 0 0 0 0 0 0 0 0

0 0 0 0 5 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 8 0 0 0 0 0 10 0 7 0 0

0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 0 0 9 0 0 0 0 0 0 0 0 0 0 6 3 0 0 0

0 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0

0 0 0 0

0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 8 0 10 0 0 6 0

0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 7 9 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 5 0 0 1 0 0 0

0 0 0 4

;

enddata

end

数学建模代码汇总

插值 % 产生原始数据 x=0:0.1:1; y=(x.^2-3*x+7).*exp (-4*x).*sin (2*x); % 线性插值 xx=0:0.01:1; y1=interp1 (x,y,xx,'linear'); subplot (2,2,1) plot (x,y,'o',xx,y1); title ('线性插值'); % 最邻近点插值 y2=interp1 (x,y,xx,'nearest'); subplot (2,2,2) plot (x,y,'o',xx,y2); title ('最邻近点插值'); % 三次插值 y3=interp1 (x,y,xx,'cubic'); subplot (2,2,3) plot (x,y,'o',xx,y3); title ('三次插值'); % 三次样条插值 y4=interp1 (x,y,xx,'spline'); subplot (2,2,4) plot (x,y,'o',xx,y4); title ('三次样条插值'); % 插值基点为网格节点 clear all y=20:-1:0; x=0:20; z=[0.2 0.2 0.2 0.2 0.2 0.2 0.4 0.4 0.3 0.2 0.3 0.2 0.1 0.2 0.2 0.4 0.3 0.2 0.2 0.2 0.2; 0.3 0.2 0.2 0.2 0.2 0.4 0.3 0.3 0.3 0.3 0.4 0.2 0.2 0.2 0.2 0.4 0.4 0.4 0.3 0.2 0.2; 0.2 0.3 0.3 0.2 0.3 1 0.4 0.5 0.3 0.3 0.3 0.3 0.2 0.2 0.2 0.6 0.5 0.4 0.4 0.2 0.2; 0.2 0.2 0.4 0.2 1 1.1 0.9 0.4 0.3 0.3 0.5 0.3 0.2 0.2 0.2 0.7 0.3 0.6 0.6 0.3 0.4; 0.2 0.2 0.9 0.7 1 1 1 0.7 0.5 0.3 0.2 0.2 0.2 0.6 0.2 0.8 0.7 0.9 0.5 0.5 0.4; 0.2 0.3 1 1 1 1.2 1 1.1 0.8 0.3 0.2 0.2 0.2 0.5 0.3 0.6 0.6 0.8 0.7 0.6 0.5; 0.2 0.4 1 1 1.1 1.1 1.1 1.1 0.6 0.3 0.4 0.4 0.2 0.7 0.5 0.9 0.7 0.4 0.9 0.8 0.3;

数学建模-B题-球队排名问题-答案详解

承诺书 我们仔细阅读了中国大学生数学建模竞赛的竞赛规则. 我们完全明白,在竞赛开始后参赛队员不能以任何方式(包括电话、电子邮件、网上咨询等)与队外的任何人(包括指导教师)研究、讨论与赛题有关的问题。 我们知道,抄袭别人的成果是违反竞赛规则的, 如果引用别人的成果或其他公开的资料(包括网上查到的资料),必须按照规定的参考文献的表述方式在正文引用处和参考文献中明确列出。 我们郑重承诺,严格遵守竞赛规则,以保证竞赛的公正、公平性。如有违反竞赛规则的行为,我们将受到严肃处理。 我们参赛选择的题号是(从A/B/C/D中选择一项填写): 我们的参赛报名号为(如果赛区设置报名号的话): 所属学校(请填写完整的全名): 参赛队员(打印并签名) :1. 2. 3. 指导教师或指导教师组负责人(打印并签名): 日期:年月日赛区评阅编号(由赛区组委会评阅前进行编号):

编号专用页 赛区评阅编号(由赛区组委会评阅前进行编号): 全国统一编号(由赛区组委会送交全国前编号):全国评阅编号(由全国组委会评阅前进行编号):

一个给足球队排名次的方法 戚立峰毛威马斌 (北京大学数学系,100871) 指导教师樊启洪 摘要本文利用层次分析法建立了一个为足球排名次的数学模型.它首先用来排名次的数据是否充分做出判断,在能够排名次时对数据的可依赖程度做出估计,然后给出名次.文中证明了这个名次正是比赛成绩所体现的各队实力的顺序.文中将看到此模型充分考虑了排名结果对各场比赛的重要性的反馈影响,基本上消除了由于比赛对手的强弱不同造成的不公平现象.文中还证明了模型的稳定性,这保证了各队在发挥水平上的小的波动不会对排名顺序造成大的变动.本模型比较完满地解决了足球队排名次问题,而且经过简单修改,它可以适用于任何一种对抗型比赛的排名.

数学建模源代码

灰色系统理论建模源代码 function GM1_1(X0) %format long ; [m,n]=size(X0); X1=cumsum(X0); %累加 X2=[]; for i=1:n-1 X2(i,:)=X1(i)+X1(i+1); end B=-0.5.*X2 ; t=ones(n-1,1); B=[B,t] ; % 求B矩阵 YN=X0(2:end) ; P_t=YN./X1(1:(length(X0)-1)) %对原始数据序列X0进行准光滑性检验, %序列x0的光滑比P(t)=X0(t)/X1(t-1) A=inv(B.'*B)*B.'*YN.' ; a=A(1) u=A(2) c=u/a ; b=X0(1)-c ; X=[num2str(b),'exp','(',num2str(-a),'k',')',num2str(c)]; strcat('X(k+1)=',X) %syms k; for t=1:length(X0) k(1,t)=t-1; end k Y_k_1=b*exp(-a*k)+c; for j=1:length(k)-1 Y(1,j)=Y_k_1(j+1)-Y_k_1(j); end XY=[Y_k_1(1),Y] %预测值 CA=abs(XY-X0) ; %残差数列 Theta=CA %残差检验绝对误差序列 XD_Theta= CA ./ X0 %残差检验相对误差序列 AV=mean(CA); % 残差数列平均值 R_k=(min(Theta)+0.5*max(Theta))./(Theta+0.5*max(Theta)) ;% P=0.5 R=sum(R_k)/length(R_k) %关联度 Temp0=(CA-AV).^2 ; Temp1=sum(Temp0)/length(CA);

2011年全国大学生数学建模国赛B题程序

Matlab dijkstra算法 function [distance,path]=dijkstra(A,s,e) % [DISTANCE,PATH]=DIJKSTRA(A,S,E) % returns the distance and path between the start node and the end node. % A: adjcent matrix % s: start node % e: end node % initialize n=size(A,1); % node number D=A(s,:); % distance vector path=[]; % path vector visit=ones(1,n); % node visibility visit(s)=0; % source node is unvisible parent=zeros(1,n); % parent node distance=D(e); % the shortest distance path if parent(e)==0, return; end path=zeros(1,2*n); % path preallocation t=e; path(1)=t; count=1; while t~=s && t>0 p=parent(t); path=[p path(1:count)]; t=p; count=count+1; end if count>=2*n, error(['The path preallocation length is too short.',... 'Please redefine path preallocation parameter.']); end path(1)=s; path=path(1:count); function [y,fval,flag]=Hungary(C) %********************************************************************** % >> C=[2 15 13 4;10 4 14 15;9 14 16 13;7 8 11 9] % >> [y,fval]=Hungary(C) % M = % 0 0 0 1 % 0 1 0 0 % 1 0 0 0 % 0 0 1 0 % y = % 28 % >> %********************************************************************** ***** [m,n]=size(C); tempC=C; for i=1:m

数学建模代码汇总复习进程

数学建模代码汇总

插值 % 产生原始数据 x=0:0.1:1; y=(x.^2-3*x+7).*exp (-4*x).*sin (2*x); % 线性插值 xx=0:0.01:1; y1=interp1 (x,y,xx,'linear'); subplot (2,2,1) plot (x,y,'o',xx,y1); title ('线性插值'); % 最邻近点插值 y2=interp1 (x,y,xx,'nearest'); subplot (2,2,2) plot (x,y,'o',xx,y2); title ('最邻近点插值'); % 三次插值 y3=interp1 (x,y,xx,'cubic'); subplot (2,2,3) plot (x,y,'o',xx,y3); title ('三次插值'); % 三次样条插值 y4=interp1 (x,y,xx,'spline'); subplot (2,2,4) plot (x,y,'o',xx,y4); title ('三次样条插值'); % 插值基点为网格节点 clear all y=20:-1:0; x=0:20; z=[0.2 0.2 0.2 0.2 0.2 0.2 0.4 0.4 0.3 0.2 0.3 0.2 0.1 0.2 0.2 0.4 0.3 0.2 0.2 0.2 0.2; 0.3 0.2 0.2 0.2 0.2 0.4 0.3 0.3 0.3 0.3 0.4 0.2 0.2 0.2 0.2 0.4 0.4 0.4 0.3 0.2 0.2;

0.2 0.3 0.3 0.2 0.3 1 0.4 0.5 0.3 0.3 0.3 0.3 0.2 0.2 0.2 0.6 0.5 0.4 0.4 0.2 0.2; 0.2 0.2 0.4 0.2 1 1.1 0.9 0.4 0.3 0.3 0.5 0.3 0.2 0.2 0.2 0.7 0.3 0.6 0.6 0.3 0.4; 0.2 0.2 0.9 0.7 1 1 1 0.7 0.5 0.3 0.2 0.2 0.2 0.6 0.2 0.8 0.7 0.9 0.5 0.5 0.4; 0.2 0.3 1 1 1 1.2 1 1.1 0.8 0.3 0.2 0.2 0.2 0.5 0.3 0.6 0.6 0.8 0.7 0.6 0.5; 0.2 0.4 1 1 1.1 1.1 1.1 1.1 0.6 0.3 0.4 0.4 0.2 0.7 0.5 0.9 0.7 0.4 0.9 0.8 0.3; 0.2 0.2 0.9 1.1 1.2 1.2 1.1 1.1 0.6 0.3 0.5 0.3 0.2 0.4 0.3 0.7 1 0.7 1.2 0.8 0.4; 0.2 0.3 0.4 0.9 1.1 1 1.1 1.1 0.7 0.4 0.4 0.4 0.3 0.5 0.5 0.8 1.1 0.8 1.1 0.9 0.3; 0.3 0.3 0.5 1.2 1.2 1.1 1 1.2 0.9 0.5 0.6 0.4 0.6 0.6 0.3 0.6 1.2 0.8 1 0.8 0.5; 0.3 0.5 0.9 1.1 1.1 1 1.2 1 0.8 0.7 0.5 0.6 0.4 0.5 0.4 1 1.3 0.9 0.9 1 0.8; 0.3 0.5 0.6 1.1 1.2 1 1 1.1 0.9 0.4 0.4 0.5 0.5 0.8 0.6 0.9 1 0.5 0.8 0.8 0.9; 0.4 0.5 0.4 1 1.1 1.2 1 0.9 0.7 0.5 0.6 0.3 0.6 0.4 0.6 1 1 0.6 0.9 1 0.7; 0.3 0.5 0.8 1.1 1.1 1 0.8 0.7 0.7 0.4 0.5 0.4 0.4 0.5 0.4 1.1 1.3 0.7 1 0.7 0.6; 0.3 0.5 0.9 1.1 1 0.7 0.7 0.4 0.6 0.4 0.4 0.3 0.5 0.5 0.3 0.9 1.2 0.8 1 0.8 0.4; 0.2 0.3 0.6 0.9 0.8 0.8 0.6 0.3 0.4 0.5 0.4 0.5 0.4 0.2 0.5 0.5 1.3 0.6 1 0.9 0.3; 0.2 0.3 0.3 0.7 0.6 0.6 0.4 0.2 0.3 0.5 0.8 0.8 0.3 0.2 0.2 0.8 1.3 0.9 0.8 0.8 0.4; 0.2 0.3 0.3 0.6 0.3 0.4 0.3 0.2 0.2 0.3 0.6 0.4 0.3 0.2 0.4 0.3 0.8 0.6 0.7 0.4 0.4; 0.2 0.3 0.4 0.4 0.2 0.2 0.2 0.3 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.5 0.7 0.4 0.4 0.3 0.3; 0.2 0.2 0.3 0.2 0.2 0.3 0.2 0.2 0.2 0.2 0.2 0.1 0.2 0.4 0.3 0.6 0.5 0.3 0.3 0.3 0.2; 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.4 0.7 0.4 0.2 0.4 0.5 0.5]; % 未插值直接画图 figure (1) % 创建图形窗口1,并激活 surf (x,y,z);

2011全国数学建模B题论文

城市交通巡警平台的设置与调度 摘要 由于警务资源是有限的,如何根据城市的实际情况与需求合理地设置交巡警服务平台、分配各平台的管辖范围、调度警务资源是警务部门面临的一个实际课题。本文要解决的就是某市设置交巡警服务平台设置方案,以及如何处理在确保突发事件问题。 对于第一问,根据附件中的各点的坐标和图中所给的各标志点之间的相邻关系,我们求得任意两个相邻标志点的直线距离,根据附件中的全市交通路口的路线做出了邻接矩阵,再用Floyd算法求得任意两点间的最短距离。在此基础上,为了确定需要增加平台的具体个数和位置,采用主成分分析法。应用迪杰斯特拉(Dijkstra)算法进行搜索得到了该区交巡警服务平台警力合理的调度方案。 对于第二问,给出了设置交巡警服务平台的可量化的原则和任务,对现有方案进行评价然后进行优化;案发地点在A区,题目没有给出逃犯的车速,这里要处理好,怎样叫实现了围堵也是需要考虑的问题。 关键字:邻接矩阵、距离矩阵、整数线性规划、主成分分析、surfer作图 一.问题的重述 警察肩负着刑事执法、治安管理、交通管理、服务群众四大职能。为了更有效地贯彻实施这些职能,需要在市区的一些交通要道和重要部位设置交巡警服务平台。每个交巡警服务平台的职能和警力配备基本相同。根据城市的实际情况与需求合理地设置交巡警服务平台、分配各平台的管辖范围、调度警务资源。就某市设置交巡警服务平台的相关情况,建立数学模型分析研究下面的问题:(1)为各交巡警服务平台分配管辖范围,使其在所管辖的范围内出现突发事件时,尽量能在3分钟内有交巡警(警车的时速为60km/h)到达事发地。 对于重大突发事件,需要调度全区20个交巡警服务平台的警力资源,对进出该区的13条交通要道实现快速全封锁。实际中一个平台的警力最多封锁一个路口,请给出该区交巡警服务平台警力合理的调度方案。 根据现有交巡警服务平台的工作量不均衡和有些地方出警时间过长的实际情况,拟在该区内再增加2至5个平台,请确定需要增加平台的具体个数和位置。 (2)针对全市(主城六区A,B,C,D,E,F)的具体情况,按照设置交巡警服务平台的原则和任务,分析研究该市现有交巡警服务平台设置方案(参见附件)的合理性。如果有明显不合理,请给出解决方案。 如果该市地点P(第32个节点)处发生了重大刑事案件,在案发3分钟后接到报警,犯罪嫌疑人已驾车逃跑。为了快速搜捕嫌疑犯,请给出调度全市交巡警服务平台警力资源的最佳围堵方案。 二、问题的分析 问题一中有三个小问题,分别讨论在现有巡警台不变的情况下,确定出每个巡警台的控制范围,要求在三分钟之内尽可能到达;当有案件发生时,各交巡警按预定的路线到达指定路口封锁该路口,要求我们给出各节点接到指示时他们的

数学建模参赛真实经验(强烈推荐)

数学建模参赛真实经验(强烈推荐) 本文档节选自: Matlab在数学建模中的应用,卓金武等编著,北航出版社,2011年4月出版 以下内容根据作者的讲座整理出来,多年数学建模实践经历证明这些经验对数学建模参赛队员非常有帮助,希望大家结合自己的实践慢慢体会总结,并祝愿大家在数学建模和Matlab世界能够找到自己的快乐和价值所在。 一、如何准备数学建模竞赛 一般,可以把参加数学建模竞赛的过程分成三个阶段:第一阶段,是个人的入门和积累阶段,这个阶段关键看个人的主观能动性;第二阶段,就是通常各学校都进行的集训阶段,通过模拟实战来提高参赛队员的水平;第三阶段是实际比赛阶段。这里讲的如何准备数学建模竞赛是针对第一阶段来讲的。 回顾作者自己的参赛过程,认为这个阶段是真正的学习阶段,就像是修炼内功一样,如果在这个阶段打下深厚的基础,对后面的两个阶段非常有利,也是个人是否能在建模竞赛中占优势的关键阶段。下面就分几个方面谈一下如何准备数学建模竞赛。 首先是要有一定的数学基础,尤其是良好的数学思维能力。并不是数学分数高就说明有很高的数学思维能力,但扎实的数学知识是数学思维的根基。对大学生来说,有高等数学、概率和线性代数就够了,当然其它数学知识知道的越多越好了,如图论、排队论、泛函等。我大一下学期开始接触数学建模,大学的数学课程只学习过高等数学。说这一点,主要想说明只要数学基础还可以,平时的数学考试都能在80分以上就可以参加数学建模竞赛了,数学方面的知识可以在以后的学习中逐渐去提高,不必刻意去补充单纯的数学理论。 真正准备数学建模竞赛应该从看数学建模书籍开始,要知道什么是数学建模,有哪些常见的数学模型和建模方法,知道一些常见的数学建模案例,这些方面都要通过看建模方面的书籍而获得。现在数学建模的书籍也比较多,图书馆和互联网上都有丰富的数学建模资料。作者认为姜启源、谢金星、叶齐孝、朱道元等老师的建模书籍都非常的棒,可以先看二三本。刚开始看数学建模书籍时,一定会有很多地方看不懂,但要知道基本思路,时间长了就知道什么问题用什么建模方法求解了。这里面需要提的一点是,运筹学与数学建模息息相关,最好再看一二本运筹学著作,仍然可以采取诸葛亮的看书策略,只观其大略就可以了,等知道需要具体用哪块知识后,再集中精力将其消化,然后应用之。 大家都知道,参加数学建模竞赛一定要有些编程功底,当然现在有Matlab这种强大的工程软件,对编程的的要求就降低了,至少入门容易多了,因为很容易用1条Matlab命令解决以前要用20行C语言才能实现的功能。因为Matlab的强大功能,Matlab在数学建模中已经有了非常广泛的应用,在很多学校,数学建模队员必须学习Matlab。当然Matlab的入门也非常容易,只要有本Matlab参考书,照猫画虎可以很快实现一些基本的数学建模功能,如数据处理、绘图、计算等。我的一个队友,当年用一天时间把一本二百多页的Matlab 教程操作完了,然后在经常运用中,慢慢地就变成了一名Matlab高手了。 对于有些编程基础的同学,最好再看一些算法方面的书籍,了解常见的数据结构和基本

2011年全国数学建模B题答案

B 题: 交巡警服务平台的设置与调度 摘要 本题要根据实际情况分配交巡警平台的管辖范围,调度警务资源,合理设置交巡警平台的等问题。我们本着两个原则来设置管辖平台:1.尽可能使所有路口都能在3分钟内赶到;2.使平台间工作量较为平均。 本着最快封锁住全城,最快围堵住嫌犯的原则来调度警务资源。 针对问题一第一小问的分配管辖问题,我们用图论的知识将实际地图转化为无向图,再用matlab 求出每两个路口间的最短路径,最后用c++程序把每个路口分配到距离其最近的平台管辖范围内。分配结果见正文,有6个路口:28、29、38、39、61、92无法在3分钟内赶到。 针对问题一第二小问的调度警员封锁路口问题,为了最快封锁完全区,封锁时间取决于交警最后达到的一个路口所花费的时间决定,用图论中的最大最小化模型,求出到达最远路口的最短时间。将原来的双目标最大最小化问题转化为单目标最优化问题,利用0-1规划,约束13个路口和13个不同的平台一一对应,求出所有交警在路途上花费的总时长最短,用lingo 得到调度方案,封锁全城需要时间8.0155分钟。 出入口标号 12 14 16 21 22 23 24 28 29 30 38 48 62 派往的平台 12 16 9 14 10 13 11 15 7 8 2 5 4 针对问题一第三小问,我们考虑到第一小问分配结果有6个路口28、29、38、39、61、92无法在3分钟内赶到。所以我们以3分钟内到达6个路口为目标得到72种添加方法,在这些方案中,用平台间工作量不均衡度(即各个平台的工作量方差)决定最合理的增添方案。 针对问题二第一小问,我们看:1.所有路口是否能在3分钟内赶到;2.平台间工作量是否较为平均,来评判该城区的平台设置是否合理,发现有138个路口无法在3分钟内赶到,对于582个路口而言快达到四分之一了,并且平台之间的工作量差异巨大可以看出严重不合理。我们采用自己的方法用最大集合覆盖模型在平台数量不变的基础上重新设置平台。 针对问题五,我们对动态围堵逃犯的问题,我们先算出嫌犯t 3分钟内可能到达的路口合集,再让警方围堵住嫌犯可能到达的路口的毗邻路口,如果无法围堵,扩大范围,围堵下一圈可能到达的路口,通过lingo 算出能在11.28分钟内完成围堵,方案见正文。 关键字:0-1规划,图论,最大路径最小值,集合模型

2011年数学建模B题答案

load B1.txt %巡警站点号、横坐标、纵坐标(前三列)load B2.txt %起始点,末端位置号(两列) hzb=B1(:,2);%横坐标 zzb=B1(:,3);%纵坐标 start=B2(:,1);%起始位置 fina=B2(:,2);%末端位置 n=length(hzb);%坐标个数 m=length(start);%起始点个数:含重复 a=ones(n,n);%n阶矩阵 b=10000.*a;%b为矩阵a的值乘上10000 for i=1:m %每个始点出去 x=start(i); y=fina(i); if y<=92 s=((hzb(x)-hzb(y))^2+(zzb(x)-zzb(y))^2)^0.5; b(x,y)=s; b(y,x)=s;%双向图距离 end end path=zeros(n,20);%终点前一个路劲节点 distance=b(:,1:20);%二十个站到其他点的最短距离 u=0;

mindis=10000;%最短距离初始为10000 flag=1; s=zeros(n,1); for i=1:20 s=0.*s;%每次清零 flag=1;%bool型标量 for j=1:n if distance(j,i)<10000 path(j,i)=i;%若满足,就往下走 end end s(i)=1; for j=1:n % if flag==1 mindis=10000; for k=1:n if s(k)==0 & distance(k,i)30 % flag=0;

数学建模B题 含代码

2013高教社杯全国大学生数学建模竞赛 承诺书 我们仔细阅读了中国大学生数学建模竞赛的竞赛规则. 我们完全明白,在竞赛开始后参赛队员不能以任何方式(包括电话、电子邮件、网上咨询等)与队外的任何人(包括指导教师)研究、讨论与赛题有关的问题。 我们知道,抄袭别人的成果是违反竞赛规则的, 如果引用别人的成果或其他公开的资料(包括网上查到的资料),必须按照规定的参考文献的表述方式在正文引用处和参考文献中明确列出。 我们郑重承诺,严格遵守竞赛规则,以保证竞赛的公正、公平性。如有违反竞赛规则的行为,我们将受到严肃处理。 我们参赛选择的题号是(从A/B/C/D中选择一项填写): B 我们的参赛报名号为(如果赛区设置报名号的话): 所属学校(请填写完整的全名):华南师范大学增城学院 参赛队员(打印并签名) :1. 2. 3. 指导教师或指导教师组负责人(打印并签名): 日期:年月日

赛区评阅编号(由赛区组委会评阅前进行编号):

2013高教社杯全国大学生数学建模竞赛 编号专用页 赛区评阅编号(由赛区组委会评阅前进行编号): 全国统一编号(由赛区组委会送交全国前编号):全国评阅编号(由全国组委会评阅前进行编号):

DVD在线租赁 摘要 问题(三):题目需要我们回答购买各种DVD的数量来使95%的会员能看到他DVD想看到的DVD,并且要怎么分配才能使满意度达到最大;每种建立以总的购买数最小、会员满意度最大为双目标的规划模型。通过确定在一个月内每张DVD的在每个会员中手中的使用率;然后通过c语言程序编程来确定每种DVD 的购买量;建立0-1规划模型;通过LINGO软件使满意度达到最大,来最终确定DVD的分配; 一级,二级目标,将多目标规划转化为单目标;同时将第j种DVD的购买量y的整数约束去掉,求解出最小购买数为张。将最小购买数作为约束条件,优j 化满意度后,得到最大满意度为95%;然后对此时DVD的购买量 y向上取整,得 j 到总购买数为186张。当购买数为186张时,会员满意度达到97%。 三、模型假设 1、租赁周期为一个月,每月租两次的会员可以在月中再租赁一次; 2、同一种DVD每人只能租赁一次; 3、DVD在租赁过程中无损坏; 4、会员每月至少交一次订单; 5、会员只有把前一次所借的DVD寄回,才可以继续下一次租赁 6、月底DVD全部收回,继续下个周期的租赁; 7、随着时间的推移,该网站的会员们的流动情况不会出现大变动。 四、符号说明

2011年数学建模B题

2011年全国大学生数学建模B题 交巡警服务平台的设置与调度 题目警车配置及巡逻问题的研究 摘要: 本文研究的是某城区警车配置及巡逻方案的制定问题,建立了求解警车巡逻方案的模型,并在满足D1的条件下给出了巡逻效果最好的方案。 在设计整个区域配置最少巡逻车辆时,本文设计了算法1:先将道路离散化成近似均匀分布的节点,相邻两个节点之间的距离约等于一分钟巡逻路程。由警车的数目m,将全区划分成m个均匀的分区,从每个分区的中心点出发,找到最近的道路节点,作为警车的初始位置,由Floyd算法算出每辆警车3分钟或2分钟行驶路程范围内的节点。考虑区域调整的概率大小和方向不同会影响调整结果,本文利用模拟退火算法构造出迁移几率函数,用迁移方向函数决定分区的调整方向。计算能满足D1的最小车辆数,即为该区应该配置的最小警车数目,用MATLAB计算,得到局部最优解为13辆。 在选取巡逻显著性指标时,本文考虑了两个方面的指标:一是全面性,即所有警车走过的街道节点数占总街道节点数的比例,用两者之比来评价;二是均匀性,即所有警车经过每个节点数的次数偏离平均经过次数的程度,用方差值来大小评价。 问题三:为简化问题,假设所有警车在同一时刻,大致向同一方向巡逻,运动状态分为四种:向左,向右,向上,向下,记录每个时刻,警车经过的节点和能够赶去处理事故的点,最后汇总计算得相应的评价指标。 在考虑巡逻规律隐蔽性要求时,文本将巡逻路线进行随机处理,方向是不确定的,采用算法2进行计算,得出相应巡逻显著指标,当车辆数减少到10辆或巡逻速度变大时,用算法2计算巡逻方案和对应的参数,结果见附录所示。 本文最后还考虑到4个额外因素,给出每个影响因素的解决方案。 关键词:模拟退火算法;Floyd算法;离散化 一问题的重述 110警车在街道上巡逻,既能够对违法犯罪分子起到震慑作用,降低犯罪率,又能够增加市民的安全感,同时也加快了接处警时间,提高了反应时效,为社会和谐提供了有力的保障。 现给出某城市内一区域,其道路数据和地图数据已知,该区域内三个重点部位的坐标分别为:(5112,4806),(9126, 4266),(7434 ,1332)。该区域内共有307个道路交叉口,为简化问题,相邻两个交叉路口之间的道路近似认为是直线,且所有事发现场均在下图的道路上。 该市拟增加一批配备有GPS卫星定位系统及先进通讯设备的110警车。设110警车的平均巡逻速度为20km/h,接警后的平均行驶速度为40km/h。警车配置及巡逻方案要

2017全国数学建模B题

题目 摘要 1问题的重述 基于移动互联网的自助式劳务众包平台,为企业提供各种商业检查和信息搜集,相比传统的市场调查方式可以大大节省调查成本,而且有效地保证了调查数据真实性,缩短了调查的周期。对于整个过程当中,任务的定价问题成为了核心关键。当定价过高时,商家所付出的代价太大;当定价过低时,会员拒接此类任务,最终导致商品检查(任务)失败。请讨论以下问题: 问题一根据对所给的附件一已结束项目任务数据的研究,研究(找出)项目任务的定价规律,同时分析部分任务未完成的原因。 问题二根据问题一的情况为附件一中的项目设计一个新的任务定价方案,并且与原方案进行比较。 问题三考虑到实际情况中,绝大多数用户会争相竞争选择位置比较集中的多个任务,因此,商家(平台)考虑将这些任务联合在一起打包发布。基于这种条件,对问题二的定价模型进行相应的修改并且分析此类情形对最终任务的完成情况有什么影响。 问题四根据前三问分析所建立出来的定价模型给出附件三中新项目的任务定价方案,并且评价该方案的实施效果。 2问题分析 “拍照赚钱”的任务实际上就是通过劳务众包的方式进行工作,所谓众包就是将原本由企业内部员工完成的任务,以开放的形式外包给未知的且数量庞大的群体来完成。在本题所涉及到的自助式劳务众包平台,企业将所需搜集的信息通过APP这个平台,展现在大众面前,大众根据自身情况来对一系列任务进行选择性的完成,最终得到相应的奖金。 问题一中对于任务悬赏金额量的确定是由一系列因素决定的,包括任务发布者所期望得到的作品数量、同期不同发布商所给的悬赏金、任务的难易程度、任务的期限等,对于问题一我们可以将这些因素都考虑进去,挖掘出各因素对于定价的影响规律,最终确定项目任务的定价规律,在综合分析实际情况和用户的信誉程度影响,来归纳出任务未完成的原因。 问题二中对于任务未完成情况的再分析,在问题一建立的模型的基础上,再考虑任务量,交通便利性等因素,将这些因素考虑进去之后,充分考虑任务点周围会员的信誉值情况,讨论任务未完成跟低信誉会员之间有什么关系,建立新的任务定价模型再给出新的任务定价方案,最后结合计算机对任务进行模拟仿真,得到在新任务定价条件下的各区域任务完成率和总完成率,将这个指标与之前的指标进行比较,可判断新任务定价方案是否优于模型一。 问题三中对于任务分布聚集规律提出打包的思想,将几个分布较近的任务进行捆绑,所以问题二中对于会员信誉值的考虑方法不再适用于本问题,所以要提出另一种思路对信誉值进行考虑,同时会员选取任务包时会被预定任务限额所限制,所以在该模型当中应该将这个因素考虑进去,充分结合任务包内各个任务的分类情况以及任务包与任务包之间的距离提出两个修正因子,将模型一进行修正,

2015数学建模选修大作业

中华女子学院 成绩2014 — 2015学年第二学期期末考试 (论文类) 论文题目数学建模算法之蒙特卡罗算法 课程代码1077080001 课程名称数学建模 学号130801019

姓名陈可心 院系计算机系 专业计算机科学与技术 考试时间2015年5月27日 一、数学建模十大算法 1、蒙特卡罗算法 该算法又称随机性模拟算法,是通过计算机仿真来解决问题的算法,同时可以通过模拟可以来检验自己模型的正确性,是比赛时必用的方法。接下来本文将着重介绍这一算法。 2、数据拟合、参数估计、插值等数据处理算法 比赛中通常会遇到大量的数据需要处理,而处理数据的关键就在于这些算法,通常使用Matlab作为工具。 3、线性规划、整数规划、多元规划、二次规划等规划类问题 建模竞赛大多数问题属于最优化问题,很多时候这些问题可以用数学规划算法来描述,通常使用Lindo、Lingo软件实现。这个也是我们数学建模选修课时主要介绍的问题,所以对这方面比较熟悉,也了解了Lindo、Lingo软件的基本用法。 4、图论算法 这类算法可以分为很多种,包括最短路、网络流、二分图等算法,涉及到图论的问题可以用这些方法解决,上学期数据结构课程以及离散数学课程中都有介绍。它提供了对很多问题都很有效的一种简单而系统的建模方式。

5、动态规划、回溯搜索、分治算法、分支定界等计算机算法 这些算法是算法设计中比较常用的方法,很多场合可以用到竞赛中 6、最优化理论的三大非经典算法:模拟退火法、神经网络、遗传算法 这些问题是用来解决一些较困难的最优化问题的算法,对于有些问题非常有帮助,但是算法的实现比较困难,需慎重使用。 7、网格算法和穷举法 网格算法和穷举法都是暴力搜索最优点的算法,在很多竞赛题中有应用,当重点讨论模型本身而轻视算法的时候,可以使用这种暴力方案,最好使用一些高级语言作为编程工具。 8、一些连续离散化方法 很多问题都是实际来的,数据可以是连续的,而计算机只认的是离散的数据,因此将其离散化后进行差分代替微分、求和代替积分等思想是非常重要的。 9、数值分析算法 如果在比赛中采用高级语言进行编程的话,那一些数值分析中常用的算法比如方程组求解、矩阵运算、函数积分等算法就需要额外编写库函数进行调用。10、图象处理算法 赛题中有一类问题与图形有关,即使与图形无关,论文中也应该要不乏图片的,这些图形如何展示以及如何处理就是需要解决的问题,通常使用Matlab进行处理。 二、蒙特卡罗方法 2.1算法简介 蒙特·卡罗方法(Monte Carlo method),也称统计模拟方法,1946年,美国拉斯阿莫斯国家实验室的三位科学家John von Neumann,Stan Ulam 和 Nick

数学建模b题标准答案

2011高教社杯全国大学生数学建模竞赛 承诺书 我们仔细阅读了中国大学生数学建模竞赛的竞赛规则. 我们完全明白,在竞赛开始后参赛队员不能以任何方式(包括电话、电子邮件、网上咨询等)与队外的任何人(包括指导教师)研究、讨论与赛题有关的问题。 我们知道,抄袭别人的成果是违反竞赛规则的, 如果引用别人的成果或其他公开的资料(包括网上查到的资料),必须按照规定的参考文献的表述方式在正文引用处和参考文献中明确列出。 我们郑重承诺,严格遵守竞赛规则,以保证竞赛的公正、公平性。如有违反竞赛规则的行为,我们将受到严肃处理。 我们参赛选择的题号是(从A/B/C/D中选择一项填写): B 我们的参赛报名号为(如果赛区设置报名号的话): 所属学校(请填写完整的全名):北京大学 参赛队员(打印并签名) :1. 姚胜献 2. 许锦敏 3. 刘迪初 指导教师或指导教师组负责人(打印并签名):刘业辉 日期: 2011 年 9 月 12日赛区评阅编号(由赛区组委会评阅前进行编号):

2011高教社杯全国大学生数学建模竞赛 编号专用页 赛区评阅编号(由赛区组委会评阅前进行编号): 全国评阅编号(由全国组委会评阅前进行编号): 交巡警服务平台的设置与调度 摘要 本文通过建立整数规划模型,解决了分配各平台管辖范围、调度警务资源以及合理设置交巡警服务平台这三个方面的问题;通过建立线性加权评价模型定量评价了某市现有交巡警服务平台设置方案的合理性,并根据各个区对服务平台需求量的不同,提出了重新分配全市警力资源的解决方案。在计算交巡警服务平台到各个路口节点的路程时,使用了图论里的floyd算法。 针对问题一的第一个子问题,首先假设交巡警服务平台对某个路口节点的覆盖度是二元的,引入决策变量,建立了0-1整数规划模型。交巡警出警应体现时间的紧迫性,所以选择平均每个突发事件的出警时间最短作为目标函数,运用基于MATLAB的模拟退火算法进行求解,给出了中心城区A的20个服务平台的管辖范围,求得平均每个案件的出警时间为1.013分钟。 针对问题一的第二个子问题,为了实现对中心城区A的13个交通要道的快速全封锁,以最短的封锁时间为目标,建立了0-1整数规划模型,利用lingo软件编程求解,给出了该区交巡警服务平台警力合理的调度方案,并求得对13个交通要道实现全封锁最短需要8.02分钟。 问题一的第三个子问题是交巡警服务平台的选址问题。考虑到建设新的服务平台需要投入更多的成本和警务资源,还需平衡各个服务平台的工作量。因此,以增加最少的服务平台数和服务平台工作量方差最小为目标,采用集合覆盖理论,建立了双目标0-1整数规划模型,用基于MATLAB的模拟退火算法求解出增加的服务平台数为4个,新增 的服务平台具体位置为A 28,A 40 ,A 48 ,A 88 ,并得到各个服务平台的工作强度方差为2.28。 针对问题二的第一个子问题,通过建立线性加权评价模型定量评价了该市现有交巡警服务平台设置方案的合理性,结果发现全市服务平台覆盖率较低且各个区的工作量不均衡,得出全市服务平台的布局存在明显的不合理的结论。并确定各区域人口密度、各区域公路总长度以及各区域平均每天总的发案率为各区域对交巡警需求的指标,然后根据各个区对服务平台需求量的不同,提出了较为合理的分配全市警力资源的解决方案。 对于问题二的第二个子问题,以围堵范围最小和调动警力最少的原则,通过分析案发后嫌疑犯可能到达的位置,给出了围堵方案。 关键词:交巡警服务平台 0-1整数规划模拟退火法

2011高教社杯全国大学生数学建模竞赛B题(题目改变)参考答案

交巡警服务平台的设置与调度优化分析 摘要 本文综合应用了Floyd算法,匈牙利算法,用matlab计算出封锁全市的时间为1.2012小时。并在下面给出了封锁计划。 为了得出封锁计划,首先根据附件2的数据将全市的道路图转为邻接矩阵,然后根据邻接矩阵采用Floyd算法计算出该城市任意两点间的最短距离。然后从上述矩阵中找到各个交巡警平台到城市各个出口的最短距离,这个最短距离矩阵即可作为效益矩阵,然后运用匈牙利算法,得出分派矩阵。根据分派矩阵即可制定出封锁计划:96-151,99-153,177-177,175-202,178-203,323-264,181-317, 325-325,328-328,386-332,322-362,100-387,379-418,483-483, 484-541, 485-572。除此以外,本人建议在编号为175的路口应该设置一个交巡警平台,这样可以大大减少封锁全市的时间,大约可减少50%。 关键词: Floyd算法匈牙利算法 matlab

一、问题重述 “有困难找警察”,是家喻户晓的一句流行语。警察肩负着刑事执法、治安管理、交通管理、服务群众四大职能。为了更有效地贯彻实施这些职能,需要在市区的一些交通要道和重要部位设置交巡警服务平台。每个交巡警服务平台的职能和警力配备基本相同。由于警务资源是有限的,如何根据城市的实际情况与需求合理地设置交巡警服务平台、分配各平台的管辖范围、调度警务资源是警务部门面临的一个实际课题。 试就某市设置交巡警服务平台的相关情况,建立数学模型分析研究下面的问题: 警车的时速为60km/h, 现有突发事件,需要全市紧急封锁出入口,试求出全市所有的交巡警平台最快的封锁计划,一个出口仅需一个平台的警力即可封锁。 二、模型假设 1、假设警察出警时的速度相同且不变均为60/km h 。 2、假设警察出警的地点都是平台处。 3、假设警察接到通知后同时出警,且不考虑路面交通状况。 三、符号说明及一些符号的详细解释 A 存储全市图信息的邻接矩阵 D 任意两路口节点间的最短距离矩阵 X 01-规划矩阵 ij a ,i j 两路口节点标号之间直达的距离 ij d 从i 路口到j 路口的最短距离 ij b 从i 号平台到j 号出口的最短距离 ij x 取0或1,1ij x =表示第i 号平台去封锁j 号出口 在本文中经常用到,i j ,通常表示路口的编号,但是在ij d ,ij b ,ij x 不再表示这个意思,i 表示第i 个交巡警平台,交巡警平台的标号与附件中给的略有不同,如第21个交巡警平台为附件中的标号为93的交巡警平台,本文的标号是按照程序的数据读取顺序来标注的,在此声明;j 表示第j 个出口,如:第5个出口对应于附件中的路口编号为203的出口。但在论文给出的结果中使用的是附件中给的标号。 四、问题分析

数学建模参赛真实经验总结

数学建模参赛真实经验 一、如何准备数学建模竞赛 一般,可以把参加数学建模竞赛的过程分成三个阶段:第一阶段,是个人的入门和积累阶段,这个阶段关键看个人的主观能动性;第二阶段,就是通常各学校都进行的集训阶段,通过模拟实战来提高参赛队员的水平;第三阶段是实际比赛阶段。这里讲的如何准备数学建模竞赛是针对第一阶段来讲的。 回顾作者自己的参赛过程,认为这个阶段是真正的学习阶段,就像是修炼内功一样,如果在这个阶段打下深厚的基础,对后面的两个阶段非常有利,也是个人是否能在建模竞赛中占优势的关键阶段。下面就分几个方面谈一下如何准备数学建模竞赛。 首先是要有一定的数学基础,尤其是良好的数学思维能力。并不是数学分数高就说明有很高的数学思维能力,但扎实的数学知识是数学思维的根基。对大学生来说,有高等数学、概率和线性代数就够了,当然其它数学知识知道的越多越好了,如图论、排队论、泛函等。我大一下学期开始接触数学建模,大学的数学课程只学习过高等数学。说这一点,主要想说明只要数学基础还可以,平时的数学考试都能在80分以上就可以参加数学建模竞赛了,数学方面的知识可以在以后的学习中逐渐去提高,不必刻意去补充单纯的数学理论。 真正准备数学建模竞赛应该从看数学建模书籍开始,要知道什么是数学建模,有哪些常见的数学模型和建模方法,知道一些常见的数学建模案例,这些方面都要通过看建模方面的书籍而获得。现在数学建模的书籍也比较多,图书馆和互联网上都有丰富的数学建模资料。作者认为姜启源、谢金星、叶齐孝、朱道元等老师的建模书籍都非常的棒,可以先看二三本。刚开始看数学建模书籍时,一定会有很多地方看不懂,但要知道基本思路,时间长了就知道什么问题用什么建模方法求解了。这里面需要提的一点是,运筹学与数学建模息息相关,最好再看一二本运筹学著作,仍然可以采取诸葛亮的看书策略,只观其大略就可以了,等知道需要具体用哪块知识后,再集中精力将其消化,然后应用之。 大家都知道,参加数学建模竞赛一定要有些编程功底,当然现在有Matlab这种强大的工程软件,对编程的的要求就降低了,至少入门容易多了,因为很容易用1条Matlab命令

相关文档
相关文档 最新文档