软件工程经济学-日常作业+大作业

news2025/2/2 1:00:02

目录

一、作业1

作业内容

解答

二、作业2

作业内容

解答

三、作业3

作业内容

解答

四、大作业

作业内容

解答

1.建立层次结构模型

(1)目标层

(2)准则层

(3)方案层

2.构造判断矩阵

(1)准则层判断矩阵

(2)方案层判断矩阵

3.层次单排序及其一致性检验

代码

运行结果

4.层次总排序及其一致性检验

代码

运行结果

决策


一、作业1

作业内容

练习题1:请根据下表绘制相应的网络计划图 

解答

二、作业2

作业内容

练习题2:请根据下表绘制相应的网络计划图

解答

三、作业3

作业内容

作业3:某软件工程项目经工作分解后,给出了活动明细表,如下表所示:

1、求解每个活动的te值,并填入表中;

2、绘制对应计划网络图;

3、求解该计划网络图的关键活动、关键节点和关键路线。

解答

1、求解每个活动的te值,并填入表中

编号

活动代号

t0

tm

tp

te

紧前活动

1

A

6

7.5

12

8

-

2

B

4.5

4.8

6.3

5

A

3

C

1.2

2

2.8

2

A

4

D

5

6.7

10.2

7

A

5

E

4.6

5.7

8.6

6

B

6

F

5.5

6

6.5

6

C

7

G

0

0

0

0

B

8

H

5.5

7

8.5

7

F、G

9

I

3.5

5.2

5.7

5

H

10

J

4.7

5.9

7.7

6

D、E、I

2、绘制对应计划网络图

3、求解该计划网络图的关键活动、关键节点和关键路线

关键活动:A、C、F、H、I、J

关键节点:1、2、3、5、6、7、8

关键路线:A->C->F->H->I->J

四、大作业

作业内容

 要求:某企业计划采购一批生产设备,现有四家供应商提供的设备备选。请运用层次分析法,从设备的功能性、价格、外观、售后服务等多个方面(可添加考虑因素,自由发挥)进行综合评价,选出最优的供应商。

解答

1.建立层次结构模型
(1)目标层

选择最优的生产设备供应商

(2)准则层

功能性(B1)

价格(B2)

外观(B3)

售后服务(B4)

(3)方案层

供应商C1

供应商C2

供应商C3

供应商C4

2.构造判断矩阵
(1)准则层判断矩阵

为了建立准则层的判断矩阵,我们对各个准则进行成对比较,判断它们在选择供应商时的重要性。我们使用1-9标度法进行比较(1表示两者同等重要,9表示一个因素比另一个重要9倍,反之使用倒数)。

功能性 (B1)

价格 (B2)

外观 (B3)

售后服务 (B4)

功能性 (B1)

1

5

3

7

价格 (B2)

1/5

1

1/3

2

外观 (B3)

1/3

3

1

4

售后服务 (B4)

1/7

1/2

1/4

1

(2)方案层判断矩阵

接下来,我们对每个准则下的供应商进行成对比较。以下为供应商在功能性(B1)、价格(B2)、外观(B3)和售后服务(B4)方面的判断矩阵。我们同样采用1-9标度法进行比较。

供应商在功能性(B1)方面的判断矩阵:

C1

C2

C3

C4

C1

1

3

1/5

2

C2

1/3

1

1/7

1/3

C3

5

7

1

9

C4

1/2

3

1/9

1

供应商在价格(B2)方面的判断矩阵:

C1

C2

C3

C4

C1

1

1/3

5

1/7

C2

3

1

7

1/3

C3

1/5

1/7

1

1/9

C4

7

3

9

1

供应商在外观(B3)方面的判断矩阵:

C1

C2

C3

C4

C1

1

1/2

3

1/5

C2

2

1

5

1/3

C3

1/3

1/5

1

1/7

C4

5

3

7

1

供应商在售后服务(B4)方面的判断矩阵:

C1

C2

C3

C4

C1

1

5

1/3

2

C2

1/5

1

1/7

1/3

C3

3

7

1

5

C4

1/2

3

1/5

1

3.层次单排序及其一致性检验
代码
import numpy as np

# 计算特征向量和最大特征值

def calculate_eigenvector(matrix):

    # 计算矩阵的特征值和特征向量

    eigvals, eigvecs = np.linalg.eig(matrix)

    # 选择最大特征值的索引

    max_eigval_index = np.argmax(eigvals)

    max_eigval = eigvals[max_eigval_index]

    # 归一化特征向量

    eigvec = eigvecs[:, max_eigval_index]

    eigvec = eigvec / np.sum(eigvec)  # 归一化,使其和为1

    return eigvec.real, max_eigval.real

# 一致性检验

def consistency_check(matrix, max_eigval):

    n = matrix.shape[0]  # 矩阵的维度

    CI = (max_eigval - n) / (n - 1)  # 一致性指标 CI

    RI = [0, 0, 0.58, 0.9, 1.12, 1.24, 1.32, 1.41, 1.45]  # 随机一致性指标 RI(根据矩阵维度n)

    CR = CI / RI[n - 1]  # 一致性比率 CR

    return CI, CR

# 示例:准则层判断矩阵

B1_matrix = np.array([

    [1, 5, 3, 7],

    [1 / 5, 1, 1 / 3, 2],

    [1 / 3, 3, 1, 4],

    [1 / 7, 1 / 2, 1 / 4, 1]

])

# 计算特征向量和最大特征值

eigvec_B1, max_eigval_B1 = calculate_eigenvector(B1_matrix)

# 输出特征向量和最大特征值

print("准则层特征向量:", eigvec_B1)

print("准则层最大特征值:", max_eigval_B1)

# 一致性检验

CI_B1, CR_B1 = consistency_check(B1_matrix, max_eigval_B1)

# 输出一致性检验结果

print("准则层一致性指标 CI:", CI_B1)

print("准则层一致性比率 CR:", CR_B1)

# 判断一致性

if CR_B1 < 0.1:

    print("准则层判断矩阵一致性通过")

else:

    print("准则层判断矩阵一致性不通过,需要重新构造判断矩阵")
运行结果

4.层次总排序及其一致性检验
代码
import numpy as np

# 计算特征向量和最大特征值

def calculate_eigenvector(matrix):

    eigvals, eigvecs = np.linalg.eig(matrix)

    max_eigval_index = np.argmax(eigvals)

    max_eigval = eigvals[max_eigval_index]

    eigvec = eigvecs[:, max_eigval_index]

    eigvec = eigvec / np.sum(eigvec)  # 归一化,使其和为1

    return eigvec.real, max_eigval.real

# 一致性检验

def consistency_check(matrix, max_eigval):

    n = matrix.shape[0]  # 矩阵的维度

    CI = (max_eigval - n) / (n - 1)  # 一致性指标 CI

    RI = [0, 0, 0.58, 0.9, 1.12, 1.24, 1.32, 1.41, 1.45]  # 随机一致性指标 RI(根据矩阵维度n)

    CR = CI / RI[n - 1]  # 一致性比率 CR

    return CI, CR

# 计算层次总排序

def calculate_total_ranking(criteria_weights, matrix_list):

    # matrix_list 是方案层的判断矩阵列表

    rankings = []

    for i, matrix in enumerate(matrix_list):

        eigvec, max_eigval = calculate_eigenvector(matrix)

        CI, CR = consistency_check(matrix, max_eigval)

        # 计算每个方案在该准则下的权重

        weight = np.dot(eigvec, criteria_weights[i])

        rankings.append(weight)

    # 综合排序,得到每个方案的总权重

    total_weights = np.sum(rankings, axis=0)

    return total_weights

# 示例:准则层判断矩阵

B1_matrix = np.array([

    [1, 5, 3, 7],

    [1 / 5, 1, 1 / 3, 2],

    [1 / 3, 3, 1, 4],

    [1 / 7, 1 / 2, 1 / 4, 1]

])

# 示例:方案层判断矩阵

C1_matrix = np.array([

    [1, 3, 1 / 5, 2],

    [1 / 3, 1, 1 / 7, 1 / 3],

    [5, 7, 1, 9],

    [1 / 2, 3, 1 / 9, 1]

])

C2_matrix = np.array([

    [1, 1 / 3, 5, 1 / 7],

    [3, 1, 7, 1 / 3],

    [1 / 5, 1 / 7, 1, 1 / 9],

    [7, 3, 9, 1]

])

C3_matrix = np.array([

    [1, 2, 1 / 3, 1 / 5],

    [1 / 2, 1, 1 / 9, 1 / 7],

    [3, 9, 1, 7],

    [5, 7, 1 / 7, 1]

])

C4_matrix = np.array([

    [1, 1 / 2, 3, 1 / 4],

    [2, 1, 5, 1 / 3],

    [1 / 3, 1 / 5, 1, 1 / 7],

    [4, 3, 7, 1]

])

# 计算准则层的权重(特征向量)

criteria_matrix = B1_matrix  # 假设准则层只有一个判断矩阵

criteria_weights, max_eigval_B1 = calculate_eigenvector(criteria_matrix)

# 计算方案层的综合权重

matrix_list = [C1_matrix, C2_matrix, C3_matrix, C4_matrix]  # 方案层判断矩阵列表

total_weights = calculate_total_ranking(criteria_weights, matrix_list)

# 输出层次总排序

print("各方案的综合权重:", total_weights)

# 判断是否一致

CI_B1, CR_B1 = consistency_check(criteria_matrix, max_eigval_B1)

print("准则层一致性指标 CI:", CI_B1)

print("准则层一致性比率 CR:", CR_B1)

# 根据综合权重选择最优方案

best_supplier_index = np.argmax(total_weights)

print(f"最优供应商是供应商 C{best_supplier_index + 1}")
运行结果

决策

最优供应商为C3

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

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

相关文章

Go学习:Go语言中if、switch、for语句与其他编程语言中相应语句的格式区别

Go语言中的流程控制语句逻辑结构与其他编程语言类似&#xff0c;格式有些不同。Go语言的流程控制中&#xff0c;包括if、switch、for、range、goto等语句&#xff0c;没有while循环。 目录 1. if 语句 2. switch语句 3. for语句 4. range语句 5. goto语句&#xff08;不常用…

14-8C++STL的queue容器

一、queue容器 (1)queue容器的简介 queue为队列容器&#xff0c;“先进先出”的容器 (2)queue对象的构造 queue<T>q; queue<int>que Int;//存放一个int的queue容器 queue<string>queString;//存放一个string的queue容器 (3)queue容器的push()与pop()方…

【B站保姆级视频教程:Jetson配置YOLOv11环境(四)cuda cudnn tensorrt配置】

Jetson配置YOLOv11环境&#xff08;4&#xff09;cuda cudnn tensorrt配置 文章目录 0. 简介1. cuda配置&#xff1a;添加cuda环境变量2. cudnn配置3. TensorRT Python环境配置3.1 系统自带Python环境中的TensorRT配置3.2 Conda 虚拟Python环境中的TensorRT配置 0. 简介 官方镜…

信号模块--simulink操作

位置simulink/sourses 常用的模块 功能&#xff1a;常数模块&#xff0c;提供一个常数 数据设置可以是一维或多维 一维数据设置 多维数据设置&#xff08;例三维数据设置&#xff09; 方波脉冲模块 模块用于按固定间隔生成方波脉冲信号 振幅就是方波的幅度&#xff0c;0到…

强化学习笔记(3)——基于值函数的方法和策略梯度方法

分为两大类方法&#xff1a; 基于值函数的方法&#xff08;Temporal Difference Methods, TD Methods&#xff09; 策略梯度方法&#xff08;Policy Gradient Methods&#xff09;。 二者不同之处&#xff1a; 通过值函数来间接表达隐式的策略&#xff0c;一个是直接迭代优化策…

新年新挑战:如何用LabVIEW开发跨平台应用

新的一年往往伴随着各种新的项目需求&#xff0c;而跨平台应用开发无疑是当前备受瞩目的发展趋势。在众多开发工具中&#xff0c;LabVIEW 以其独特的图形化编程方式和强大的功能&#xff0c;为开发跨平台应用提供了有效的途径。本文将深入探讨如何运用 LabVIEW 开发能够在不同操…

事务04之死锁,锁底层和隔离机制原理

死锁和事务底层原理 文章目录 死锁和事务底层原理一&#xff1a;MySQL中的死锁现象1&#xff1a;何为死锁1.1&#xff1a;死锁的概念1.2&#xff1a;死锁产生的四个必要条件&#xff1a; 2&#xff1a;MySQL的死锁2.1&#xff1a;死锁的触发2.2&#xff1a;MySQL的死锁如何解决…

Golang 并发机制-2:Golang Goroutine 和竞争条件

在今天的软件开发中&#xff0c;我们正在使用并发的概念&#xff0c;它允许一次执行多个任务。在Go编程中&#xff0c;理解Go例程是至关重要的。本文试图详细解释什么是例程&#xff0c;它们有多轻&#xff0c;通过简单地使用“go”关键字创建它们&#xff0c;以及可能出现的竞…

【4Day创客实践入门教程】Day0 创想启程——课程与项目预览

Day0 创想启程——课程与项目预览 目录 Day0 创想启程——课程与项目预览前言学习内容基本的单片机开发技能简单的焊接技能简单的MicroPython程序 后记 Day1 工具箱构建——开发环境的构建Day2 探秘微控制器——单片机与MicroPython初步Day3 实战演练——桌面迷你番茄钟Day4 迈…

洛谷P3372 【模板】线段树 1以及分块

【模板】线段树 1 题目描述 如题&#xff0c;已知一个数列&#xff0c;你需要进行下面两种操作&#xff1a; 将某区间每一个数加上 k k k。求出某区间每一个数的和。 输入格式 第一行包含两个整数 n , m n, m n,m&#xff0c;分别表示该数列数字的个数和操作的总个数。 …

(动态规划基础 打家劫舍)leetcode 198

已知h2和h1&#xff0c;用已知推出未知 推是求答案&#xff0c;回溯是给答案 这里图片给出dfs暴力&#xff0c;再进行记录答案完成记忆化搜索&#xff0c;再转为dp数组 #include<iostream> #include<vector> #include<algorithm> //nums:2,1,1,2 //dp:2,2,…

Python 梯度下降法(四):Adadelta Optimize

文章目录 Python 梯度下降法&#xff08;四&#xff09;&#xff1a;Adadelta Optimize一、数学原理1.1 介绍1.2 实现流程 二、代码实现2.1 函数代码2.2 总代码 三、优缺点3.1 优点3.2 缺点 四、相关链接 Python 梯度下降法&#xff08;四&#xff09;&#xff1a;Adadelta Opt…

旅行的意义:“诗与远方”和在旅途中找寻真我

原文链接&#xff1a;旅行的意义&#xff1a;“诗与远方”和在旅途中找寻真我 困在格子间&#xff0c;心向远方 清晨&#xff0c;闹钟催促&#xff0c;打工人挣扎起床出门。地铁拥挤&#xff0c;工作繁忙&#xff0c;加班成常态&#xff0c;下班时夜幕已深&#xff0c;满心疲惫…

leetcode——将有序数组转化为二叉搜索树(java)

给你一个整数数组 nums &#xff0c;其中元素已经按 升序 排列&#xff0c;请你将其转换为一棵 平衡 二叉搜索树。 示例 1&#xff1a; 输入&#xff1a;nums [-10,-3,0,5,9] 输出&#xff1a;[0,-3,9,-10,null,5] 解释&#xff1a;[0,-10,5,null,-3,null,9] 也将被视为正确答…

前端js高级25.1.30

原型&#xff1a;函数的组成结构 通过这个图我们需要知道。 假设我们创建了一个Foo函数。 规则&#xff1a;Function.protoType是函数显示原型。__proto__是隐式对象。 Function、Object、Foo函数的__proto__指向了Function.protoType说明。这三个都依托function函数来创建。…

【后端开发】字节跳动青训营之性能分析工具pprof

性能分析工具pprof 一、测试程序介绍二、pprof工具安装与使用2.1 pprof工具安装2.2 pprof工具使用 资料链接&#xff1a; 项目代码链接实验指南pprof使用指南 一、测试程序介绍 package mainimport ("log""net/http"_ "net/http/pprof" // 自…

云原生(五十二) | DataGrip软件使用

文章目录 DataGrip软件使用 一、DataGrip基本使用 二、软件界面介绍 三、附件文件夹到项目中 四、DataGrip设置 五、SQL执行快捷键 DataGrip软件使用 一、DataGrip基本使用 1. 软件界面介绍 2. 附加文件夹到项目中【重要】 3. DataGrip配置 快捷键使用&#xff1a;C…

FreeRTOS学习 --- 任务调度

开启任务调度器 作用&#xff1a;用于启动任务调度器&#xff0c;任务调度器启动后&#xff0c; FreeRTOS 便会开始进行任务调度 该函数内部实现&#xff0c;如下&#xff1a; 1、创建空闲任务&#xff08;优先级最低&#xff09; 2、如果使能软件定时器&#xff0c;则创建定…

2025年人工智能技术:Prompt与Agent的发展趋势与机遇

文章目录 一、Prompt与Agent的定义与区别(一)定义(二)区别二、2025年Prompt与Agent的应用场景(一)Prompt的应用场景(二)Agent的应用场景三、2025年Prompt与Agent的适合群体(一)Prompt适合的群体(二)Agent适合的群体四、2025年Prompt与Agent的发展机遇(一)Prompt的…

区块链 智能合约安全 | 回滚攻击

视频教程在我主页简介和专栏里 目录&#xff1a; 智能合约安全 回滚攻击 总结 智能合约安全 回滚攻击 回滚攻击的本质是”耍赖” 举一个简单的例子,两个人玩石头剪刀布,输了的给对方10块钱,现在A输了,A说这把不算,重来 放在Solidity中,require()函数会检测其中的条件是否满…