热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

oracle层级计算推演,R语言使用层次分析法进行综合指标等级划分

业务临时需要,需要确定多因素影响下的综合权重值,现使用层次分析法和拉格朗日多项式插值算法做简易值计算。1、建立层次分析结构模型,分析影响综

业务临时需要,需要确定多因素影响下的综合权重值,现使用层次分析法和拉格朗日多项式插值算法做简易值计算。

0818b9ca8b590ca3270a3433284dd417.png

1、建立层次分析结构模型,分析影响综合指标的各个因素,分层级,上层受下层影响,而同层各因素之间基本上相对独立(本实例只有两层)

2、连接oracle数据库,读取各个因素实际指标值

library(DBI)

library(ROracle)

drv=dbDriver('Oracle')

conn=dbConnect(drv,'AQTS_ZHZX','AQTS_ZHZX','192.160.0.0:1521/iims')

rs=dbSendQuery(conn,"with weather as

(

select * from (

select * from weather_fact_aqts w

where w.cjrq=(select max(cjrq) from weather_fact_aqts)

order by w.cjsd desc) where rownum=1

)

select v.yfbm,v.dlbm,v.ldbm,weather.cjrq,weather.cjsd,v.wfshb,a.sgshb,

weather.sbbh,weather.wd,weather.sd,weather.fl,weather.njd

,weather.fog_rank,weather.wind_rank from VIO_FACT_AQTS v

join ACD_FACT_AQTS a on v.yfbm=a.sgyfbm and v.dlbm=a.lhbm and v.ldbm=a.glsbm

join weather on 1=1")

data=fetch(rs)

data=as.matrix(data)

3、影响综合因素的指标分两级:

#FIRST,A1:weather,A2:Flux,A3:acd,A4:vio

#SECOND1,B1:fog,B2:rain,B3:wind,B4:snow

#SECOND2,B2:FLUX1,FLUX2

4、构造第一层成对比较矩阵(采用成对比较法和1~9尺度)

#FIRST,A1:weather,A2:Flux,A3:acd,A4:vio

A=matrix(0,4,4)

diag(A)=1

A[1,2]=1/2;A[2,1]=2

A[1,3]=1/4;A[3,1]=4

A[1,4]=1/4;A[4,1]=4

A[2,4]=1/2;A[4,2]=2

A[2,3]=1/2;A[3,2]=2

A[3,4]=A[4,3]=1

5、构造第二层成对比较矩阵(构造针对上一层成对比较矩阵)

#SECOND,B1:fog,B2:rain,B3:wind,B4:snow

B=matrix(0,4,4)

diag(B)=1

B[1,2]=2;B[2,1]=1/2

B[1,3]=6;B[3,1]=1/6

B[1,4]=2;B[4,1]=1/2

B[2,3]=3;B[3,2]=1/3

B[2,4]=1;B[4,2]=1

B[3,4]=1/3;B[4,3]=3

#SECOND2,B2:FLUX1,FLUX2

C=matrix(1,2,2)

C[1,2]=3

C[2,1]=1/3

6、计算权向量并一致性校验

求权向量以及特征向量,进行一致性检验(因时间问题,这块没有加校验,后续修改)

7、求各层级因素权重,这里使用规范列平均法

Ac=colSums(A)

for (i in 1:nrow(A)) {

A[,i]=A[,i]/Ac[i]

}

weigA=rowMeans(A)

#B

Bc=colSums(B)

for (i in 1:nrow(B)) {

B[,i]=B[,i]/Bc[i]

}

weigB=rowMeans(B)

#C 1:flux,2:vehicle

Cc=colSums(C)

for (i in 1:nrow(C)) {

C[,i]=C[,i]/Cc[i]

}

weigC=rowMeans(C)

########row 1:fog,2:rain,3:wind,4:snow,5:flux,6:vehicle,7:acd,8:vio

########new row 1:fog,2:rain,3:wind,4:snow,5:even,6:acd,7:vio

weit=matrix(0,8,4)

weit[1:4,1]=weigB

weit[5:6,2]=weigC

weit[7,3]=1

weit[8,4]=1

######

w=as.matrix(weigA)

p=weit

we=p%*%w

wenew=c(we[1:4],sum(we[5:6]),we[7],we[8])

8、构造各个因素的函数

#get the function of accident

acdx

acdy

acdf 

acdv 

x=as.numeric(x)

ranka=f(x)

ranka[ranka>5]=5

ranka[ranka<0]&#61;0

return (ranka)

}

#v&#61;c(-0.1,0.2)

#vv&#61;acdv(v,acdf)

#get the function of violation

viox

vioy

viof 

#get the function of flux flux

fluxfx

fluxfy

fluxff 

#get the function of flux vehicel

fluxvx

fluxvy

fluxvf 

#get the function of  fog rain snow

fogx

fogy

fogf 

#get the function of wind

windx

windy

windf 

9、对应各因素指标值与权重相乘求取综合指标级别&#xff0c;并写入数据库

rankc&#61;cbind(data[,c(2:5)],as.matrix(acdv(data[,12],fogf))*wenew[1],as.matrix(acdv(data[,12],fogf))*wenew[2],

as.matrix(acdv(data[,11],fogf))*wenew[3],as.matrix(acdv(data[,12],fogf))*wenew[4],as.matrix(rep(3,nrow(data)))*wenew[5],

as.matrix(acdv(data[,7],acdf))*wenew[6],as.matrix(acdv(data[,6],viof))*wenew[7])

#comprehensive rank

alv&#61;as.numeric(rankc[,5:11])

dim(alv)&#61;c(nrow(rankc),7)

RANKOVER

colnames(RANKOVER)

RANKOVER&#61;as.data.frame(RANKOVER)

#dbRemoveTable(conn, &#39;ZHZX_FACT_AQTS&#39;)

dbWriteTable(conn,&#39;ZHZX_FACT_AQTS&#39;,RANKOVER, row.names &#61; F, append &#61; TRUE)

附&#xff1a;拉格朗日多项式插值算法

#LagrangePolynomial

LagrangePolynomial 

len &#61; length(x)

if(len !&#61; length(y))

stop("length not equal!")

if(len 

stop("dim size must more than 1")

#pretreat data abd alloc memery

xx 

#combin express

for(i in 1:len) {

td 

tm 

for(j in 1:len) {

if(i !&#61; j) {

td 

tm 

}

}

tm 

m[i]

}

#combin the exrpession

#combin the function

fbody 

#fill the function&#39;s body

body(f) 

return(f)

}

(记录日常点滴)对算法以及R使用还不是很熟悉&#xff0c;后续完善&#xff01;

如有错误&#xff0c;希望指点>>>OK

0818b9ca8b590ca3270a3433284dd417.png



推荐阅读
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • 本文讨论了在openwrt-17.01版本中,mt7628设备上初始化启动时eth0的mac地址总是随机生成的问题。每次随机生成的eth0的mac地址都会写到/sys/class/net/eth0/address目录下,而openwrt-17.01原版的SDK会根据随机生成的eth0的mac地址再生成eth0.1、eth0.2等,生成后的mac地址会保存在/etc/config/network下。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • 本文详细介绍了如何使用MySQL来显示SQL语句的执行时间,并通过MySQL Query Profiler获取CPU和内存使用量以及系统锁和表锁的时间。同时介绍了效能分析的三种方法:瓶颈分析、工作负载分析和基于比率的分析。 ... [详细]
  • 本文介绍了在MySQL8.0中如何查看性能并解析SQL执行顺序。首先介绍了查询性能工具的开启方法,然后详细解析了SQL执行顺序中的每个步骤,包括from、on、join、where、group by、having、select distinct、union、order by和limit。同时还介绍了虚拟表的概念和生成过程。通过本文的解析,读者可以更好地理解MySQL8.0中的性能查看和SQL执行顺序。 ... [详细]
  • Android自定义控件绘图篇之Paint函数大汇总
    本文介绍了Android自定义控件绘图篇中的Paint函数大汇总,包括重置画笔、设置颜色、设置透明度、设置样式、设置宽度、设置抗锯齿等功能。通过学习这些函数,可以更好地掌握Paint的用法。 ... [详细]
  • 使用这个技巧要达到的目标:一般来说,模型和控制器你都不会有相同的类名字。让我先创建一个取名为post的model。classPostextendsModel{}现在 ... [详细]
  • Iwanttointegratesort,order,maxandoffsetinafindAllquery.Thefollowingworksfine:我想在fin ... [详细]
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
  • 本文介绍了如何使用Express App提供静态文件,同时提到了一些不需要使用的文件,如package.json和/.ssh/known_hosts,并解释了为什么app.get('*')无法捕获所有请求以及为什么app.use(express.static(__dirname))可能会提供不需要的文件。 ... [详细]
  • 先看官方文档TheJavaTutorialshavebeenwrittenforJDK8.Examplesandpracticesdescribedinthispagedontta ... [详细]
  • This article discusses the efficiency of using char str[] and char *str and whether there is any reason to prefer one over the other. It explains the difference between the two and provides an example to illustrate their usage. ... [详细]
author-avatar
dbvg2q
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有