基于Topsis算法的疫情监控系统的应用研究

2021-04-04 10:48张晓洁李晶邓紫嫣林巧仪王鑫
现代信息科技 2021年18期
关键词:分流疫情

张晓洁 李晶 邓紫嫣 林巧仪 王鑫

摘  要:为评估各个地区的出行风险度,选取周边的风险百分比以及确诊人数等多种数据为影响因素,采用Topsis算法根据出行风险百分比对不同地区进行排序。疫情的爆发将疫苗接种推向高潮,为降低人流密度,减少人员交叉接触,对于不同的活动实施分流计划。结合活动人数、时间段以及活动类型等各项数据,运用Topsis算法对不同的活动进行排序,提高活动的效率,实现资源利用率最大化,从而促进各类活动的有序进行。

关键词:Topsis算法;疫情;分流

中图分类号:TP311 文献标识码:A 文章编号:2096-4706(2021)18-0017-04

Abstract: In order to evaluate the travel risk degree of each region, a variety of data such as the surrounding risk percentage and the number of confirmed patients are selected as influencing factors, and Topsis algorithm is used to sort different regions according to the travel risk percentage. The outbreak of the epidemic pushed vaccination to a climax. In order to reduce the flow density and reduce personnel cross contact, split-flow plans are implemented for different activities. Combined with the data of the people number of activities, time period and type of activities, Topsis algorithm is used to sort different activities, improves the efficiency of activities and maximizes the utilization of resources, so as to promote the orderly progress of various activities.

Keywords: Topsis algorithm; epidemic situation; split-flow

0  引  言

當前,全球疫情形势依然非常严峻,国外疫情持续蔓延,国内疫情防控形势严峻复杂,随着季节因素叠加,容易引起疫情传播扩散,国内出现多点散发本土疫情,呈快速发展态势。“防疫千万条,接种疫苗第一条”,在当前形势下,全民核酸以及接种疫苗已经成了常事,排队接种疫苗或者进行集体活动的时候可能导致交叉感染,疫测小程序运用复杂的排队算法,通过用户预约的时间和地点,为用户进行排号,同时,用户出行时,可以查看沿路地区的出行风险百分比以及目的地出行风险百分比。

1  项目介绍

在疫情暴发的形势下,人们对接种疫苗以及核酸检测的需求不断增加。为解决群众密集型交叉接触、通宵“抢苗”现象等问题,我们团队通过对Topsis算法的研究,对不同地区周边的风险度以及周边确诊人数等多种指标进行分析,推出了逼近于理想值的排序方法的疫情监控小程序——疫测。

用户可以通过该小程序进行信息的录入以及活动的申请,系统会根据多项数据运用Topsis算法对不同活动类型、不同时间段进行人员的分流,从而达到降低群众交叉接触的结果。我们为用户提供一个线上咨询有关疫情方面的法律、心理线上咨询,在抗疫的同时,保障人民的权益与心理健康。结合周边风险百分比以及确诊人数等数据通过Topsis算法给出用户接近理想值的出行风险百分比,当出行风险百分比达到特定值时,系统会给出预警提醒。

本产品是基于Topsis算法下的疫情监控小程序——疫测,该小程序通过Topsis算法对活动人员进行排序,将活动人员进行分流,有效地控制了人群聚集,降低群众的交叉接触率。在用户进行最新信息录入后,拥有活动申请的权力,也可以在本产品上快速对周边疫情的状况进行查询。通过实时定位,系统将根据人流量、当前地区的确诊人数等多种数据为用户提供半径三公里范围内的出行风险百分比,当百分比达到特定值,系统将给出预警提示。

2  Topsis排序算法设计

2.1  正则表达式爬取数据

由于大部分网站的疫情部分数据是可以在源代码中查找到,检查中是渲染后的代码,但是要requests爬取网站访问而得到的都是源代码,需要右键查看源代码才能看到爬取的完整数据。因此,xpath和BeautifulSoup都不适合操作源代码中json格式的数据,所以决定选用正则表达式来爬取数据。

通过导入Python自带的re模块,来爬取城市名称、现存确诊、累计确诊、治愈、死亡、人口发布、温度、湿度、人流量、疫苗接种数量等数据,再将获取的数据通过OpenBCI_MATLAB将数据流实时导入给MATLAB进行处理,实现MATLAB实时读取数据流。

2.2  Topsis算法原理简述

2.2.1  原始矩阵正向化

假设由Python所爬取的所有影响疫情因素作为评价对象,通过这些评价对象来对疫情情况的高低进行不同的防控措施,即有n个评价对象,每个评价对象又含有m个参数指标。将n个评价对象的参数指标排列得到n×m矩阵。

2.2.2  指标正向化处理

常见的四种指标如表1所示(即评价对象的m个参数指标所属类型)。

为了后续处理方便,更好的计算疫情较为严重的地区,更方便疫苗接种工作的安排,需要将所有类型的指标转换为极大值指标,且需要将所有指标类型统一转换为各自对应的正向指标。

2.2.3  矩阵标准化

为了消除指标不同量纲的影响,需要对矩阵进行标准化后得到新的矩阵记为a,a中的每一个元素的计算方案为:

2.2.4  结果归一化

最后,我们可以计算每个参数对应的最大最小值,而最小值结合之前正向化的步骤可以得知,是一个零向量。则:

由于已将四种类型的指标转换为极大型指标,可以认为,每个参数存在的最大值就是最优解,每个参数存在的最小值就是最劣解。采用歐式距离计算每个方案在各个因素下的最优距离与最劣距离,便可以定义出第 个方案的优劣值,从而选取最优方案:

3  项目实施核心技术设计

3.1  接口安全加密设计

登录的时候采用统一网关认证,首先判断请求是否为需要授权的请求,如果是则进行鉴权,具有此权限,则放行请求,如果不具有此权限或者没有请求密钥则返回统一的失败结果,流程如图1所示,加密框架采用oauth2,加密载体采用JWT,他们二者结合是最适用于加密,鉴权无状态的api请求:

AuthorizationServerConfigurerAdapter.java

@AllArgsConstructor

@Configuration

@EnableAuthorizationServer

public class Oauth2ServerConfig extends AuthorizationServerConfigurerAdapter {

private final PasswordEncoder passwordEncoder;

private final UserServiceImpl userDetailsService;

private final AuthenticationManager authentication Manager;

private final JwtTokenEnhancer jwtTokenEnhancer;

@Override

public void configure(ClientDetailsServiceConfigurer clients) throws Exception {

clients.inMemory()

.withClient("client-app")

.secret(passwordEncoder.encode("123456"))

.scopes("all")

.authorizedGrantTypes("password", "refresh_token")

.accessTokenValiditySeconds(3600)

.refreshTokenValiditySeconds(86400);

}

@Override

public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {

TokenEnhancerChain enhancerChain = new TokenEnhancerChain();

List<TokenEnhancer> delegates = new ArrayList<>();

delegates.add(jwtTokenEnhancer);

delegates.add(accessTokenConverter());

enhancerChain.setTokenEnhancers(delegates); //配置JWT的内容增强器

endpoints.authenticationManager(authenticationManager)

.userDetailsService(userDetailsService) //配置加载用户信息的服务

.accessTokenConverter(accessTokenConverter())

.tokenEnhancer(enhancerChain);

}

@Override

public void configure(AuthorizationServerSecurityConfigurer security) throws Exception {

security.allowFormAuthenticationForClients();

}

@Bean

public JwtAccessTokenConverter accessTokenConverter() {

JwtAccessTokenConverter jwtAccessTokenConverter = new JwtAccessTokenConverter();

jwtAccessTokenConverter.setKeyPair(keyPair());

return jwtAccessTokenConverter;

}

@Bean

public KeyPair keyPair() {

//从classpath下的证书中获取秘钥对

KeyStoreKeyFactory keyStoreKeyFactory = new KeyStoreKeyFactory(new ClassPathResource("jwt.jks"), "123456".toCharArray());

return keyStoreKeyFactory.getKeyPair("jwt", "123456".toCharArray());

}

}

接口安全加密设计流程图如图1所示。

3.2  消息中间件设计

此系统用了两个消息中间件,一个是rocketmq,其是用于解决注册流量大,并且充当第三方接口解耦的作用,另外一个是Kafka,其作用是用于日志消息的中间缓冲,避免日志采集转换框架logstash压力过大。

首先介绍rocketmq解决注册发短信时用户多流量大的问题,如果系统有很多用户注册,那势必会导致tomcat会有很多线程堆积,且不能马上发送注册短信给用户,非常浪费时间,这个时候我们如果利用消息中间件的特点,注册的时候把发送短信的请求先放到消息中间件,然后第三发发送短信的API再慢慢地进行发送,这样就不会导致上述的问题了,且用户体验也会变好。

日志是对于一个系统来说是非常重要的,它可以记录用户的操作,用户的行为,以及定位错误,而采用分布式架构日志是一个非常麻烦的问题,日志需要统一收集管理,且由于日志信息量是巨大的,我们还要从日志中挖掘有价值的信息,所以综合这些需求,我们采用多层次的结构来收集管理挖掘日志信息,其中也利用Kafka来当作日志消息中间件,来减缓logstash的压力。

4  项目总结

4.1  项目评价

针对当前疫情蔓延到全球、病毒变异株多发、外来输入以及交叉感染等多种情况,一旦在较近的距离范围发现患者,大到全市小到社区、学校、公司等都需要经常核酸检测进行排查,以及预约新冠疫苗第一、二针,这往往涉及排队问题,我们的项目能够更好地解决疫情期间排队面临的难点、痛点,将排队的人群进行分流。同时,我们考虑到用户在疫情期间心理可能会有些焦虑,因而有心理咨询和法律咨询。用户在出行的时候可以查看三公里以内的出行风险百分比,以及周边的疫情情况来规划自己的行程。

对于此项目,用户的正面反馈达到90%,特別是在生活当中,用户可以随时随地根据出行风险百分比进行行程规划,使出行得到保障。极少数用户反馈在报名排队后重复提醒功能较少,从而错过时间,造成无法及时参与已报名活动的结果。总体来说,用户对于此项目持有满意态度。项目主界面如图2所示。

4.2  项目推广

疫测小程序在降低交叉感染,合理安排排队时间,从管理者的角度上看,能为管理者如社区、学校、公司等组织预约接种新冠疫苗、核酸检测排队分流,防止因接种人群过多引起的交叉感染,也能够有效减少工作人员的工作量,能够促进整个排队过程较好的进行与管理。从用户的角度上看,有效减少用户排队时间,能够给用户带来方便,同时能够让用户清楚地了解到出行风险。随着疫测小程序功能得完善,在未来,如发生一些突发事件需要有序分流,它仍然是具有价值和意义的。

5  结  论

该项目以接种疫苗人流量资源为主要资本,研发开发的一款“基于Topsis算法的疫情防控APP”,此款APP可以通过大数据的收集以及Topsis算法的运用对大范围乃至小范围的进行监测排序,用户可以通过此款APP进行接种疫苗的预约排队,后台将会通过算法对从国家到省份再到区/县这种顺序进行排序,从而即刻反馈给用户接种序号。本项目不仅仅能减缓民众对疫情的恐慌情绪,也能增强用户对目前防疫知识的了解、对防疫优秀工作人员、事迹中精神的学习、更重要的是能借用信息时代的数据化监测,处理由于疫情所产生的一些问题,并给予解决方案。

参考文献:

[1] 胡刘康,王来军,王宁,等.基于改进TOPSIS法的省际物流发展能力评价 [C]//世界交通运输工程技术论坛(WTC2021)论文集(上).北京:人民交通出版社,2021:12.

[2] 北京机电工程研究所.结构化新冠肺炎疫情预测和评估方法,装置,设备及介质:CN202011204275.9 [P].2021-02-19.

[3] 练金.基于TOPSIS算法的舰艇多目标威胁评估 [J].舰船科学技术,2020,42(22):64-66.

[4] 闫红岩,李秦伟,刘明坤.密文数据库系统应用程序接口的研究与设计 [J].贵州科学,2007(1):35-38.

[5] 天津职业技术师范大学(中国职业培训指导教师进修中心).一种基于关键词搜索时间序列的传染病疫情预测与监控系统、方法及其应用:CN202010131044.3 [P].2021-08-31.

作者简介:张晓洁(2000.09—),女,汉族,广东潮州人,本科在读,研究方向:软件工程;通讯作者:李晶(1987.01—),女,汉族,陕西商洛人,副教授,硕士,研究方向:软件开发,虚拟现实。

猜你喜欢
分流疫情
战疫情
疫情中的我
防控疫情 从我做起
疫情期在家带娃日常……
疫情应对之争撕裂巴西疫情应对之争撕裂巴西
疫情中,中俄贸易同比增长
说泾渭
长江河口南北槽分流口工程及瑞丰沙地形变化对分流比的影响
浅析地方本科院校应用型人才培养模式多元化改革
DC?BANK系统中蓄电池组的均衡管理