数学建模——评价决策类算法(熵权法、模糊综合评价)

news2024/11/15 11:33:31

一、熵权法(求解权重)

概念原理

 代码

import numpy as np  # 导入numpy库,并简称为np

# 定义一个自定义的对数函数mylog,用于处理输入数组中的零元素
def mylog(p):
    n = len(p)  # 获取输入向量p的长度
    lnp = np.zeros(n)  # 创建一个长度为n,元素都为0的新数组lnp
    for i in range(n):  # 对向量p的每一个元素进行循环
        if p[i] == 0:  # 如果当前元素的值为0
            lnp[i] = 0  # 则在lnp中对应位置也设置为0,因为log(0)是未定义的,这里我们规定为0
        else:
            lnp[i] = np.log(p[i])  # 如果p[i]不为0,则计算其自然对数并赋值给lnp的对应位置
    return lnp  # 返回计算后的对数数组

# 定义一个指标矩阵X
X = np.array([[9, 0, 0, 0], [8, 3, 0.9, 0.5], [6, 7, 0.2, 1]])

# 对矩阵X进行标准化处理,得到标准化矩阵Z
Z = X / np.sqrt(np.sum(X*X, axis=0))

print("标准化矩阵 Z = ")
print(Z)  # 打印标准化矩阵Z

# 计算熵权所需的变量和矩阵初始化
n, m = Z.shape  # 获取标准化矩阵Z的行数和列数
D = np.zeros(m)  # 初始化一个长度为m的数组D,用于保存每个指标的信息效用值

# 计算每个指标的信息效用值
for i in range(m):  # 遍历Z的每一列
    x = Z[:, i]  # 获取Z的第i列,即第i个指标的所有数据
    p = x / np.sum(x)  # 对第i个指标的数据进行归一化处理,得到概率分布p
    # 使用自定义的mylog函数计算p的对数。需要注意的是,如果p中含有0,直接使用np.log会得到-inf,这里使用自定义函数避免这个问题
    e = -np.sum(p * mylog(p)) / np.log(n)  # 根据熵的定义计算第i个指标的信息熵e
    D[i] = 1 - e  # 根据信息效用值的定义计算D[i]

# 根据信息效用值计算各指标的权重
W = D / np.sum(D)  # 将信息效用值D归一化,得到各指标的权重W

print("权重 W = ")
print(W)  # 打印得到的权重数组W

二、模糊综合评价

原理概念

        现实中的许多现象及关系比较模糊。如高与矮, 长与短,大与小,多与少,穷与富,好与差, 年轻与年老等。这类现象不满足“非此即彼”的排中律,而具有“亦此亦彼”的模糊性。 需要指出的是,模糊不确定不同于随机不确定。 随机不确定是因果律破损造成的不确定,而模糊不确定是由于排中律破损造成的不确定。

传统集合是指具有相同属性的事物的集体,如正整数集合,具有如下性质:

互异性:集合中任意两个元素都是不同的对象,如{ 1 1 2}和{1 2}这两个集合是等价的

逻辑性:每一个对象都能确定是不是某一集合的元素,这个性质主要用于判断一个集合是否能形成集合

独立性:集合的基数、集合本身的个数必须为自然数

无序性:{a b c}和{c b a}是同一个集合

纯粹性:所谓集合的纯粹性,用个例子来表示,集合A={x|x<2},集合A 中所有的元素都要符合x<2

完备性:仍用上面的例子,所有符合x<2的数都在集合A中

传统集合的特征函数

         模糊集合用来描述形容高矮胖瘦这种没有明确指标的模糊性问题。不具有传统集合的互异性, 而是“亦此亦彼”的。

模糊集合的隶属函数

模糊集合的表示方法

模糊集与特征函数的关系

 

F分布确定隶属函数

代码 

import numpy as np

# 1、一级模糊综合评判
# 影响运行费用的各因素的单因素评价矩阵为:
R23 = np.array([
     [0.18, 0.14, 0.18, 0.14, 0.13, 0.23],
     [0.15, 0.20, 0.15, 0.25, 0.10, 0.15],
     [0.25, 0.12, 0.13, 0.12, 0.18, 0.20],
     [0.16, 0.15, 0.21, 0.11, 0.20, 0.17],
     [0.23, 0.18, 0.17, 0.16, 0.15, 0.11],
     [0.19, 0.13, 0.12, 0.12, 0.11, 0.33],
     [0.17, 0.16, 0.15, 0.08, 0.25, 0.19]])
# 权重分配为
A23 = np.array([0.20, 0.15, 0.10, 0.10, 0.20, 0.15, 0.10])
# 评价结果
# np.dot是Numpy库中的一个函数,用于计算两个数组的点积。对于一维数组,它计算的是这两个数组的内积。
# 对于二维数组(矩阵),它计算的是矩阵乘法。
B23 = np.dot(A23, R23)

# 2、二级模糊综合评判
# 产品情况的二级评判如下:
R1 = np.array([
    [0.12, 0.18, 0.17, 0.23, 0.13, 0.17],
    [0.15, 0.13, 0.18, 0.25, 0.12, 0.17],
    [0.14, 0.13, 0.16, 0.18, 0.20, 0.19],
    [0.12, 0.14, 0.15, 0.17, 0.19, 0.23],
    [0.16, 0.12, 0.13, 0.25, 0.18, 0.16]])
A1 = np.array([0.15, 0.40, 0.25, 0.10, 0.10])
B1 = np.dot(A1, R1)
# 销售能力二级评判如下:
R2 = np.array([
    [0.13, 0.15, 0.14, 0.18, 0.16, 0.25],
    [0.12, 0.16, 0.13, 0.17, 0.19, 0.23],
    B23,
    [0.14, 0.13, 0.15, 0.16, 0.18, 0.24],
    [0.16, 0.15, 0.15, 0.17, 0.18, 0.19]])
A2 = np.array([0.2, 0.15, 0.25, 0.25, 0.15])
B2 = np.dot(A2, R2)

# 市场需求的二级评判
R3 = np.array([
    [0.15, 0.14, 0.13, 0.18, 0.14, 0.26],
    [0.16, 0.15, 0.18, 0.14, 0.16, 0.21]])
A3 = np.array([0.55, 0.45])
B3 = np.dot(A3, R3)

# 3、三级模糊综合评判
R = np.array([B1, B2, B3])
A = np.array([0.4, 0.3, 0.3])
B = np.dot(A, R)

print(B)

 例题

例题:某公司计划推出一款新产品,为了评估该产品的市场潜力,公司希望通过模糊综合评价算法对产品进行评价。评价指标包括:市场需求、技术成熟度、成本控制、用户体验。评价集分为:很高、较高、一般、较低、很低。

步骤1:建立评价指标集和评价集

评价指标集U: U = {市场需求,技术成熟度,成本控制,用户体验}

评价集V: V = {很高,较高,一般,较低,很低}

步骤2:确定各指标的权重

假设通过专家打分法,得到各指标的权重向量W: W = [0.3, 0.25, 0.2, 0.25]

步骤3:建立模糊评价矩阵

通过调查问卷或专家评分,得到各指标在不同评价等级上的隶属度,构建模糊评价矩阵R。

R = [[0.2, 0.5, 0.2, 0.1, 0],
     [0.4, 0.4, 0.1, 0.1, 0],
     [0.1, 0.3, 0.4, 0.2, 0],
     [0.3, 0.4, 0.2, 0.1, 0]]

步骤4:进行模糊综合评价

使用模糊综合评价算法计算评价结果B。

B = W * R

步骤5:对评价结果进行解释

根据评价结果B,对新产品进行综合评价。

下面是Python代码实现:

import numpy as np

# 指标权重
W = np.array([0.3, 0.25, 0.2, 0.25])

# 模糊评价矩阵
R = np.array([[0.2, 0.5, 0.2, 0.1, 0],
              [0.4, 0.4, 0.1, 0.1, 0],
              [0.1, 0.3, 0.4, 0.2, 0],
              [0.3, 0.4, 0.2, 0.1, 0]])

# 模糊综合评价
B = np.dot(W, R)

# 归一化评价结果
B_normalized = B / np.sum(B)

# 输出评价结果
print("新产品综合评价结果:")
print("很高:{:.2f}, 较高:{:.2f}, 一般:{:.2f}, 较低:{:.2f}, 很低:{:.2f}".format(*B_normalized))

        运行上述代码,将输出新产品的综合评价结果,这个结果反映了新产品在各个评价等级上的综合表现。根据这个结果,公司可以决定是否推出新产品,或者对产品进行进一步的改进。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2050251.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言典型例题42

《C程序设计教程&#xff08;第四版&#xff09;——谭浩强》 习题3.2 有3个整数a&#xff0c;b&#xff0c;c&#xff0c;由键盘输入&#xff0c;输出其中最大的数&#xff0c;请编程序。 代码&#xff1a; //《C程序设计教程&#xff08;第四版&#xff09;——谭浩强》 //习…

URP 2022.3 custom render pass

这里需要注意&#xff0c;有两个部分要做&#xff0c;一步是写脚本和shader&#xff0c;一步是在editor里进行绑定 这里有个概念上需要注意的&#xff0c;他这个pass啊&#xff0c;实际依赖问题都需要你自己在execute处理的&#xff0c;比如你要画N次东西&#xff0c;就要在exe…

管易云·奇门与MySQL对接集成历史发货单查询连通执行操作-v1(管易历史发货单)

管易云奇门与MySQL对接集成历史发货单查询连通执行操作-v1(管易历史发货单) 接通系统&#xff1a;管易云奇门 管易云是金蝶旗下专注提供电商企业管理软件服务的子品牌&#xff0c;先后开发了C-ERP、EC-OMS、EC-WMS、E店管家、BBC、B2B、B2C商城网站建设等产品和服务&#xff0c…

算法力扣刷题记录 八十三【96.不同的二叉搜索树】

前言 动态规划第9篇。记录 八十三【96.不同的二叉搜索树】。 一、题目阅读 给你一个整数 n &#xff0c;求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种&#xff1f;返回满足题意的二叉搜索树的种数。 示例 1&#xff1a; 输入&#xff1a;n 3 输…

开箱即用的企业级CICD工具-云效流水线 Flow

开箱即用的企业级CICD工具-云效流水线 Flow 开箱即用的企业级CICD工具-云效流水线 Flow资源领取实操来啦编排流水线新建主机组运行流水线运行结果 关于 云效流水线 Flow 的一些看法操作感受新人建议满意与建议流水线Flow 优势 开箱即用的企业级CICD工具-云效流水线 Flow 看到这…

短视频SDK解决方案,降低行业开发门槛

美摄科技匠心打造了一款集前沿技术与极致体验于一体的短视频SDK解决方案&#xff0c;它不仅重新定义了短视频创作的边界&#xff0c;更以行业标杆级的短视频特效&#xff0c;让每一帧画面都闪耀不凡光芒。 【技术赋能&#xff0c;创意无限】 美摄科技的短视频SDK&#xff0c;…

OceanBase V4.3 列存引擎之场景问题汇总

在OceanBase 4.3版本发布后&#xff08;OceanBase社区版 V4.3 免费下载&#xff09;&#xff0c;其新增的列存引擎&#xff0c;及行列混存一体化的能力&#xff0c;可以支持秒级实时分析&#xff0c;引发了用户、开发者及业界人士的广泛讨论。本文选取了这些讨论中较为典型的一…

Linux系统top命令参数说明

目录 一、top命令概览 二、参数说明 一、top命令概览 二、参数说明 第一行&#xff1a;系统的整体情况概览 top:表示这是个top命令 10:53:55:表示当前系统时间 up 17 days, 19:10:表示系统运行时间 1user:表示当前登录用户人数 load average:表示1分钟/5分钟/15分钟 系统负载…

LangChain 实战案例:老喻干货店的 TextToSql 应用解析

前言 当我们在做项目开发时&#xff0c;数据库设计是项目早期的核心工作之一。我们要考虑业务需要用到的表、关联、索引&#xff0c;并预想出未来核心需求或易产生瓶颈的SQL。当这些事情做完&#xff0c;就可以喝杯咖啡&#xff0c;到前台摸鱼会儿了… 如果你是刚入门数据库学…

出海笔记精华问答 | 第四期

更新出海问答第四期&#xff0c;希望可以继续帮助大家解决问题哈。 Q1:当stripe把资金全退给客户但是货又发了&#xff0c;这是什么情况&#xff1f; A1: 这种情况一般是stripe不跟你合作了或者发生了争议。 Q2:如何知道stripe回复你的邮件是人工回复还是机器人回复&#xff…

Matlab自学笔记三十三:表table类型数据的创建、索引和自身属性的用法

1.表类型的概念 表&#xff08;table&#xff09;具有容器特性的数据类型&#xff0c;可以方便的存储混合类型的数据&#xff0c;可以使用数字或命名索引访问数据以及元数据&#xff08;例如变量名称&#xff0c;行名称&#xff0c;描述和变量单位等&#xff09;&#xff1b; …

Java版自动化测试之Selenium

1. 准备 编程语言&#xff1a;Java JDK版本&#xff1a;17 Maven版本&#xff1a;3.6.1 2. 开始 声明&#xff1a;本次只测试Java的Selenium自动化功能 本次示例过程&#xff1a;打开谷歌游览器&#xff0c;进入目标网址&#xff0c;找到网页的输入框元素&#xff0c;输入指…

基于Java+SpringBoot+Vue的网上租赁系统设计与实现

基于JavaSpringBootVue的网上租赁系统设计与实现 前言 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN[新星计划]导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1…

2024硅谷微软和OPENAI的CTO对人工智能发展的最新预测

2024硅谷微软和OPENAI的CTO对人工智能发展的最新预测 微软首席技术官凯文斯科特 在红杉资本&#xff08;Sequoia Capital&#xff09;发布的《Training Data》播客中&#xff0c;微软首席技术官凯文斯科特&#xff08;Kevin Scott&#xff09;坚定地重申了他对大语言模型&…

从文字到多媒体:GPT如何彻底革新内容创作

近年来&#xff0c;OpenAI开发的GPT&#xff08;生成预训练变换器&#xff09;模型在自然语言处理领域引起了广泛关注&#xff0c;尤其是GPT-3的推出&#xff0c;更是掀起了一场技术革新浪潮。然而&#xff0c;GPT模型不仅限于自然语言处理&#xff0c;其多模态应用前景同样令人…

AI大模型领域入门:AI产品经理必备知识指南

随着大模型技术的快速发展&#xff0c;市面上涌现出了大量的大模型产品岗位&#xff0c;那么想要进入AI行业的产品经理同学&#xff0c;需要提前做好哪些准备工作呢&#xff1f;这篇文章里&#xff0c;作者总结了入行AI的必备知识&#xff0c;包括市场调研、产品底层逻辑等内容…

打工人必备工具箱

下载地址&#xff1a;https://pan.quark.cn/s/356d7f201d7a 图片工具 图片格式转换图片转ICO图片压缩图片批量转换图片编辑图片分割 视频工具 视频格式转换视频翻转视频提取音频视频倒放视频静音视频分辨率转换视频旋转视频拼接视频调整音量视频取帧 文档工具 PDF合并PDF提…

Kubernetes--命令行工具 kubectl

前言&#xff1a;本博客仅作记录学习使用&#xff0c;部分图片出自网络&#xff0c;如有侵犯您的权益&#xff0c;请联系删除 一、在任意节点使用 kubectl 1、将 master 节点中 /etc/kubernetes/admin.conf 拷贝到需要运行的服务器的 /etc/kubernetes 目录中 [rootk8s-master…

系列:水果甜度个人手持设备检测-前沿方案、论文和思路(一)

系列:水果甜度个人手持设备检测 -- 前沿方案、论文和思路&#xff08;一&#xff09; 背景 我们检索最新前沿领域的论文和思路&#xff0c;一般都不会去GitHub、专利官网这种地方&#xff0c;大家都是正常的人类&#xff0c;我们通常会想到中国知网CNKI、中国国家数字图书馆…

【刷题笔记】二叉树3

之前已经介绍过了二叉树的前中后序遍历及层序遍历&#xff0c;这是解决所有二叉树问题的手段。上一期也提到过&#xff0c;很多题既可以用前中后序遍历去做也可以用层序遍历去做。本期就介绍一下例题&#xff0c;分别展示两种做法。 1. 二叉树的右视图 199. 二叉树的右视图 给…