资源简介
c# 实现的熵权法计算权重。并计算最终综合得分,有需要的人可以参考
代码片段和文件信息
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;
namespace CRIC.ShangQuanFa
{
public class ShangQuanFa
{
System.Data.DataTable _dtSource;
public ShangQuanFa(System.Data.DataTable dt)
{
_dtSource = dt;
}
///
/// 获取权重
///
///
public DataTable GetQuanZhong()
{
try
{
//先去除所有列都为0的行数据
RemoveZeroRows();
//数据标准化
var dtStandard = StandardData();
//获取指标里各条数据比重
var dtBiZhong = GetBiZhong(dtStandard);
//求各指标的信息熵
var dtXinXiShang = GetXinXiShang(dtBiZhong);
//求各指标的权重
return (GetQZ(dtXinXiShang));
}
catch (Exception ex)
{
throw new Exception(“GetQuanZhong Error!“ + ex.Message);
}
}
///
/// 获取综合得分
///
public DataTable GetZongHeScore()
{
try
{
//先去除所有列都为0的行数据
RemoveZeroRows();
//数据标准化
var dtStandard = StandardData();
//获取指标里各条数据比重
var dtBiZhong = GetBiZhong(dtStandard);
//求各指标的信息熵
var dtXinXiShang = GetXinXiShang(dtBiZhong);
//求各指标的权重
var dtQuanZhong = GetQZ(dtXinXiShang);
//获取综合得分
var dtScore = GetScore(dtQuanZhong dtBiZhong);
return dtScore;
}
catch (Exception ex)
{
throw new Exception(“GetZongHeScore Error!“ + ex.Message);
}
}
///
/// 清除所有列都为0的行
///
void RemoveZeroRows()
{
//去除全0并且标准化数据
DataTable dt = new DataTable();
dt.Columns.Add(_dtSource.Columns[0].ColumnName);
for (int iColumnIndex = 1; iColumnIndex < _dtSource.Columns.Count; iColumnIndex++)
{
dt.Columns.Add(_dtSource.Columns[iColumnIndex].ColumnName typeof(System.Double));
}
for (int iRowIndex = 0; iRowIndex < _dtSource.Rows.Count; iRowIndex++)
{
var dr = _dtSource.Rows[iRowIndex];
var drNew = dt.NewRow();
bool bIsAllZero = true;
drNew[0] = dr[0];
for (int iColumnIndex = 1; iColumnIndex < _dtSource.Columns.Count; iColumnIndex++)
{
if (dr[iColumnIndex] != DBNull.Value && Convert.ToDouble(dr[iColumnIndex]) != 0)
- 上一篇:页面置换算法LRU模拟c#
- 下一篇:wpf-dxf文件转G代码
评论
共有 条评论