MATLAB实现TopSis优劣解距离法——分析《世界征服者3》将领排名

news2024/11/17 15:59:14

问题背景

世界征服者3游戏中有150+的将领角色,每个将领都有自己的兵种优势、军阶、技能等不同的属性,如何教务客观、综合全面地选拔出其中排名前50的将领?基于TOPSIS优劣解距离法以及聚类算法,给出大家较为客观的排名。


一.问题描述

世界征服者3游戏中,共有来自多个国家超过150位将领。游戏以全世界为地图进行战争游戏,在占领城市的过程中消灭敌军、支援友军,共有步兵、坦克、炮兵、空军、海军五大军种,此外不同将领的军阶、指挥部队的机动能力也不尽相同,将领们的技能也各有千秋。那么如何可以得到一个比较客观综合的排名顺序呢?

二.模型建立

考虑到在多指标中选择最优方案,简单做法是AHP层次分析法,但该方法过于主观,在较复杂的影响因素之下,不利于得到客观公正的结果。因此此处选择较为公平合理、且能充分利用原始数据信息的优劣解距离法——TOPSIS,来计算较为客观公正的将领得分。在将领数据已知的情况下,我们使用TOPSIS优劣解距离法可以更为客观的给出排名。

三.TOPSIS计算将领综合得分

1.确定评价将领优劣的指标:

评价一个将领强悍与否,与属性加成、技能、HP值等很多因素有关,具体可以体现在以下层次图中:

综合上图,由于指标个数较多,且之间的相关性错综复杂,因此在计算大致得分时,逐一考虑并不现实,所用在第一步中大致计算得分的过程中,选择如下几个指标:

  • 对于兵种属性值,由于兵种属性太多,且不同的兵种之间的优劣无法直接比较,我们在这里去兵种属性的最高值、总和两个指标来衡量,保证按照复合属性排名的准确性。
  • 对于两个综合能力,则直接作为影响指标考虑。
  • 对于技能,直接按照技能等级之和来进行第一步考虑。

故,在本次TOPSIS方法中,影响指标有如下5项:

指标

兵种最高属性点数

兵种属性总和

行军能力

军阶

技能点数之和

全部将领的指数在附录部分,此处仅给出一部分数据,全部数据在附录之中。(直接按照国籍划分)

ID

姓名

国籍

最强兵种

最强属性值

属性总和

行军能力

军阶

技能点数和

1

蒙哥马利

英国

装甲

4

14

3

280

14

2

道丁

英国

空军

5

8

1

230

9

3

亚历山大

英国

火炮

4

9

0

200

6

4

斯利姆

英国

步兵

4

10

2

170

8

5

坎宁安

英国

海军

5

10

0

140

8

6

蒙巴顿

英国

海军

3

8

2

170

7

7

韦维尔

英国

装甲

3

7

2

120

5

2.正向化处理

结合TOPSIS的思想,我们首先要对指标类型进行判断,根据分析不难得知,上述6个指标均为极大型指标(效益型指标),即,数值本身越大则代表越好

故此处不需要对指标进行正向化处理。

3.标准化处理

此外,考虑到6个指标的单位不尽相同,此处采用标准化处理的方式,去除量纲的影响。

具体过程如下:

 

此处通过MATLAB进行计算,代码在附录中,结果保留5位小数,得到的数据结果在附件中,此处不一一给出。

4.计算得分

完成正向化和标准化处理后,通过MATLAB对数据矩阵进行得分计算。

通过上述方法,计算出155位将领的得分,并进行全排名,结果如下(仅展示前10名):

排名

ID

姓名

国籍

最强兵种

1

24

曼施坦因

德国

装甲

2

115

艾森豪威尔

美国

海军

3

75

朱可夫

苏联

火炮

4

116

麦克阿瑟

美国

步兵

5

117

巴顿

美国

装甲

6

138

山下奉文

日本

步兵

7

1

蒙哥马利

英国

装甲

8

26

隆美尔

德国

装甲

9

25

古德里安

德国

装甲

10

27

邓尼茨

德国

海军

至此,通过TOPSIS计算将领的大致排名步骤均已完成。

5.局限性

仅仅用TOPSIS处理150位将领的排名还非常牵强,考虑到实际影响因素之多,靠TOPSIS中的六种指标给出的150+的全排名非常具有局限性。

四.实现代码

%注意:老问题,直接导入的数据总是table型
%而并非Double型的矩阵
X1=[4,14,3,280,14;5,8,1,230,9;4,9,0,200,6;4,10,2,170,8;5,10,0,140,8;3,8,2,170,7;3,7,2,120,5;3,6,1,80,6;4,7,1,80,5;3,7,1,100,4;3,4,0,35,8;2,5,1,50,4;3,6,1,50,5;2,5,1,65,3;2,6,1,35,3;3,5,2,50,3;2,7,0,230,7;3,9,2,140,5;3,9,0,200,6;2,7,1,120,6;2,5,1,140,5;3,7,1,80,2;2,5,1,35,3;5,16,5,280,18;5,11,4,170,17;5,13,3,200,17;5,10,4,200,17;4,12,3,140,13;5,13,2,230,7;5,12,2,280,11;4,13,1,170,11;5,10,1,140,10;4,10,1,200,7;4,10,2,120,10;4,11,2,140,7;4,10,3,100,4;4,8,2,100,10;4,7,1,120,8;4,9,1,80,5;3,7,2,65,5;3,6,1,100,7;2,6,1,50,6;3,5,2,65,3;2,6,2,120,2;2,6,1,50,3;4,7,0,65,2;2,3,0,35,6;3,3,0,35,4;2,4,1,80,3;4,11,0,230,8;4,6,2,170,8;4,7,2,100,8;3,9,1,80,6;2,7,1,35,2;2,6,0,35,2;3,4,0,35,4;5,9,2,200,12;2,8,0,170,9;2,4,0,120,4;3,8,0,65,4;3,4,1,50,3;2,5,0,65,7;3,5,0,80,4;2,3,2,35,4;3,5,1,80,1;2,5,0,50,4;2,6,0,35,2;2,3,0,50,4;2,3,0,35,4;2,6,0,65,3;2,4,0,65,2;2,4,0,50,2;2,4,0,35,2;1,3,0,35,3;5,17,3,280,19;4,11,4,280,11;5,10,3,170,14;4,9,5,230,7;4,10,2,200,10;5,10,1,200,10;5,8,1,120,11;5,7,1,120,9;3,9,2,140,7;3,5,4,100,6;3,9,2,120,5;3,6,1,50,5;3,7,2,80,3;3,7,1,65,3;3,7,0,65,4;3,6,1,35,3;2,5,1,35,3;3,4,0,35,3;1,3,0,35,2;2,2,1,35,2;5,9,1,200,7;3,7,4,170,10;3,7,3,140,11;2,7,1,230,12;3,7,4,170,8;3,10,4,120,9;4,7,3,120,11;3,5,1,230,8;4,8,3,100,8;4,9,1,100,6;3,6,3,80,5;3,6,3,50,2;2,4,2,65,5;2,4,0,35,4;2,2,2,35,2;2,5,0,80,5;3,4,1,65,3;2,4,2,50,2;2,5,1,35,2;1,4,0,36,2;5,24,3,280,19;4,14,5,230,14;5,15,3,200,18;5,12,2,280,16;4,13,2,200,13;5,7,4,230,11;4,15,1,170,11;5,11,3,140,9;4,10,2,100,7;5,10,2,120,6;3,6,4,80,5;4,9,1,100,6;4,5,2,120,6;4,7,3,65,3;3,9,1,65,8;3,7,2,140,4;2,3,2,80,5;2,5,1,35,5;3,7,1,65,3;2,4,1,35,5;2,5,1,35,3;2,4,0,35,5;2,4,0,50,3;4,12,5,200,14;5,12,3,230,12;5,13,1,280,9;5,11,1,120,12;4,10,2,140,8;4,11,1,170,8;4,12,2,140,10;3,9,1,80,9;3,8,0,100,5;3,9,2,100,5;4,8,1,100,4;3,6,0,65,4;2,5,2,50,2;3,6,0,35,2;2,4,2,35,2;4,2,1,35,3;2,3,0,35,3;2,3,1,50,2];
Z = X1 ./ repmat(sum(X1.*X1) .^ 0.5, 155, 1);
disp('标准化矩阵 Z = ');
disp(Z);
D_P = sum(((Z - repmat(max(Z),155,1)) .^ 2 ),2) .^ 0.5;   % D+ 与最大值的距离向量
D_N = sum(((Z - repmat(min(Z),155,1)) .^ 2 ),2) .^ 0.5;   % D- 与最小值的距离向量
S = D_N ./ (D_P+D_N);    % 未归一化的得分
disp('最后的得分为:')
stand_S = S / sum(S);
disp(stand_S);

写在最后:结果同样具有主观性,但比AHP降低很多。本贴旨在说明Topsis的原理,大家可以去下载游戏自己试着分析一下排名~

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用树莓派搭建个人网站,并发布到外网可访问:实用步骤解析

文章目录 前言使用 Raspberry Pi Imager 安装 Raspberry Pi OS测试 web 站点安装静态样例站点 将web站点发布到公网安装 Cpolarcpolar进行token认证生成cpolar随机域名网址生成cpolar二级子域名将参数保存到cpolar配置文件中测试修改后配置文件配置cpolar服务开机自启动 前言 …

Day_81-87 CNN卷积神经网络

目录 一. CNN卷积神经网络与传统神经网络的不同 1. 模型图 2. 参数分布情况 3. 卷积神经网络和传统神经网络的层次结构 4. 传统神经网络的缺点: 二. CNN的基本操作 1. 卷积 2. 池化 三. CNN实现过程 1. 算法流程图 2. 输入层 3. 卷积层 4. 激活层 5. 池化层 6. 全连…

LINE自动回复:快速回复提升客服效率

2023年,LINE在其4个主要市场:对话、日本、台湾和泰国拥有约1.78亿月活跃用户。 LINE不仅是一个通讯软件,更提供广泛的服务,包括语音和视讯通话、群组、发布社交帖子及商务功能。近年来,越来越多的企业在客户服务中使用…

搭建花店小程序商城的详细步骤

首先,你需要找一个专业成熟的小程序商城制作平台。一个优秀的小程序商城制作平台应该具备丰富的行业模板、简便的设计工具和强大的功能模块。在这里,我们推荐乔拓云平台,其后台管理页面友好,设计搭建页面功能齐全,且针…

画流程图大家都用哪些工具?

流程图工具是一个用于创建图表和图形功能的应用程序。这些流程图工具允许团队成员在绘图软件上合作,制作的流程图可以提供清晰的视觉效果、即时沟通、有效的协调和有效的分析,从而提高设计的工作效率。下面将推荐6个流程图工具,我相信总有一个…

C高级第2天

写一个1.sh脚本,将以下内容放到脚本中: 在家目录下创建目录文件,dir 在dir下创建dir1和dir2 把当前目录下的所有文件拷贝到dir1中, 把当前目录下的所有脚本文件拷贝到dir2中 把dir2打包并压缩为dir2.tar.xz 再把dir2.tar.xz…

Vue的props配置项

简介:Vue中的组件模板是可以复用的,但是模板中的数据是可以改变的。props配置项用于解决组件迁移复用时接受和保存传递给组件的数据的问题。 1.如何给组件传递数据? 答:按照key:value的形式进行传递。 2.如何保存传递给组件的数…

Vulnhub: Masashi: 1靶机

kali:192.168.111.111 靶机:192.168.111.236 信息收集 端口扫描 nmap -A -sC -v -sV -T5 -p- --scripthttp-enum 192.168.111.236查看80端口的robots.txt提示三个文件 snmpwalk.txt内容,tftp服务在1337端口 sshfolder.txt内容&#xff0c…

鞋店小程序商城开发指南

网站制作教程分享!新手也能学会的鞋店自建网站教程 在开发鞋店小程序商城时,您可以按照以下步骤进行操作: 1. 浏览器搜索【乔拓云】注册登录账号进入操作后台,找到并点击【商城】中的【去管理】进入商城的后台管理页面。接着&…

ABAP BP维护客户cl_md_bp_maintain=>maintain

ps_head结构如下 下面是封装好的form示例 *&---------------------------------------------------------------------* *& Form frm_modify_customer *&---------------------------------------------------------------------* *& text *&--------…

异步编程 - 07 基于JDK中的Future实现异步编程(下)_当Stream遇见CompletableFuture

文章目录 JDK8 StreamStream遇见CompletableFuture小结 JDK8 Stream JDK8中提供了流式对数据进行处理的功能,它的出现允许我们以声明式方式对数据集合进行处理。所谓声明式是相对于我们平时所用的命令式编程来说的,使用声明式编程会让我们对业务的表达更…

意向客户的信息获取到底是怎样的,快来get一下

客户信息获取技术真的可以为企业提供精准客源吗?这个渠道到底安不安全,技术到底成不成熟?效果到底如何?下面简单的和大家分析一下。 客户信息获取技术是怎样的 手机采集引流方面,上量不精准,精准不上量的说…

《Web安全基础》05. XSS · CSRF · SSRF · RCE

web 1:XSS1.1:简介1.2:防护与绕过1.2.1:HttpOnly1.2.2:WAF 绕过 1.3:相关资源 2:CSRF3:SSRF4:RCE 本系列侧重方法论,各工具只是实现目标的载体。 命令与工具只…

什么人群适合考PMP?

PMP是不受行业限制的,只要工作涉及到管理,或者想要往管理方面发展,或者想提升自身的能力,那么考PMP绝对是有必要的。像IT、电子、通信、工程、金融、房产、石化、数据管理、军工、航天等几乎涵盖所有。各行各业都会用的到。 PMP证…

爬虫逆向实战(28)-某税网第一步登录(sm2、sm4、HMacSHA256)

一、数据接口分析 主页地址:某税网 1、抓包 通过抓包可以发现登录接口是factorAccountLogin 2、判断是否有加密参数 请求参数是否加密? 通过查看载荷模块可以发现有一个datagram 和 一个signature加密参数 请求头是否加密? 通过查看“标…

nvm管理(切换)node版本,方便vue2,vue3+ts开发

使用nvm切换node版本 1. 完全删除之前的node及npm(清理干净Node: 应用程序,缓存的文件,环境变量 ) 2. 使用管理员身份安装nvm,下载如下 3. 安装完nvm之后找到nvm下载路径对应的文件 4. 使用管理员身份打开cmd&#xff…

中缀表达式转后缀表达式(逆波兰式)

方法一:加括号法示例 步骤: 1、根据运算符的优先级对中缀表达式加括号(有几个运算符就有几对括号,原有的括号不用加) 2、将运算符移到对应括号后面 3、去掉所有括号,即为后缀表达式 以下面的中缀表达式为…

2023 年全国大学生数学建模A题目-定日镜场的优化设计

A题目是个典型的优化问题 大致思路(非完整) 先说题目的模型,有点类似一个人拿着镜子,这个镜子最终要映射到某个点上,有点类似下面这个玩意儿,只不过是个大型的而已 规划的吸收塔类似这个烧水壶,…

纷享销客华为云 | 聚力前行 共创云上新价值

近日,由华为云联合上万家生态伙伴举行的“第二届828 B2B企业节”在深圳盛大开幕,纷享销客作为华为云的战略合作伙伴出席了本次企业节的开幕,并斩获“华为云创新中心优秀制造解决方案伙伴”等多个奖项。纷享销客联合创始人 & 经营中心副总…

CTFHUB ICS(3)

1.S7协议恶意攻击分析 因为是plc的关机,我们直接过滤s7comm协议的内容 然后是提供info的排序我们可以根据这个进行分析 在plc中ack_data是对于job的响应这里ack_data返回了plc的stop即题目中描述的plc关机,而关机的发出属于job的信息所以我们去查找job里…