2018年第七届数学建模国际赛小美赛D题速度扼杀爱情解题全过程文档及程序

本文主要是介绍2018年第七届数学建模国际赛小美赛D题速度扼杀爱情解题全过程文档及程序,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

2018年第七届数学建模国际赛小美赛

D题 速度扼杀爱情

原题再现:

  在网上约会的时代,有比鱼更多的浪漫选择,好吧,你知道的。例如,在命名恰当的网站Plenty of Fish上,你可以仔细查看数百或数千名潜在伴侣的档案,然后再决定联系哪一个。这种不受约束的选择意味着更容易找到真爱——或者说很多约会者都相信这一点。假设你的选择越多,你就越有可能找到真正适合你的人。然而,许多约会者发现,不那么浪漫的选择会带来一流的结果,而不会带来所有的焦虑。EHarmony是美国最大的交友网站之一,它让客户填写一份详细的兼容性调查,然后向他们发送数量有限的匹配信息,通常一次发送几到十几条左右。婚姻的成功率相对较高。研究发现,速配者通常根据外表来选择伴侣。当有更少的选择时,约会者可能会花时间反思一个人更深层次的品质。

  斯沃斯莫尔学院多温·卡特赖特社会理论和社会行动教授巴里·施瓦茨多年来一直认为,不断限制我们的选择会带来更好的结果。他认为过多的选择压倒了我们,让我们不快乐——他称之为选择悖论。施瓦茨说,无尽的选择与其说是令人满意,不如说是令人乏味。在一项被称为“果酱研究”的经典实验中,杂货店购物者扫描24种不同的美食果酱的可能性比只看6种果酱的购物者低。从更广泛的选择中选择的购物者也对他们购买的果酱感到不满意。施瓦茨解释说,问题是,当你有更多的选择时,你往往会给自己施加更大的压力,让自己做出完美的选择——毕竟,当选择并不完美时,你会感到更失望。施瓦茨说:“即使你选择得很好,你最终也会被否定。”。“你确信,即使你做得很好,你也应该做得更好。”根据心理学家Daniel Kahneman和Amos Tversky的研究,Schwartz认为,当你面临无数选择时,做出错误选择的预期损失抵消了你对更多选择前景的喜悦。

  如果你坚持从一大堆人中挑选一个人,你不仅会不那么满意,而且可能会做出更糟糕的选择。在台湾大学的一项研究中,当在线约会者有更多的搜索选项时,他们花在考虑每种可能性上的时间更少,而且发现更难区分好的前景和坏的前景。研究人员解释说,过于稀疏地拉伸你的认知能力,往往会在无关的细节上束缚你,并分散你对你认为最重要的标准的注意力。这表明,为了评估重要的品质——对大多数人来说,这些品质包括伴侣的诚实、可靠性和幽默感——你需要更深入地寻找,而不是更广泛地寻找。

  这是否意味着你应该选择由eHarmony等供应商提供的专家指导的定制飞行方式?相当多的约会者非常欣赏精心策划的选择,愿意为此支付额外费用。假设你是一个在线约会网站的伴侣。您应该完成以下任务:

  1.创建一个客观的定量算法或一组算法,通过几个选项完成在线约会匹配。

  2.使用您的算法来制定您的“前20名推荐约会者”列表。在约会时,对一个理想大小的选择集做出更合适的估计——一个足够大的选择集,包括多样性和深度,但又足够小,你可以公平地衡量每个潜在客户的潜力,而不会绊倒你大脑的过载开关。

  3.给出用户需要为您的网站填写的信息表格的设计。研究网上约会的形式设计与成功率之间的关系。

  4.写一页非技术性的新闻稿,描述你的新算法、结果和网站。

整体求解过程概述(摘要)

  随着社会经济的快速发展,“剩男剩女”现象越来越普遍。出现了各种各样的社交网站,比如《鱼儿丰收》。这是对大量鱼类的研究。

  对于问题一,对各类用户自身属性的数据进行标准化,然后采用改进的KNN算法对选项进行统计分析,得到相对距离。使用属性值相关距离公式计算距离的最小值。距离的最小项是满足条件的匹配选项。利用满意度矩阵比较两个匹配方的满意度,得到匹配的候选对象。

  对于问题二,利用层次分析法建立层次结构,构造一对比较矩阵。然后,进行分层单排序、总体分层排序和一致性检查。然后采用基于用户相似度的协同过滤推荐算法。对用户属性相似度和交互相似度进行拟合。确定不同权重,分值越高,推荐前20名最佳日期。

  对于问题三,建立了成功率的数学模型,利用欧氏距离定义了用户自身条件与配偶要求之间的相似度。然后将每个用户视为一个点,转化为最小权二分法问题。男女约会者配对,根据欧氏距离计算男女约会者之间的相似度。

  对于问题4,根据问题1、2和3中使用的KNN算法、AHP和推荐算法,我们编写了一份非技术性新闻稿。

  改进的KNN算法,考虑了属性值对类别判断的重要性以及不同属性值之间的相关性,提高了分类的准确性。分别采用层次分析法和协同推荐算法,减少了主观判断带来的误差,提高了结果的准确性。

模型假设:

  假设获得的数据真实可靠;
  假设双方根据自己的情况决定配偶的要求。;
  用“年龄”、“身高”、“婚姻状况”、“受教育程度”、“单位类型”、“收入”、“住房状况”、“面积”、“外貌”表示男女的优秀程度;

假设所有用户都是异性恋者。

问题分析:

  问题1分析

  对于问题一,完成网上交友匹配多个选项,首先设置合适的选项,如年龄、身高、收入、婚姻状况、住房状况等,利用改进的KNN算法对用户选择的选项进行分析,得到相同选项之间的相对距离。距离的最小值是匹配选项。然后利用满意度矩阵比较匹配各方的满意度,得到匹配的候选对象。

  问题二分析

  为了找出满足某一用户需求的前20名最佳约会者,利用层次分析法(AHP)建立层次结构,构造成对比较矩阵,检验层次单序及其一致性,并进行总层次排序及其一致性检验。然后从100名女性用户中随机抽取1名,采用层次分析法(AHP)对前20名最佳数据进行求解。然后,利用基于用户相似度的协同过滤推荐算法,介绍了用户相似度和用户交互相似度的概念和用途。最后,从100名女性用户中随机抽取一名用户。使用推荐算法推荐排名前20%的优秀男性用户。

  问题三分析

  首先,分析用户应填写哪些基本信息,使网络背景能够最大限度地了解用户,并能够达到其前20名的合适日期候选人。因此,主要问题是选择合适的信息选项,使信息的填充和配对成功率达到最大。将一些数据进行量化,将一些变量之间的值差别很大的相应变量进行标准化处理,结合男女用户的情况,利用欧氏距离确定两者之间的相互满意度。对应度越大,匹配越大,成功率越高。越是成功的日期,越是成功的时候,两者之间的差异不大。因此,我们可以将满意度定义为男性约会者对女性条件的要求程度,女性约会者与男性自我之间的相似程度,如果两者之间的相似性越大,满意度越高。那么成功的几率就越高。

  问题四分析

  根据前三个问题中使用的KNN算法和满意度矩阵,利用分析结果和算法的实用性和通用性编写新闻稿。

模型的建立与求解整体论文缩略图

在这里插入图片描述
在这里插入图片描述

全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可

部分程序代码:(代码和文档not free)

Annex Ⅰ KNN algorithm based on attribute value transformation
clear;
clc;
K=3;
trainData = [1.0,2.0;1.2,0.1;0.1,1.4;0.3,3.5];
trainClass = [1,1,2,2];
testData = [0.5,2.3];[N,M]=size(trainData);
dist=zeros(N,1);
for i=1Ndist(i,)=norm(trainData(i,)-testData);
end
[Y,I]=sort(dist,1);   
trainClass=trainClass(I);
classNum=length(unique(trainClass));
labels=zeros(1,classNum);
for i=1Kj=trainClass(i);labels(j)=labels(j)+1;
end
[~,idx]=max(labels);
fprintf('0 %dn',idx);Test
KNN.mfunction [ idx ] = KNN( trainData,trainClass,testData,K )
%UNTITLED Summary of this function goes here
%   Detailed explanation goes here[N,M]=size(trainData);
dist=zeros(N,1);
for i=1Ndist(i,)=norm(trainData(i,)-testData);
end
[Y,I]=sort(dist,1);   
K=min(K,length(Y));
labels=trainClass(I);
%{
classNum=length(unique(trainClass));
labels=zeros(1,classNum);
for i=1Kj=trainClass(i);labels(j)=labels(j)+1;
end
[~,idx]=max(labels);
%}
idx=mode(labels(1K));
fprintf('该测试数据属于类 %d  ',idx);
end
KnnDataTest.m
clear;
clc;
X=load('datingTestSet2.txt');
ratio=0.1;
[N,M]=size(X);
K=4;
trainData=X(,13);
trainClass=X(,4);
num_test=Nratio;
newData=(oldData-minValue)(maxValue-minValue);
minValue=min(trainData);
maxValue=max(trainData);
trainData=(trainData-repmat(minValue,N,1)).(repmat(maxValue-minValue,N,1));
error=0;
for i=1num_testidx=KNN(trainData(num_test+1N,),trainClass(num_test+1N,),trainData(i,),K);fprintf('该测试数据的真实类为:%dn',trainClass(i,));if idx~=trainClass(i,);error=error+1;end
end
Annex II: program for finding the maximum eigenvalue of the discriminant matrix:
A =1.0000    0.3333    1.0000    1.0000    0.2000    1.0000    0.3333    4.00000.3333    1.0000    2.0000    1.0000    0.2000    2.0000    1.0000    1.00001.0000    2.0000    1.0000    0.3333    1.0000    0.1429    1.0000    2.00001.0000    1.0000    0.3333    1.0000    0.3333    1.0000    0.2000    1.00000.2000    0.2000    1.0000    0.3333    1.0000    1.0000    1.0000    0.20001.0000    2.0000    0.1429    1.0000    1.0000    1.0000    1.0000    1.00000.3333    1.0000    1.0000    0.2000    1.0000    1.0000    1.0000    0.33334.0000    1.0000    2.0000    1.0000    0.2000    1.0000    0.3333    1.0000>>  [x,y]=eig(A);
eigenvalue=diag(y);
lamda=max(eigenvalue)lamda =8.1841
y_lamda = x(:, 1) >> y_lamda =0.65320.03440.19610.00450.03800.01550.04380.7281
全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可

这篇关于2018年第七届数学建模国际赛小美赛D题速度扼杀爱情解题全过程文档及程序的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/512700

相关文章

python获取指定名字的程序的文件路径的两种方法

《python获取指定名字的程序的文件路径的两种方法》本文主要介绍了python获取指定名字的程序的文件路径的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 最近在做项目,需要用到给定一个程序名字就可以自动获取到这个程序在Windows系统下的绝对路径,以下

C#实现一键批量合并PDF文档

《C#实现一键批量合并PDF文档》这篇文章主要为大家详细介绍了如何使用C#实现一键批量合并PDF文档功能,文中的示例代码简洁易懂,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言效果展示功能实现1、添加文件2、文件分组(书签)3、定义页码范围4、自定义显示5、定义页面尺寸6、PDF批量合并7、其他方法

Java实现在Word文档中添加文本水印和图片水印的操作指南

《Java实现在Word文档中添加文本水印和图片水印的操作指南》在当今数字时代,文档的自动化处理与安全防护变得尤为重要,无论是为了保护版权、推广品牌,还是为了在文档中加入特定的标识,为Word文档添加... 目录引言Spire.Doc for Java:高效Word文档处理的利器代码实战:使用Java为Wo

使用Python实现Word文档的自动化对比方案

《使用Python实现Word文档的自动化对比方案》我们经常需要比较两个Word文档的版本差异,无论是合同修订、论文修改还是代码文档更新,人工比对不仅效率低下,还容易遗漏关键改动,下面通过一个实际案例... 目录引言一、使用python-docx库解析文档结构二、使用difflib进行差异比对三、高级对比方

Python自动化处理PDF文档的操作完整指南

《Python自动化处理PDF文档的操作完整指南》在办公自动化中,PDF文档处理是一项常见需求,本文将介绍如何使用Python实现PDF文档的自动化处理,感兴趣的小伙伴可以跟随小编一起学习一下... 目录使用pymupdf读写PDF文件基本概念安装pymupdf提取文本内容提取图像添加水印使用pdfplum

Python从Word文档中提取图片并生成PPT的操作代码

《Python从Word文档中提取图片并生成PPT的操作代码》在日常办公场景中,我们经常需要从Word文档中提取图片,并将这些图片整理到PowerPoint幻灯片中,手动完成这一任务既耗时又容易出错,... 目录引言背景与需求解决方案概述代码解析代码核心逻辑说明总结引言在日常办公场景中,我们经常需要从 W

linux系统上安装JDK8全过程

《linux系统上安装JDK8全过程》文章介绍安装JDK的必要性及Linux下JDK8的安装步骤,包括卸载旧版本、下载解压、配置环境变量等,强调开发需JDK,运行可选JRE,现JDK已集成JRE... 目录为什么要安装jdk?1.查看linux系统是否有自带的jdk:2.下载jdk压缩包2.解压3.配置环境

Redis实现分布式锁全过程

《Redis实现分布式锁全过程》文章介绍Redis实现分布式锁的方法,包括使用SETNX和EXPIRE命令确保互斥性与防死锁,Redisson客户端提供的便捷接口,以及Redlock算法通过多节点共识... 目录Redis实现分布式锁1. 分布式锁的基本原理2. 使用 Redis 实现分布式锁2.1 获取锁

Spring-DI依赖注入全过程

《Spring-DI依赖注入全过程》SpringDI是核心特性,通过容器管理依赖注入,降低耦合度,实现方式包括组件扫描、构造器/设值/字段注入、自动装配及作用域配置,支持灵活的依赖管理与生命周期控制,... 目录1. 什么是Spring DI?2.Spring如何做的DI3.总结1. 什么是Spring D

C#高效实现Word文档内容查找与替换的6种方法

《C#高效实现Word文档内容查找与替换的6种方法》在日常文档处理工作中,尤其是面对大型Word文档时,手动查找、替换文本往往既耗时又容易出错,本文整理了C#查找与替换Word内容的6种方法,大家可以... 目录环境准备方法一:查找文本并替换为新文本方法二:使用正则表达式查找并替换文本方法三:将文本替换为图