【数学建模】DVD在线租赁

2005高教社杯全国大学生数学建模竞赛题目B
随着信息时代的到来,网络成为人们生活中越来越不可或缺的元素之一。许多网站利用其强大的资源和知名度,面向其会员群提供日益专业化和便捷化的服务。例如,音像制品的在线租赁就是一种可行的服务。这项服务充分发挥了网络的诸多优势,包括传播范围广泛、直达核心消费群、强烈的互动性、感官性强、成本相对低廉等,为顾客提供更为周到的服务。
考虑如下的在线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位会员的在线订单(表2的数据格式示例如下表2),如何对这些DVD进行分配,才能使会员获得最大的满意度?请具体列出前30位会员(即C0001~C0030)分别获得哪些DVD。
3)继续考虑表2,并假设表2中DVD的现有数量全部为0。如果你是网站经营管理人员,你如何决定每种DVD的购买量,以及如何对这些DVD进行分配,才能使一个月内95%的会员得到他想看的DVD,并且满意度最大?
4)如果你是网站经营管理人员,你觉得在DVD的需求预测、购买和分配中还有哪些重要问题值得研究?请明确提出你的问题,并尝试建立相应的数学模型。

表1 对1000个会员调查的部分结果

DVD名称DVD1DVD2DVD3DVD4DVD5
愿意观看的人数200100502510

在这里插入图片描述

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

问题目录

  • question1
    • question1.1
    • question1.2 如果要求保证在三个月内至少95%的会员能够看到该DVD呢?
  • question2
  • question3

question1

question1.1

建立租赁模型:
设有 x x x张DVD,想看会员数为两万,满足度为 50 % 50\% 50%
a % a\% a%个会员租赁两次, ( 1 − a ) % (1-a)\% (1a)%个会员租赁一次
可得: 2 ∗ x ∗ a % + x ∗ ( 1 − a ) % = 20000 ∗ 0.5 2*x*a\% + x*(1-a)\% = 20000 * 0.5 2xa%+x(1a)%=200000.5
根据题目可知 a = 60 a = 60 a=60
解得 x = 6250 x = 6250 x=6250

将模型一般化,设统计中愿意观看的人数为 b b b,满足度为 w w w,则想看会员数为 b / 1000 ∗ 100000 b/1000*100000 b/1000100000
x = ⌈ ( b / 1000 ∗ 100000 ∗ w ) / ( 2 ∗ a % + ( 1 − a % ) ) ⌉ x = \lceil(b/1000*100000 * w)/(2*a\% + (1-a\%))\rceil x=⌈(b/1000100000w)/(2a%+(1a%))⌉

DVD名称DVD1DVD2DVD3DVD4DVD5
愿意观看的人数200100502510
需要准备张数625031251563782313

question1.2 如果要求保证在三个月内至少95%的会员能够看到该DVD呢?

以下模型建立在租两次的会员月初租赁,月末还 , 租一次的会员月初租,下月初还

建立会员重复模型:
设第 i i i个月来的会员数为 y i y_i yi个会员
每个月有 a % a\% a%个会员租赁两次, ( 1 − a ) % (1-a)\% (1a)%个会员租赁一次, a = 60 a = 60 a=60
设会员重复率为 C % C\% C% , C = 50 C=50 C=50
则其中 min ⁡ ( a % y j ∗ C % , a % y i ∗ C % ) \min{(a\%y_{j}*C\%,a\%y_{i}*C\%)} min(a%yjC%,a%yiC%)和是同一个会员
其中 min ⁡ ( ( 1 − a ) % y j ∗ C % , ( 1 − a ) % y i ∗ C % ) \min{((1-a)\%y_{j}*C\%,(1-a)\%y_{i}*C\%)} min((1a)%yjC%,(1a)%yiC%)和是同一个会员

引入question1.1的模型
设统计中愿意观看的人数为 b b b,满足度为 w w w,则想看会员数为 b / 1000 ∗ 100000 b/1000*100000 b/1000100000

设第 i i i个月有 x x x张DVD
a % a\% a%个会员租赁两次, ( 1 − a ) % (1-a)\% (1a)%个会员租赁一次
i i i个月来的满足的会员数为 y i y_i yi个会员
可得: 2 ∗ x i ∗ a % + x i ∗ ( 1 − a ) % = y i 2*x_i*a\% + x_i*(1-a)\%= y_i 2xia%+xi(1a)%=yi

来的会员总数减去重复会员数必须大于等于要满足的会员数
{ y 1 + y 2 + y 3 − min ⁡ ( a % y 2 ∗ C % , a % y 1 ∗ C % ) − min ⁡ ( a % y 3 ∗ C % , a % y 2 ∗ C % ) − min ⁡ ( a % y 1 ∗ C % , a % y 3 ∗ C % ) − min ⁡ ( ( 1 − a ) % y 2 ∗ C % , ( 1 − a ) % y 1 ∗ C % ) − min ⁡ ( ( 1 − a ) % y 3 ∗ C % , ( 1 − a ) % y 2 ∗ C % ) − min ⁡ ( ( 1 − a ) % y 1 ∗ C % , ( 1 − a ) % y 3 ∗ C % ) ≥ b / 1000 ∗ 100000 ∗ w 2 ∗ x i ∗ a % + x i ∗ ( 1 − a ) % = y i , i = 1 , 2 , 3 a n s = m i n ( x 1 + x 2 + x 3 ) \begin{cases} y_1+y_2+y_3 - \min{(a\%y_{2}*C\%,a\%y_{1}*C\%)} - \min{(a\%y_{3}*C\%,a\%y_{2}*C\%)} - \min{(a\%y_{1}*C\%,a\%y_{3}*C\%)} - \min{((1-a)\%y_{2}*C\%,(1-a)\%y_{1}*C\%)} - \min{((1-a)\%y_{3}*C\%,(1-a)\%y_{2}*C\%)} - \min{((1-a)\%y_{1}*C\%,(1-a)\%y_{3}*C\%)} \ge b/1000*100000*w \\ 2*x_i*a\% + x_i*(1-a)\%= y_i , i = 1,2,3 \\ ans = min{(x_1+x_2+x_3)} \end{cases} y1+y2+y3min(a%y2C%,a%y1C%)min(a%y3C%,a%y2C%)min(a%y1C%,a%y3C%)min((1a)%y2C%,(1a)%y1C%)min((1a)%y3C%,(1a)%y2C%)min((1a)%y1C%,(1a)%y3C%)b/1000100000w2xia%+xi(1a)%=yi,i=1,2,3ans=min(x1+x2+x3)

question2

设变量 x i j x_{ij} xij为租赁给第 i i i个会员第 j j j种DVD的情况,设定 x i j = 1 x_{ij}=1 xij=1为租, x i j = 0 x_{ij}=0 xij=0为不租
如果有 n n n个客户, m m m种DVD,客户在线订单数为 o r d e r i j order_{ij} orderij
则单个会员满意量为 b i j = { ( 11 − o r d e r i j ) , o r d e r i j > 0 0 , o r d e r i j = 0 b_{ij} = \begin{cases} (11-order_{ij}) , order_{ij}>0 \\ 0,order_{ij}=0 \end{cases} bij={(11orderij),orderij>00,orderij=0
那么客户总满意量: max ⁡ a n s = ∑ 1 ≤ i ≤ n , 1 ≤ j ≤ m x i j ∗ b i j \max ans = \sum_{1\le i \le n , 1\le j \le m}x_{ij} * b_{ij} maxans=1in,1jmxijbij

要保证DVD数量不能超标
设第 j j j种DVD有 s u m j sum_j sumj个,题目已知 s u m j sum_j sumj
∑ 1 ≤ i ≤ n x i j < = s u m j , j = 1 , 2 , 3.... , m \sum_{1\le i \le n}x_{ij}<=sum_j , j = 1,2,3....,m 1inxij<=sumj,j=1,2,3....,m

每个客户发3张不同的DVD或者不发DVD:
设0/1变量 y i y_i yi
∑ 1 ≤ j ≤ m x i j = y i ∗ 3 , i = 1 , 2 , 3 , . . n \sum_{ 1\le j \le m}x_{ij} = y_i*3 ,i=1,2,3,..n 1jmxij=yi3,i=1,2,3,..n

需要保证每个人都不会收到自己不喜欢的DVD,即客户在线订单数为0时候,不可以租给他。
x i j ≤ o r d e r i j , i = 1 , 2 , 3 , . . n , j = 1 , 2 , 3 , . . m x_{ij} \le order_{ij} ,i=1,2,3,..n , j= 1,2,3,..m xijorderij,i=1,2,3,..n,j=1,2,3,..m

LINGO求解:

sets:
  aa/1..1000/:y;
  bb/1..100/:sum;
  cc(aa,bb):order,x,b;
endsets
data:
order = @ole('D:\homewrok\建模\DVD租赁\B2005Table2.xls','order');
sum = @ole('D:\homewrok\建模\DVD租赁\B2005Table2.xls','dvdsumj');
enddata

@for(cc(i,j):b(i,j)=@if(order(i,j)#gt#0,11-order(i,j),0));
max=@sum(cc(i,j):x(i,j)*b(i,j));
@for(bb(j):@sum(aa(i):x(i,j))<=sum(j));
@for(aa(i):@sum(bb(j):x(i,j))=y(i)*3);
@for(cc(i,j):x(i,j)<=order(i,j));
@for(cc(i,j):@bin(x(i,j)));
@for(aa(i):@bin(y(i)));

注:LINGO读取EXCEL方法
在这里插入图片描述

question3

在满足第二问的模型下:注意: s u m j sum_j sumj是变量(未知)

{ b i j = { ( 11 − o r d e r i j ) , o r d e r i j > 0 0 , o r d e r i j = 0 max ⁡ a n s = ∑ 1 ≤ i ≤ n , 1 ≤ j ≤ m x i j ∗ b i j ∑ 1 ≤ i ≤ n x i j < = s u m j , j = 1 , 2 , 3.... , m ∑ 1 ≤ j ≤ m x i j = y i ∗ 3 , i = 1 , 2 , 3 , . . n x i j ≤ o r d e r i j , i = 1 , 2 , 3 , . . n , j = 1 , 2 , 3 , . . m \begin{cases} b_{ij} = \begin{cases} (11-order_{ij}) , order_{ij}>0 \\ 0,order_{ij}=0 \end{cases}\\ \max ans = \sum_{1\le i \le n , 1\le j \le m}x_{ij} * b_{ij}\\ \sum_{1\le i \le n}x_{ij}<=sum_j , j = 1,2,3....,m\\ \sum_{ 1\le j \le m}x_{ij} = y_i*3 ,i=1,2,3,..n \\ x_{ij} \le order_{ij} ,i=1,2,3,..n , j= 1,2,3,..m \end{cases} bij={(11orderij),orderij>00,orderij=0maxans=1in,1jmxijbij1inxij<=sumj,j=1,2,3....,m1jmxij=yi3,i=1,2,3,..nxijorderij,i=1,2,3,..n,j=1,2,3,..m

因为 s u m j sum_j sumj是变量,我们决定每种DVD的购买量,需要满足DVD总量不变,设已知总量为 n u m s u m num_{sum} numsum
∑ 1 ≤ j ≤ m s u m j = n u m s u m \sum_{1\le j \le m}sum_j = num_{sum} 1jmsumj=numsum

要使一个月内95%的会员得到他想看的DVD,按照第二问的限制下即发三张DVD就是满足该客户,否则不满足
∑ 1 ≤ i ≤ n y i ≥ n ∗ 95 % \sum_{1\le i \le n}y_i\ge n * 95\% 1inyin95%

再加上要使一个月内95%的会员得到他想看的DVD(舍弃)
∑ 1 ≤ i ≤ n ( ∑ 1 ≤ j ≤ m ( o r d e r i j ! = 0 ) = ∑ 1 ≤ j ≤ m x i j ∗ ( o r d e r i j ! = 0 ) ) ≥ n ∗ 95 % \sum_{1\le i \le n}(\sum_{1\le j \le m} (order_{ij}!=0) = \sum_{1\le j \le m}x_{ij}*(order_{ij}!=0))\ge n*95\% 1in(1jm(orderij!=0)=1jmxij(orderij!=0))n95%

LINGO求解:

sets:
  aa/1..1000/:y;
  bb/1..100/:sum,num;
  cc(aa,bb):order,x,b;
endsets
data:
order = @ole('D:\homewrok\建模\DVD租赁\B2005Table2.xls','order');
num = @ole('D:\homewrok\建模\DVD租赁\B2005Table2.xls','dvdsumj');
enddata

@for(cc(i,j):b(i,j)=@if(order(i,j)#gt#0,11-order(i,j),0));
max=@sum(cc(i,j):x(i,j)*b(i,j));
@for(bb(j):@sum(aa(i):x(i,j))<=sum(j));
@for(aa(i):@sum(bb(j):x(i,j))=y(i)*3);
@for(cc(i,j):x(i,j)<=order(i,j));
@sum(bb(j):sum(j))=@sum(bb(j):num(j));
@sum(aa(i):y(i))>=950;
@for(cc(i,j):@bin(x(i,j)));
@for(aa(i):@bin(y(i)));

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/575822.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

A Survey of State of the Art on Rumor Detection in Social Network

Abstract 互联网上充斥着谣言帖子&#xff0c;谣言的传播会给社会和谐稳定带来负面影响&#xff0c;影响网络信息生态的健康发展。谣言的不确定性、时效性、主观性等特点&#xff0c;使其不同于一般的虚假网络信息。社交网络谣言检测是社交网络与信息传播研究领域的热点问题&am…

Linux 调度优先级

Linux中的每个任务都有其优先级。这个优先级的范围从-20到19。优先级越低&#xff08;-20&#xff09;&#xff0c;分配 给任务的CPU时间就越多。默认的优先级是0。 并非所有的任务都需要使用相同的优先级。交互式应用要求快速响应&#xff0c;通过 crontab 运行的后台…

Java本地缓存技术选型(Guava Cache、Caffeine、EhCache)

前言 对一个java开发者而言&#xff0c;提到缓存&#xff0c;第一反应就是Redis。利用这类缓存足以解决大多数的性能问题了&#xff0c;我们也要知道&#xff0c;这种属于remote cache&#xff08;分布式缓存&#xff09;&#xff0c;应用的进程和缓存的进程通常分布在不同的服…

Web3技术解析:区块链在去中心化应用中的角色

引言 在过去几年中&#xff0c;Web3技术已经成为了互联网领域的一个热门话题。作为区块链技术的延伸&#xff0c;Web3不仅仅是数字货币的代名词&#xff0c;更是一个能够为各种应用提供去中心化解决方案的强大工具。本文将深入探讨区块链在Web3去中心化应用中的关键角色&#…

贪心算法在找零问题中的应用

贪心算法在找零问题中的应用 引言a. 贪心算法求解找零问题算法设计算法证明 b. 硬币面额为c的幂时的贪心算法证明算法设计算法证明 c. 设计使贪心算法失效的硬币面额组合d. 通用找零算法设计算法设计算法实现&#xff08;伪代码&#xff09;算法实现&#xff08;C代码&#xff…

【热门话题】PostCSS:现代前端开发中的CSS增强工具

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 PostCSS&#xff1a;现代前端开发中的CSS增强工具一、引言二、PostCSS简介2.1 核…

【树莓派4B】如何点亮树莓派的LED灯

在之前一系列文章中&#xff0c;使用python、行人入侵检测&#xff0c;确没有使用树莓派的硬件。控制引脚进行输出&#xff1a; 如何写python点亮led灯闪烁&#xff0c;我灯接在gpio13,GPIO19,gpio26。我都想闪烁。 你可以使用Python的GPIO库来控制树莓派上的LED灯。首先&…

安卓常用组件(启停活动页面、活动之间传递信息、收发应用广播、操作后台服务)

启停活动页面 Activity的启动和结束 页面跳转可以使用startActivity接口&#xff0c;具体格式为startActivity(new Intent(this, 目标页面.class));。 关闭一个页面可以直接调用finish();方法即可退出页面。 Activity的生命周期 页面在安卓有个新的名字叫活动&#xff0c;因…

【MySQL关系型数据库】基本命令、配置、连接池

目录 MySQL数据库 第一章 1、什么是数据库 2、数据库分类 3、不同数据库的特点 4、MySQL常见命令&#xff1a; 5、MySQL基本语法 第二章 1、MySQL的常见数据类型 1、数值类型 2、字符类型 3、时间日期类型 2、SQL语句分类 1、DDL&#xff08;数据定义语言&#x…

Relu激活函数

概念 神经网络中的每个神经元节点接受上一层神经元的输出值作为本神经元的输入值&#xff0c;并将输入值传递给下一层。在多层神经网络中&#xff0c;上层节点的输出和下层节点的输入之间具有一个函数关系&#xff0c;这个函数称为激活函数。 激活函数做的事情时把神经元的输…

STM32存储左右互搏 SDIO总线FATS文件读写SD/MicroSD/TF卡

STM32存储左右互搏 SDIO总线FATS文件读写SD/MicroSD/TF卡 SD/MicroSD/TF卡是基于FLASH的一种常见非易失存储单元&#xff0c;由接口协议电路和FLASH构成。市面上由不同尺寸和不同容量的卡&#xff0c;手机领域用的TF卡实际就是MicroSD卡&#xff0c;尺寸比SD卡小&#xff0c;而…

SN75107BDR 总线接收器 中文资料_PDF中文资料_参数_引脚图

SN75107BDR 规格信息&#xff1a; 制造商:Texas Instruments 产品种类:总线接收器 RoHS:是 接收机数量:2 Receiver 接收机信号类型:Differential 电源电压-最小:/- 4.75 V 电源电压-最大:/- 5.25 V 工作电源电流:30 mA 最小工作温度:0 C 最大工作温度: 70 C 封装 / 箱…

文旅IP孵化打造抖音宣传推广运营策划方案

【干货资料持续更新&#xff0c;以防走丢】 文旅IP孵化打造抖音宣传推广运营策划方案 部分资料预览 资料部分是网络整理&#xff0c;仅供学习参考。 PPT可编辑&#xff08;完整资料包含以下内容&#xff09; 目录 文旅IP抖音运营方案 1. 项目背景与目标 - 背景&#xff1a…

了解时间复杂度和空间复杂度

在学习数据结构前&#xff0c;我们需要了解时间复杂度和空间复杂度的概念&#xff0c;这能够帮助我们了解数据结构。 算法效率分为时间效率和空间效率 时间复杂度 一个算法的复杂度与其执行的次数成正比。算法中执行基础操作的次数&#xff0c;为算法的时间复杂度。 我们采…

Rust中的函数指针

什么是函数指针 通过函数指针允许我们使用函数作为另一个函数的参数。函数的类型是 fn &#xff08;使用小写的 ”f” &#xff09;以免与 Fn 闭包 trait 相混淆。fn 被称为 函数指针&#xff08;function pointer&#xff09;。指定参数为函数指针的语法类似于闭包。 函数指…

VIO外参标定方法总结

一、前言 VIO外参标定是指相机和IMU之间的转移矩阵的确定&#xff0c;包括33的旋转矩阵和3维平移向量。整体上分为离线标定和在线标定两类方法&#xff0c;这篇文章做一个总结&#xff0c;主要是经典的方法&#xff0c;记录其思想。 二、博文链接 1、离线标定方法 最基本的…

p0级故障-nptd和ntpdate用法

一、背景 绝对真实的大厂线上P0级故障经历分享。 某日凌晨3点&#xff0c;企业微信群变得热闹起来&#xff0c;想都不用想&#xff0c;作为互联网人&#xff0c;特别是运维相关的同学知道&#xff0c;肯定又是出故障了&#xff0c;并且这个故障还很大。 当前晚上我睡着了&#…

【Java EE】 文件IO的使用以及流操作

˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好&#xff0c;我是xiaoxie.希望你看完之后,有不足之处请多多谅解&#xff0c;让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN 如…

【Qt】error LNK2001: 无法解析的外部符号 “__declspec(dllimport)

参考&#xff1a;Qt/VS LNK2019/LNK2001&#xff1a;无法解析的外部符号_qt lnk2001无法解析的外部符号-CSDN博客 微软官方报错文档-链接器工具错误 LNK2019 __declspec error LNK2001: 无法解析的外部符号 "__declspec(dllimport) 原因 以这种为前缀的基本上跟库相关…

Visual Studio安装MFC开发组件

MFC由于比较古老了&#xff0c;Visual Studio默认没有这个开发组件。最近由于一些原因&#xff0c;需要使用这个库&#xff0c;这就需要另外安装。 参考了网上的一些资料&#xff0c;根据实际使用&#xff0c;其实很多步骤不是必须的。 https://zhuanlan.zhihu.com/p/68117276…