数学建模期末速成 多目标规划
内容整理自2-6-2 运筹优化类-多目标规划模型Python版讲解_哔哩哔哩_bilibili
求有效解的几种常用方法
- 线性加权法√
根据目标的重要性确定一个权重,以目标函数的加权平均值为评价函数,使其达到最优。 - ɛ约束法
根据决策者的偏好,选择一个主要关注的参考目标 - 理想点法
以每个单目标最优解为该目标的理想值,使每个目标函数值与理想值得差得加权平方和最小 - 优先级法
先求优先级高的目标函数的最优值,在确保优先级高的目标获得不低于最优解的条件下,再求优先级低的目标函数
例题:化工厂生产问题
某化工厂今年拟生产两种新产品A和B,其生产费用分别为2万元/吨和5万元/吨。这两种产品均将造成环境污染,每生产一吨A产品会产生0.4吨的污染,每生产一吨B产品会产生0.3吨的污染。由于条件限制,工厂生产产品A和B的最大生产能力各为每月5吨和6吨,而市场需要这两种产品的总量每月不少于7吨。该工厂决策认为,这两个目标中环境污染应该优先考虑,且根据经验生产费用的参考值为30万元,污染量参考值为2吨。试问工厂如何安排生产计划,在满足市场需要的前提下,使设备的花费和产生的污染均达到最小。
解:设工厂每月产品A生产 x 1 x_1 x1吨,B生产 x 2 x_2 x2吨,那么产生的污染分别为0.4 x 1 x_1 x1吨和0.3 X 2 X_2 X2吨
{ min f 1 = 2 x 1 + 5 x 2 min f 2 = 0.4 x 1 + 0.3 x 2 s t . { x 1 + x 2 ≥ 7 0 ≤ x 1 ≤ 5 0 ≤ x 2 ≤ 6 \begin{cases}\min f_1=2x_1+5x_2\\\min f_2=0.4x_1+0.3x_2\\st.\begin{cases}x_1+x_2\geq7\\0\leq x_1\leq5\\0\leq x_2\leq6\end{cases}\end{cases} ⎩ ⎨ ⎧minf1=2x1+5x2minf2=0.4x1+0.3x2st.⎩ ⎨ ⎧x1+x2≥70≤x1≤50≤x2≤6
[!info]
st.
是subject to
,即约束条件的缩写
下面将其转换为一个单目标规划问题,即对上面的两个目标函数进行加权,由于该工厂决策认为环境污染应优先考虑,因此我们可以选取f1和f2的权重分别为0.4和0.6。注意到两个目标函数的单位不同,一个为“万元”,一个为“吨”,因此需要首先对目标函数进行标准化来消除量纲的影响,然后再进行加权,由于题目中已经给了产品费用和污染量的参考值,因此我们将这两个目标函数分别处以其参考值来消除量纲。
加权组合后的目标函数
f = 0.4 × f 1 30 + 0.6 × f 2 2 = 0.4 30 × ( 2 x 1 + 5 x 2 ) + 0.6 2 × ( 0.4 x 1 + 0.3 x 2 ) f=0.4\times\frac{f_{1}}{30}+0.6\times\frac{f_{2}}{2}=\frac{0.4}{30}\times(2x_{1}+5x_{2})+\frac{0.6}{2}\times(0.4x_{1}+0.3x_{2}) f=0.4×30f1+0.6×2f2=300.4×(2x1+5x2)+20.6×(0.4x1+0.3x2)
得到一个单目标规划问题,通过linprog函数进行求解可以得到
x 1 = 5 , x 2 = 2 , f 1 = 20 , f 2 = 2.6 x_{1}=5\:,x_{2}=2\:,f_{1}=20\:,f_{2}=2.6 x1=5,x2=2,f1=20,f2=2.6
敏感性分析
下面对结果进行敏感性分析,敏感性分析是指从定量分析的角度研究有关因素发生某种变化对某一个或一组关键指标影响程度的一种不确定分析技术。其实质是通过逐一改变相关变量数值的方法来解释关键指标受这些因素变动影响大小的规律。
附 Python代码
import numpy as np
from scipy.optimize import linprog
import matplotlib.pyplot as plt
from matplotlib import rcParams# ======= 多目标规划问题 =======
# 两个目标函数的权重以及对应的x1和X2的值
weights = [(0.4, 0.6), # w1=0.4, w2=0.6(0.5, 0.5), # w1=0.5, w2=0.5(0.3, 0.7), # w1=0.3, w2=0.7
]# 定义约束条件
A = [[-1, -1]] # 不等式约束A*x <= b
b = [-7]
lb = [0, 0] # 下界
ub = [5, 6] # 上界
bounds = [(lb[0], ub[0]), (lb[1], ub[1])]# 遍历不同权重组合,求解线性规划
for w1, w2 in weights:# 构造目标函数系数c = [w1/30*2 + w2/2*0.4, w1/30*5 + w2/2*0.3]# 求解线性规划result = linprog(c, A_ub=A, b_ub=b, bounds=bounds, method='highs')x = result.x # 变量X的最优解fval = result.fun # 目标函数的最优值# 计算目标函数值f1 = 2 * x[0] + 5 * x[1]f2 = 0.4 * x[0] + 0.3 * x[1]# 打印结果print(f"\n权重组合:w1={w1}, w2={w2}")print(f"最优解:x1={x[0]:.2f}, x2={x[1]:.2f}")print(f"目标函数值:f1={f1:.2f}, f2={f2:.2f}, 综合指标={fval:.2f}")# ======= 敏感性分析 =======
# 权重范围
W1 = np.arange(0.1, 0.501, 0.001)
W2 = 1 - W1
n = len(W1)
# 初始化结果存储数组
F1 = np.zeros(n)
F2 = np.zeros(n)
X1 = np.zeros(n)
X2 = np.zeros(n)
FVAL = np.zeros(n)# 遍历不同权重,执行敏感性分析
for i in range(n):w1 = W1[i]w2 = W2[i]c = [w1/30*2 + w2/2*0.4, w1/30*5 + w2/2*0.3] # 修正此处# 求解线性规划result = linprog(c, A_ub=A, b_ub=b, bounds=bounds, method='highs')x = result.xF1[i] = 2 * x[0] + 5 * x[1]F2[i] = 0.4 * x[0] + 0.3 * x[1]X1[i] = x[0]X2[i] = x[1]FVAL[i] = result.fun# ======= 绘图 =======
# 设置字体为支持中文的字体,例如SimHei(黑体)
rcParams['font.sans-serif'] = ['SimHei'] # 选择黑体
rcParams['axes.unicode_minus'] = False # 解决负号显示问题# 图1:权重与目标函数的关系
plt.figure()
plt.plot(W1, F1, label='f1')
plt.plot(W1, F2, label='f2')
plt.xlabel("f1的权重(w1)")
plt.ylabel("目标函数值")
plt.legend()
plt.title("目标函数值随权重变化的关系")
plt.grid()# 图2:权重与决策变量的关系
plt.figure()
plt.plot(W1, X1, label='x1')
plt.plot(W1, X2, label='x2')
plt.xlabel("f1的权重(w1)")
plt.ylabel("决策变量值")
plt.legend()
plt.title("决策变量随权重变化的关系")
plt.grid()# 图3:权重与综合指标的关系
plt.figure()
plt.plot(W1, FVAL)
plt.xlabel("f1的权重(w1)")
plt.ylabel("综合指标值")
plt.title("综合指标随权重变化的关系")
plt.grid()# 显示所有图
plt.show()
相关文章:
数学建模期末速成 多目标规划
内容整理自2-6-2 运筹优化类-多目标规划模型Python版讲解_哔哩哔哩_bilibili 求有效解的几种常用方法 线性加权法√ 根据目标的重要性确定一个权重,以目标函数的加权平均值为评价函数,使其达到最优。ɛ约束法 根据决策者的偏好,选择一个主要…...
常见ADB指令
目录 1. 设备连接与管理 2. 应用管理 3. 文件操作 4. 日志与调试 5. 屏幕与输入控制 6. 高级操作(需Root权限) 7. 无线调试(无需USB线) 常用组合示例 注意事项 以下是一些常用的 ADB(Android Debug Bridge&a…...
IoTGateway项目生成Api并通过swagger和Postman调用
IoTGateway项目生成Api并通过swagger和Postman调用-CSDN博客...
sl4j+log4j日志框架
sl4jlog4j日志框架 slf4j (Simple Loging Facade For Java) 即它仅仅是一个为 Java 程序提供日志输出的统一接口,并不是一个具体的日志实现方案,所以单独的 slf4j 是不能工作的,必须搭配其他具体的日志实现方案(例如:…...
小白的进阶之路系列之九----人工智能从初步到精通pytorch综合运用的讲解第二部分
张量是PyTorch中的核心数据抽象。这个交互式笔记本提供了一个深入的介绍torch. Tensor 类., 首先,让我们导入PyTorch模块。我们还将添加Python的数学模块来简化一些示例。 import torch import math创建张量 创建张量最简单的方法是调用torch.empty(): x = torch.empty(…...

深度学习与神经网络 前馈神经网络
1.神经网络特征 无需人去告知神经网络具体的特征是什么,神经网络可以自主学习 2.激活函数性质 (1)连续并可导(允许少数点不可导)的非线性函数 (2)单调递增 (3)函数本…...

NLP学习路线图(十四):词袋模型(Bag of Words)
在自然语言处理(NLP)的广阔天地中,词袋模型(Bag of Words, BoW) 宛如一块历经岁月沉淀的基石。它虽非当今最耀眼的明星,却为整个领域奠定了至关重要的基础,深刻影响了我们让计算机“理解”文本的…...
Oracle数据库事务学习
目录 一、什么是事务,事务的作用是什么 二、事务的四大特性(ACID) 1. 原子性(Atomicity) 2. 一致性(Consistency) 3. 隔离性(Isolation) 4. 持久性(Durability) 三、关于锁的概念——表锁、行锁、死锁、乐观/悲观锁、 1.行锁 2.表锁 3.死锁 4.乐观锁 5.…...
MySQL 全量 增量备份与恢复
目录 前言 一、MySQL 数据库备份概述 1. 数据备份的重要性 2. 数据库备份类型 2.1 从物理与逻辑的角度分类 2.2 从数据库的备份策略角度分类 3. 常见的备份方法 二、数据库完全备份操作 1. 物理冷备份与恢复 1.1 备份数据库 1.2 恢复数据库 2. mysqldump 备份与恢复…...
【仿生机器人系统设计】涉及到的伦理与安全问题
随着材料科学、人工智能与生物工程学的融合突破,仿生机器人正从科幻走向现实。它们被寄予厚望——在医疗康复、老年照护、极端环境作业甚至社交陪伴等领域释放巨大价值。然而,当机器无限趋近于“生命体”,其设计过程中潜伏的伦理与安全迷宫便…...
NodeJS全栈WEB3面试题——P5全栈集成与 DApp 构建
5.1 如何实现一个完整的 Web3 登录流程(前端 后端)? ✅ 核心机制:钱包签名 后端验签 Web3 登录是基于“消息签名”来验证用户链上身份,而非传统用户名/密码。 💻 前端(使用 MetaMask&#…...

鸿蒙进阶——Mindspore Lite AI框架源码解读之模型加载详解(一)
文章大纲 引言一、模型加载概述二、核心数据结构三、模型加载核心流程 引言 Mindspore 是一款华为开发开源的AI推理框架,而Mindspore Lite则是华为为了适配在移动终端设备上运行专门定制的版本,使得我们可以在OpenHarmony快速实现模型加载和推理等功能&…...

【数据结构】图论核心算法解析:深度优先搜索(DFS)的纵深遍历与生成树实战指南
深度优先搜索 导读:从广度到深度,探索图的遍历奥秘一、深度优先搜索二、算法思路三、算法逻辑四、算法评价五、深度优先生成树六、有向图与无向图结语:深潜与回溯,揭开图论世界的另一面 导读:从广度到深度,…...
Mysql数据库 索引,事务
Mysql数据库 索引,事务 一.索引 简介 索引是数据库中用于提高查询效率的一种数据结构,它通过预先排序和存储特定列的值,帮助数据库快速定位符合条件的数据行,避免全表扫描。以下是关于索引的核心简介: 1. 核心作用…...

RESTful APInahamcon Fuzzies-write-up
RESTful API 路径详解 RESTful API(Representational State Transfer)是一种 基于 HTTP 协议的 API 设计风格,它通过 URL 路径 和 HTTP 方法(GET、POST、PUT、DELETE 等)来定义资源的访问方式。它的核心思想是 将数据…...
安装DockerDocker-Compose
Docker 1、换掉关键文件 vim /etc/yum.repos.d/CentOS-Base.repo ▽ [base] nameCentOS-$releasever - Base - Mirrors Aliyun baseurlhttp://mirrors.aliyun.com/centos/$releasever/os/$basearch/ gpgcheck1 enabled1 gpgkeyhttp://mirrors.aliyun.com/centos/RPM-GPG-KEY-C…...

2025年机械化设计制造与计算机工程国际会议(MDMCE 2025)
2025年机械化设计制造与计算机工程国际会议(MDMCE 2025) 2025 International Conference on Mechanized Design, Manufacturing, and Computer Engineering 一、大会信息 会议简称:MDMCE 2025 大会地点:中国贵阳 审稿通知&#…...
Java生态中的NLP框架
Java生态系统中提供了多个强大的自然语言处理(NLP)框架,以下是主要的NLP框架及其详细说明: 1、Apache OpenNLP 简介:Apache OpenNLP是Apache软件基金会的开源项目,提供了一系列常用的NLP工具。 主要功能: …...
NVM,Node.Js 管理工具
node_mirror: https://npmmirror.com/mirrors/node/ npm_mirror: https://npmmirror.com/mirrors/npm/ 一、什么是 NVM? NVM 是一个命令行工具,允许你在同一台机器上安装、切换和管理多个 Node.js 版本,解决项目间版本冲突问题。 二、安装 …...

Jmeter逻辑控制器、定时器
目录 一、Jmeter逻辑控制器 ①IF(如果)控制器 作用: 位置: 参数介绍: 步骤: ②循环控制器 作用: 位置: 步骤: 线程组属性VS循环控制器 ③ForEach控制器 作用: 位置&am…...
每日八股文6.2
每日八股-6.2 Go1.GMP调度原理(这部分多去看看golang三关加深理解)2.GC(同样多去看看golang三关加深理解)3.闭包4.go语言函数是一等公民是什么意思5.sync.Mutex和sync.RWMutex6.sync.WaitGroup7.sync.Cond8.sync.Pool9.panic和rec…...

R3GAN利用配置好的Pytorch训练自己的数据集
简介 简介:这篇论文挑战了"GANs难以训练"的广泛观点,通过提出一个更稳定的损失函数和现代化的网络架构,构建了一个简洁而高效的GAN基线模型R3GAN。作者证明了通过合适的理论基础和架构设计,GANs可以稳定训练并达到优异性能。 论文题目:The GAN is dead; long l…...

吴恩达机器学习笔记(1)—引言
目录 一、欢迎 二、机器学习是什么 三、监督学习 四、无监督学习 一、欢迎 机器学习是当前信息技术领域中最令人兴奋的方向之一。在这门课程中,你不仅会学习机器学习的前沿知识,还将亲手实现相关算法,从而深入理解其内部机理。 事实上&…...
信贷风控规则策略累计增益lift测算
在大数据风控业务实践过程中,目前业内主要还是采用规则叠加的办法做策略,但是会遇到一些问题: 1.我们有10条规则,我上了前7条后,后面3条的绝对风险增益是多少? 2.我的规则之间应该做排序吗,最重…...

【笔记】Windows 部署 Suna 开源项目完整流程记录
#工作记录 因篇幅有限,所有涉及处理步骤的详细处理办法请参考文末资料。 Microsoft Windows [Version 10.0.27868.1000] (c) Microsoft Corporation. All rights reserved.(suna-py3.12) F:\PythonProjects\suna>python setup.py --admin███████╗██╗…...

【Elasticsearch】Elasticsearch 核心技术(一):索引
Elasticsearch 核心技术(一):索引 1.索引的定义2.索引的命名规范3.索引的增、删、改、查3.1 创建索引3.1.1 创建空索引 3.2 删除索引3.3 文档操作3.3.1 添加/更新文档(指定ID)3.3.2 添加文档(自动生成ID&am…...
AudioTrack的理解
采样率说的是一秒钟采样多少点 波形频率说的是一个采样周期内有多少个波形 pcm编码说的是 16 还是8 直接决定write的时候使用short还是byte 一、初始化配置 参数设定 需定义音频格式、采样率及缓冲区大小,确保符合硬件支持范围 // 音频参数配置 int sample…...
HTTP请求与HTTP响应介绍及其字段
HTTP请求 请求行:请求行主要包含请求方法、请求URI(统一资源标识符)和HTTP协议版本。例如: GET /index.html HTTP/1.1 请求头(Headers):包含客户端的元数据,为服务器提供了额外信息…...

Fullstack 面试复习笔记:操作系统 / 网络 / HTTP / 设计模式梳理
Fullstack 面试复习笔记:操作系统 / 网络 / HTTP / 设计模式梳理 面试周期就是要根据JD调整准备内容(挠头),最近会混合复习针对全栈这块的内容,目前是根据受伤的JD,优先选择一些基础的操作系统、Java、Nod…...

中科院报道铁电液晶:从实验室突破到多场景应用展望
2020年的时候,相信很多关注科技前沿的朋友都注意到,中国科学院一篇报道聚焦一项有望改写显示产业格局的新技术 —— 铁电液晶(FeLC)。这项被业内称为 "下一代显示核心材料" 的研究,究竟取得了哪些实质性进展…...