当前位置: 首页 > news >正文

数学建模| 优化入门+多目标规划

优化入门+多目标规划

  • 优化入门知识
    • 什么是优化问题
    • 如何判断是不是优化问题
    • 优化模型建模
    • 求解器
    • 优化问题的分类
  • 多目标规划

优化入门知识

什么是优化问题

优化问题:求最优,例如获利最大、最少损失、最短路径、最小化风险等等。
例如:之前文章提到华为杯2019F题多约束条件下智能飞行器航迹快速规划,其中第一问就涉及求飞行器从A点到B点带约束下的最短路径。

如何判断是不是优化问题

题目带有优化、规划、最值、安排、分配、最合理等等。

题目涉及到图,例如三维空间飞行、二维地图上旅行。

优化模型建模

优化模型格式:决策变量+目标函数+约束条件。

决策变量:能够对目标结果产生影响的变量。
x i , i = 1 , 2 , . . . , n x_i,i=1,2,...,n xi,i=1,2,...,n

目标函数:通常都是一个Min或者Max求某个决策变量的函数表达式。例如:
M i n ( o r M a x ) z = f ( x ) , x = ( x 1 , . . . , x n ) T Min(or Max)z=f(x),x=(x_1,...,x_n)^T Min(orMax)z=f(x),x=(x1,...,xn)T
约束条件:以s.t.为开头,后面写上约束条件。
s . t . { g 1 ( x ) ⩽ 0 g 2 ( x ) ⩽ 0 . . . g n ( x ) ⩽ 0 s.t. \begin{cases} g_1(x)\leqslant0\\ g_2(x)\leqslant0\\ ...\\ g_n(x)\leqslant0\\ \end{cases} s.t. g1(x)0g2(x)0...gn(x)0

求解器

优化模型建立好之后,选择什么样的算法去解模型是比赛的关键。

求解器:用来求解模型的程序、算法之类的,在matlab里面求解器填写的其实就是函数模型。

优化问题的分类

从目标函数的个数来说:可以分成单目标和多目标。

从问题的类型来说:可以分为规划类、图论和动态规划。

规划类按照决策变量在目标函数和约束条件中是否线性:可以分为线性规划和非线性规划。
规划类中,比较特殊的是决策变量为整数的“整数规划”,和决策变量只能取0或者1的“0-1规划”。
非线性规划中比较特殊的是二次规划,目标函数是关于决策变量的二次函数,约束条件是线性函数。

图论中常见的问题有:最短路、最小生成树、网络流和排队论。

多目标规划

条件:线性规划和非线性规划只有一个目标函数,多目标函数有多个目标函数( f i ( x ) f_{i}(x) fi(x)),讲究一个既要还要。

方法:多目标转化为单目标。

  • 优先因子:可以主观上给目标函数进行一个重要性排序,来使得整体的完成情况尽量好,也就是优先因子,相当于权重( P i P_i Pi)。
    m i n ∑ P i f i ( x ) min\sum P_{i}f_{i}(x) minPifi(x)
  • 平方加权:知道每个目标理想值的情况下,可以求每个目标函数和理想值的平方和,可以带上权重。
    m i n ∑ λ i [ f i ( x ) − f i ∗ ] 2 min\sum \lambda_{i}[f_{i}(x)-{f_i}^*]^2 minλi[fi(x)fi]2
  • 乘除法:如果每个目标重要程度一样。
    m i n f 1 ( x ) f 2 ( x ) . . . f k ( x ) f k + 1 ( x ) f k + 2 ( x ) . . . f n ( x ) min\frac{f_{1}(x)f_{2}(x)...f_{k}(x)}{f_{k+1}(x)f_{k+2}(x)...f_{n}(x)} minfk+1(x)fk+2(x)...fn(x)f1(x)f2(x)...fk(x)
  • 分开求最优解对比:有时候单独最优解之间差距可能不是很大,例如之前华为杯2019F题,有个论文就是分别求最优路径和最少矫正点,然后对比。

特殊:问题中存在刚性约束和柔性约束。刚性约束就是必须要满足的,否者就是不可行解。柔性约束就是可以存在偏差的,例如使目标f(x)尽可能不少于5,可以在5左右有正负偏差。这个正负偏差可以记作 d + 和 d − d^+和d^- d+d d + = m i n { f ( x ) − f ∗ , 0 } , d − = − m i n { f ∗ − f ( x ) , 0 } d^+=min\{f(x)-f^*,0\},d^-=-min\{f^*-f(x),0\} d+=min{f(x)f,0},d=min{ff(x),0}
例子:三个目标函数 f 1 ( x ) 、 f 2 ( x ) 、 f 3 ( x ) f_1(x)、f_2(x)、f_3(x) f1(x)f2(x)f3(x),三个目标是柔性约束,1尽量不超过、2尽量等于、3尽量不少于,会发现柔性约束都有“尽量”两个字作为修饰。最终的多目标规划函数可以写成:
min ⁡ { P 1 d 1 + + P 2 ( d 2 − + d 2 + ) + P 3 d 3 − } \min{\{P_1{d_1}^++P_2({d_2}^-+{d_2}^+)+P_3{d_3}^-\}} min{P1d1++P2(d2+d2+)+P3d3}
扩展一下格式:
m i n ∑ P i ( w i + d i + + w i − d i − ) min\sum {P_i({w_{i}}^+{d_{i}}^++{w_{i}}^-{d_{i}}^-)} minPi(wi+di++widi)

总结:多目标规划,可以转换成为单目标问题,然后单目标去看符合单目标中那种取套,根据情况套回规划类、图论和动态规划中。

相关文章:

数学建模| 优化入门+多目标规划

优化入门多目标规划 优化入门知识什么是优化问题如何判断是不是优化问题优化模型建模求解器优化问题的分类 多目标规划 优化入门知识 什么是优化问题 优化问题:求最优,例如获利最大、最少损失、最短路径、最小化风险等等。 例如:之前文章提…...

SSM整合Thymeleaf时,抽取公共页面并向其传递参数

第一步 创建一个名为 header.html 的公共头部页面模板&#xff0c;放在 WEB-INF 目录下的 common 文件夹中。在 header.html 中可以编写头部页面的HTML代码&#xff0c;并通过Thymeleaf的语法来接收参数&#xff0c;如下所示&#xff1a; <!DOCTYPE html> <html xml…...

接口测试 —— requests 的基本了解

● requests介绍及安装 ● requests原理及源码介绍 ● 使用requests发送请求 ● 使用requests处理响应 ● get请求参数 ● 发送post请求参数 ● 请求header设置 ● cookie的处理 ● https证书的处理 ● 文件上传、下载 requests介绍 ● requests是python第三方的HTT…...

2023年华为杯数学建模研赛D题思路解析+代码+论文

下文包含&#xff1a;2023华为杯研究生数学建模竞赛&#xff08;研赛&#xff09;D题思路解析代码参考论文等及如何准备数学建模竞赛&#xff08;22号比赛开始后逐步更新&#xff09; C君将会第一时间发布选题建议、所有题目的思路解析、相关代码、参考文献、参考论文等多项资…...

AB试验(三)一次试验的规范流程

AB试验&#xff08;三&#xff09;一次试验的规范流程 一次完整且规范的A/B试验可参考下图&#xff1a; 确定目标和假设 核心&#xff1a;A/B测试是因果推断&#xff0c;所以我们首先要确定原因和结果。目标决定了结果&#xff0c;而假设又决定了原因。 如何确定 分析问题&am…...

ROI tracking by using OpenCV

目录 source code: source code: import cv2tracker cv2.TrackerKCF_create() video cv2.VideoCapture(1)while True:ret,frame video.read()cv2.imshow("source frame",frame)k cv2.waitKey(30)if k q:break bbox cv2.selectROI(frame, False) ok tracker.i…...

(leetcode)二叉树最大深度

个人主页&#xff1a;Lei宝啊 愿所有美好如期而遇 目录 题目&#xff1a; 思路&#xff1a; 代码&#xff1a; 图解&#xff1a; 题目&#xff1a; 给定一个二叉树 root &#xff0c;返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数…...

【golang】调度系列之P

调度系列 调度系列之goroutine 调度系列之m 在前面两篇中&#xff0c;分别介绍了G和M&#xff0c;当然介绍的不够全面&#xff08;在写后面的文章时我也在不断地完善前面的文章&#xff0c;后面可能也会有更加汇总的文章来统筹介绍GMP&#xff09;。但是&#xff0c;抛开技术细…...

Vue3中watch用法

在 Vue3 中的组合式 API 中&#xff0c;watch 的作用和 Vue2 中的 watch 作用是一样的&#xff0c;他们都是用来监听响应式状态发生变化的&#xff0c;当响应式状态发生变化时&#xff0c;都会触发一个回调函数。 当需要在数据变化时执行异步或开销较大的操作时&#xff0c;com…...

组里来了一个实习生,一行代码引发了一个惨案

大家好&#xff0c;我是静幽水&#xff0c;一名大厂全栈程序员&#xff0c;今天给大家分享一个案例&#xff0c;看似简单。却容易引发惨案。 事情是这样的&#xff0c;最近组里来了一个实习生&#xff0c;因为项目工作量大&#xff0c;人力比较紧张&#xff0c;所以就分配了一…...

随手笔记(四十五)——idea git冲突

图片为引用&#xff0c;在一次导入项目至gitee的过程中&#xff0c;不知道为什么报了403&#xff0c;很奇怪的一个错误&#xff0c;网上很多的答案大概分成两种。 第一种是最多的&#xff0c;直接找到windows凭据删掉 很抱歉的告诉各位&#xff0c;你们很多人到这里就已经解…...

chacha20 算法流程

chacha20算法请参看 RFC:7539。下面是我的理解&#xff0c;欢迎指正。 chacha20算法的基本思想&#xff1a;加密时&#xff0c;将明文数据与用户之间约定的某些数据进行异或操作&#xff0c;得到密文数据&#xff1b;由异或操作的特点可知&#xff0c;在解密时&#xff0c;只需…...

准备篇(三)Python 爬虫第三方库

第三方库无法将 "pip" 识别ModuleNotFoundError: No module named pip install 安装路径相关问题requests 库和 BeautifulSoup 库requests 库BeautifulSoup 库第三方库 Python 的 标准库 中提供了许多有用的模块和功能,如字符串处理、网络通信、多线程等,但它们并…...

从零开始的PICO开发教程(4)-- VR世界 射线传送、旋转和移动

从零开始的PICO开发教程&#xff08;4&#xff09;-- VR世界 射线传送、旋转和移动 文章目录 从零开始的PICO开发教程&#xff08;4&#xff09;-- VR世界 射线传送、旋转和移动一、前言1、大纲 二、VR射线移动功能实现与解析1、区域传送&#xff08;1&#xff09;新建 XR Orig…...

防止攥改之水印功能组件

防止攥改之水印功能组件 效果图逻辑代码 效果图 逻辑代码 <template><div class"containerBox" ref"parentRef" style"height: 300px;background-color: red;"><slot></slot></div> </template><script…...

iOS 17 适配 Xcode 15 问题

在适配 iOS 17 xcode 15时遇到的问题&#xff0c;记录一下。 1、 Could not build module ‘WebKit’ type argument nw_proxy_config_t (aka struct nw_proxy_config *) is neither an Objective-C object nor a block type解决方案&#xff1a; 选中不能编译的库的xcodep…...

Element Plus 快速开始

1.完整引入&#xff08;全局引入&#xff09; // main.ts import { createApp } from vue import ElementPlus from element-plus import element-plus/dist/index.css import App from ./App.vueconst app createApp(App)app.use(ElementPlus) app.mount(#app) npm install e…...

华为云云耀云服务器L实例评测|StackEdit中文版在线Markdown笔记工具

华为云云耀云服务器L实例评测&#xff5c;StackEdit中文版在线Markdown笔记工具 一、云耀云服务器L实例介绍1.1 云服务器介绍1.2 应用场景1.3 支持镜像 二、云耀云服务器L实例配置2.1 重置密码2.2 服务器连接2.3 安全组配置 三、部署 StackEdit 中文版3.1 StackEdit 介绍3.2 环…...

MyEclipse报错javax/persistence/EntityManagerFactory

MyEclipse报错&#xff1a; Build path is incomplete. Cannot find class file for javax/persistence/EntityManagerFactory 解决方案&#xff1a; 引入依赖 <dependency><groupId>javax.persistence</groupId> <artifactId>persistence-api</a…...

【MySQL进阶】SQL性能分析

一、SQL性能分析 1.SQL执行频率 MySQL 客户端连接成功后&#xff0c;通过 show [session|global] status 命令可以提供服务器状态信 息。通过如下指令&#xff0c;可以查看当前数据库的 INSERT 、 UPDATE 、 DELETE 、 SELECT 的访问频次&#xff1a; -- session 是查看当…...

【Java学习笔记】Arrays类

Arrays 类 1. 导入包&#xff1a;import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序&#xff08;自然排序和定制排序&#xff09;Arrays.binarySearch()通过二分搜索法进行查找&#xff08;前提&#xff1a;数组是…...

376. Wiggle Subsequence

376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...

《通信之道——从微积分到 5G》读书总结

第1章 绪 论 1.1 这是一本什么样的书 通信技术&#xff0c;说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号&#xff08;调制&#xff09; 把信息从信号中抽取出来&am…...

基于Docker Compose部署Java微服务项目

一. 创建根项目 根项目&#xff08;父项目&#xff09;主要用于依赖管理 一些需要注意的点&#xff1a; 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件&#xff0c;否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...

C# 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

Angular微前端架构:Module Federation + ngx-build-plus (Webpack)

以下是一个完整的 Angular 微前端示例&#xff0c;其中使用的是 Module Federation 和 npx-build-plus 实现了主应用&#xff08;Shell&#xff09;与子应用&#xff08;Remote&#xff09;的集成。 &#x1f6e0;️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...

2025季度云服务器排行榜

在全球云服务器市场&#xff0c;各厂商的排名和地位并非一成不变&#xff0c;而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势&#xff0c;对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析&#xff1a; 一、全球“三巨头”…...

接口自动化测试:HttpRunner基础

相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具&#xff0c;支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议&#xff0c;涵盖接口测试、性能测试、数字体验监测等测试类型…...

C++实现分布式网络通信框架RPC(2)——rpc发布端

有了上篇文章的项目的基本知识的了解&#xff0c;现在我们就开始构建项目。 目录 一、构建工程目录 二、本地服务发布成RPC服务 2.1理解RPC发布 2.2实现 三、Mprpc框架的基础类设计 3.1框架的初始化类 MprpcApplication 代码实现 3.2读取配置文件类 MprpcConfig 代码实现…...

文件上传漏洞防御全攻略

要全面防范文件上传漏洞&#xff0c;需构建多层防御体系&#xff0c;结合技术验证、存储隔离与权限控制&#xff1a; &#x1f512; 一、基础防护层 前端校验&#xff08;仅辅助&#xff09; 通过JavaScript限制文件后缀名&#xff08;白名单&#xff09;和大小&#xff0c;提…...