【建模算法】变异系数法(Python实现)

变异系数法是根据统计学方法计算得出系统各指标变化程度的方法,是直接利用各项指标所包含的信息,通过计算得到指标的权重,因此是一种客观赋权的方法。

​ 变异系数法根据各评价指标当前值与目标值的变异程度来对各指标进行赋权,若某项指标的数值差异较大,能明确区分开各被评价对象,说明该指标的分辨信息丰富,因而应给该指标以较大的权重;反之,若各个被评价对象在某项指标上的数值差异较小,那么这项指标区分各评价对象的能力较弱,因而应给该指标较小的权重。

一、问题描述

对某地区 3 个风电场同一月内的运行数据进行分析,根据风电场运行情况进行综合评价。针对高频率穿越能力、低频率穿越能力、低压穿越能力、并网点电压偏差越限次数、SVC/SVG响应性能指标、有功控制能力、功率因素越限几个指标进行评价,为方便处理把这些指标依次设置为A~G。数据表格如下:

风场名 A(高频率穿越能力) B(低频率穿越能力) C(低压穿越能力) D(并网点电压偏差越限次数 ) E(SVC/SVG响应性能指标) F(有功控制能力) G(功率因素越限)
风场1 0.743 0.8267 0.8324 12 0.8637 0.0743 0.0409
风场2 0.7567 0.8033 0.8736 10 0.8538 0.0665 0.0716
风场3 0.8104 0.7667 0.8539 16 0.9038 0.0881 0.0657

对风场1-3,针对A~G风场运行指标数据进行评价。

二、变异系数法评价步骤

step1:指标正向化

和熵权法的指标正向化类似,正向指标越大越好,负向指标越小越好。把指标都转化成正向指标处理。此篇采用新的正向化形式,采用上一篇建模算法熵权法的处理形式也可,基本思想不变就行。这个数据集有正向指标(越大越优型指标)和负向指标(越小越优型指标)两种。

设有m个待评对象,n个评价指标,可以构成数据矩阵X=(xij)m×nX=(x_{ij})_{m\times n}X=(xij​)m×n​ ,设数据矩阵内元素,经过指标正向化处理过后的元素为xij′x^{\prime}_{ij}xij′​

负向指标:并网点电压偏差越限次数D、有功控制能力F、功率因数越限G属于此类指标

正向指标:其余所有指标属于此类,可以不用处理
xij′=xijx^{\prime}_{ij}=x_{ij} xij′​=xij​

step2:数据标准化

每个指标的数量级不一样,需要把它们化到同一个范围内比较。上一篇建模算法用到了最大最小值标准化方法。此篇可以用一个新的标准化方法,处理如下:

设标准化后的数据矩阵元素为rijr_{ij}rij​ ,由上可得指标正向化后数据矩阵元素为xij′x^{\prime}_{ij}xij′​
rij=xij′∑i=1mxij′2r_{ij}=\frac{x^{\prime}_{ij}}{\sqrt{\sum^m_{i=1}{x^{\prime}_{ij}}^2}} rij​=∑i=1m​xij′​2​xij′​​

step3:计算变异系数

处理过后可以构成数据矩阵R=(rij)m×nR=(r_{ij})_{m\times n}R=(rij​)m×n​

  • 计算指标的均值:

Aj=1n∑i=1mrijA_j=\frac{1}{n}\sum^m_{i=1}r_{ij} Aj​=n1​i=1∑m​rij​

  • 计算指标的标准差:

Sj=1n∑i=1m(rij−A)2S_j=\sqrt{\frac{1}{n}\sum^m_{i=1}(r_{ij}-A)^2} Sj​=n1​i=1∑m​(rij​−A)2​

  • 计算变异系数

Vj=SjAjV_j=\frac{S_j}{A_j} Vj​=Aj​Sj​​

step4:计算权重以及得分

权重为:
wij=Vj∑j=1nwjrijw_{ij}=\frac{V_j}{\sum^n_{j=1}w_jr_{ij}} wij​=∑j=1n​wj​rij​Vj​​
得分为:
Scorei=∑j=1nwjrijScore_i=\sum^n_{j=1}w_jr_{ij} Scorei​=j=1∑n​wj​rij​

三、求解结果

结果如下:

四、实现代码

Python源码:

import pandas as pd
import numpy as np#读取数据
data=pd.read_excel('风场运行数据.xlsx')#数据正向化处理
label_need=data.keys()[1:]
data1=data[label_need].values
data2=data1.copy()
index=[3,5,6] #越小越优指标位置,注意python是从0开始计数,对应位置也要相应减1
k=0.1
for i in range(0,len(index)):data2[:,index[i]]=1/(k+max(abs(data1[:,index[i]]))+data1[:,index[i]])#数据标准化
[m,n]=data2.shape
data3=data2.copy()
for j in range(0,n):data3[:,j]=data2[:,j]/np.sqrt(sum(np.square(data2[:,j])))#计算变异系数
A=np.average(data3, axis=0)
S=np.std(data3, axis=0)
V=S/A# 计算权重
w=V/sum(V)#计算得分
s=np.dot(data3,w)
Score=100*s/max(s)
for i in range(0,len(Score)):print(f"第{i+1}个风场百分制得分为:{Score[i]}")

参考文献:

【1】张文朝,顾雪平.应用变异系数法和逼近理想解排序法的风电场综合评价[J].电网技术,2014,38(10):2741-2746.

【建模算法】变异系数法(Python实现)相关推荐

  1. 数学建模——层次分析法Python代码

    数学建模--层次分析法Python代码 import numpy as np class AHP: """ 相关信息的传入和准备 """ d ...

  2. 【Matlab】数学建模_变异系数法

    [Matlab]数学建模_变异系数法 1.基本思想 2.数据集介绍 3.文件结构 4.详细代码及注释 5.运行结果 6.结果说明 1.基本思想 变异系数法通常用于解决数据分布不同的问题.它是一个用于测 ...

  3. 数学建模 层次分析法 python计算权重

    这里用python语言来计算判断矩阵的权重,网上大部分是matlab语言,里面也包含一致性检验的函数,具体各函数使用方法详见代码注释的部分 import numpy as np a=np.array( ...

  4. 【建模算法】熵权法(Python实现)

    [建模算法]熵权法(Python实现) 熵权法是通过寻找数据本身的规律来赋权重的一种方法. 熵是热力学单位,在数学中,信息熵表示事件所包含的信息量的期望.根据定义,对于某项指标,可以用熵值来判断某个指 ...

  5. 【建模算法】CRITIC法(Python实现)

    [建模算法]CRITIC法(Python实现) CRITIC是Diakoulaki(1995)提出一种评价指标客观赋权方法.CRITIC法是一种比熵权法和标准离差法更好的客观赋权法. 它是基于评价指标 ...

  6. 4 评价类算法:变异系数法笔记(附Python代码)

    一.原理 1.定义 变异系数法(Coefficient of variation method)是直接利用各项指标所包含的信息,通过计算得到指标的权重.是一种客观赋权的方法. 此方法的基本做法是:在评 ...

  7. 变异系数法之python

    目录 1.简介 2.算法原理 2.1 指标正向化 2.2 数据标准化 2.3 计算变异系数 2.4 计算权重以及得分 3.实例分析 3.1 读取数据 3.2 指标正向化 3.3 查看行数和列数 3.4 ...

  8. python dendrogram_【聚类分析】《数学建模算法与应用》第十章 多元分析 第一节 聚类分析 python实现...

    第十章 多元分析 第一节 聚类分析 介绍 这里是司守奎教授的<数学建模算法与应用>全书案例代码python实现,欢迎加入此项目将其案例代码用python实现 GitHub项目地址:Math ...

  9. 【建模算法】基于蚁群算法求解TSP问题(Python实现)

    [建模算法]基于蚁群算法(ACA)求解TSP问题(Python实现) TSP (traveling salesman problem,旅行商问题)是典型的NP完全问题,即其最坏情况下的时间复杂度随着问 ...

最新文章

  1. 清华博士接亲被要求现场写代码,5 分钟做出一颗爱心
  2. VTK:几何对象之Cylinder
  3. Oracle10g下载地址
  4. 国内芯片60个细分领域重要代表企业【收藏】
  5. Javac可以编译,Java显示找不到或无法加载主类
  6. python背诵技巧_python如何记忆方法
  7. Python下面向对象的三大实例
  8. android判断是否是蓝牙耳机,如何验证蓝牙耳机是否在Android上连接?
  9. 《数据结构》第十一篇、线性表中的链式存储结构--循环链表
  10. JavaScript学习笔记——基础部分
  11. 提高机器学习模型性能的五个关键方法
  12. 《梦的解析》-西格蒙得·弗洛伊德
  13. caxa电子图板2022软件
  14. 如何选择加密芯片以及加密芯片的工作原理
  15. 嵌入式处理器分类与现状
  16. 【工业互联网】2018工业互联网红利爆发:政策战略、关键技术、典型案例深度解读!
  17. 如何注册 @msn邮箱
  18. linux服务器jpegoptim和optipng批量无损压缩图片
  19. 英国人工智能简史:从艾伦图灵到DeepMind | 历程
  20. Java8 并行流(parallelStream)原理分析及注意事项

热门文章

  1. 美国标准信息交换标准码 (ASCII)
  2. 后来我放弃了Obsidian手机端,改用Flomo | Obsidian实践
  3. Matlab 数值计算----二分法求非线性方程组
  4. SpringBoot实现多数据源(二)【Mybatis插件】
  5. js图片上传功能的实现 FileReader()
  6. AI伪原创工具接口,批量API在线AI伪原创工具
  7. 北斗导航卫星公开服务信号频率
  8. A7139 无线通信驱动(STM32) 添加FIFO扩展模式,能够发送超大数据包
  9. 使用 sudo nautilus 进入ubuntu 文件管理器。可以随意复制,删除,粘贴,无权限限制
  10. SpringBoot整合websocket实现在线客服聊天