資源簡介
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?????????????{
????????????????dt.Columns.Add(_dtSource.Columns[iColumnIndex].ColumnName?typeof(System.Double));
????????????}
????????????for?(int?iRowIndex?=?0;?iRowIndex?????????????{
????????????????var?dr?=?_dtSource.Rows[iRowIndex];
????????????????var?drNew?=?dt.NewRow();
????????????????bool?bIsAllZero?=?true;
????????????????drNew[0]?=?dr[0];
????????????????for?(int?iColumnIndex?=?1;?iColumnIndex?????????????????{
????????????????????if?(dr[iColumnIndex]?!=?DBNull.Value?&&?Convert.ToDouble(dr[iColumnIndex])?!=?0)
??????????????????
- 上一篇:頁面置換算法LRU模擬c#
- 下一篇:wpf-dxf文件轉G代碼
評論
共有 條評論