当前位置: 首页 > 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 是查看当…...

在SpringBoot项目中整合SpringSession,基于Redis实现对Session的管理和事件监听

1、SpringSession简介 SpringSession是基于Spring框架的Session管理解决方案。它基于标准的Servlet容器API&#xff0c;提供了Session的分布式管理解决方案&#xff0c;支持把Session存储在多种场景下&#xff0c;比如内存、MongoDB、Redis等&#xff0c;并且能够快速集成到Spr…...

浅析vue中computed,method,watch,watchEffect的区别

方法methods只要调用每次都会执行watch(惰性)只有依赖项更新才会执行回调函数&#xff0c;且组件初次渲染不会执行watchEffect:自动追踪依赖变化&#xff0c;只要依赖更新即执行回调函数&#xff0c;且组件初次渲染即执行回调函数computed(惰性): 返回一个只读的ref,具有缓存功…...

activiti7的数据表和字段的解释

activiti7的数据表和字段的解释 activiti7版本有25张表&#xff0c;而activiti6有28张表&#xff0c;activiti5有27张表&#xff0c;绝大部分的表和字段的含义都是一样的&#xff0c;所以本次整理的activiti7数据表和字段的解释&#xff0c;也同样适用于activiti6和5。 1、总览…...

Java手写Trie树和Trie树应用拓展案例

Java手写Trie树和Trie树应用拓展案例 1. 算法思维导图 以下是使用mermaid代码表示的Trie树的实现原理&#xff1a; #mermaid-svg-5twy24X7Wqbhyulb {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-5twy24X7Wqbhyul…...

alova.js快速入门教程

官网地址&#xff1a;Alova.JS - Lightweight request strategy library | Alova.JS 目录 一、alova 是什么&#xff1f; 二、 快速入门 1、安装依赖 &#xff08;1&#xff09;使用npm方式安装 &#xff08;2&#xff09;使用yarn方式安装 2、在静态 html 中使用 一、al…...

获取IP地址-根据IP获取位置信息

获取外网IP地址&#xff0c;并得到该地址所在位置&#xff1b; 如&#xff1a;101.249.255.255 对应&#xff1a;西藏自治区-拉萨市-堆龙德庆区 string ipAddress GetIPAddress(); string location GetIPLocation(ipAddress); /// <summary>/// 获取IP地址/// </s…...

Android13适配-Google官方照片视频选择器

官方照片选择器 图 1. 照片选择器提供了一个直观的界面&#xff0c;便于与您的应用分享照片。 照片选择器的界面可供浏览和搜索&#xff0c;并按日期降序向用户显示其媒体库中的文件。如隐私保护最佳实践 Codelab 中所示&#xff0c;照片选择器为用户提供了一种安全的内置授权…...

云计算的发展趋势和挑战

本文将探讨云计算的发展趋势和挑战&#xff0c;旨在帮助读者了解云计算的最新动态和未来发展方向。 随着信息技术的发展&#xff0c;云计算作为一种新兴的计算模式&#xff0c;已经得到了广泛的应用和认可。它通过将计算资源、存储资源和应用程序等服务通过互联网提供给用户&a…...

PyG-GAT-Cora(在Cora数据集上应用GAT做节点分类)

文章目录 model.pymain.py参数设置运行图 model.py import torch.nn as nn from torch_geometric.nn import GATConv import torch.nn.functional as F class gat_cls(nn.Module):def __init__(self,in_dim,hid_dim,out_dim,dropout_size0.5):super(gat_cls,self).__init__()s…...

java专项练习(验证码)

package 专题练习;import java.util.Random;public class Developing_CAPTCHA {public static void main(String[] args) {/* 需求:定义方法生成一个5位的验证码 验证码长度为5,前四位为大或小写字母,最后一位是数字*///方法: 如果我们要在一堆没有规律的数据中随机抽取,可以先…...

wordpress网页提速/百度推广销售员的工作内容

众所周知Jboss依赖于JMX来装载MBean服务&#xff0c;而这些MBean服务组成了具体服务器实例的差异性。标准JBoss发布版本提供的所有功能都是基于MBean的。所以&#xff0c;如果要为JBoss服务器添加新的服务&#xff0c;最好的方法是开发自己的JMX MBean服务。MBean服务的生命周期…...

福州网站制作计划/守游网络推广平台登陆

【下载一键安装软件包】 百度云地址&#xff1a;https://pan.baidu.com/s/1TZqGKtE-46gxW96Ptfp4gA 网址&#xff1a;https://lnmp.org/ 【步骤】 通过第三方远程工具将软件包传入后,使用tar命令解压,进入解压后的文件夹,执行install.sh,如果是无人值守的请在官网生成无人值守脚…...

b2b网站开发/2023年东莞疫情最新消息

我相信&#xff0c;有很多小伙伴在看到这篇文章时就有了很多问号&#xff1a;用vim&#xff1f;疯了吧&#xff1f;sublime不香吗&#xff1f;pycharm不香吗&#xff1f;jupyter notebook不香吗&#xff1f;我这可是最新版的windows 100操作系统诶&#xff0c;你要劝我回到Dos/…...

网站开发售后服务协议/青岛网络推广公司

从小白进阶到java工程师&#xff0c;如何学习&#xff0c;这个问题对很多零基础学习的人来说很重要。建议通过灵活的在线学习&#xff0c;不断提升个人能力&#xff0c;拉勾IT课小编为大家分析如何掌握每一个细节化的知识点。接下来&#xff0c;分享一些常用的Java分布式缓存框…...

免费的个人网站平台/北京网络营销推广外包

MySQL官网 1、官方安装文档 http://dev.mysql.com/doc/mysql-yum-repo-quick-guide/en/ 2、下载 Mysql yum包 http://dev.mysql.com/downloads/repo/yum/ 下载到本地再上传到服务器&#xff0c;或者使用wget 直接下载 wget http://repo.mysql.com/mysql57-community-release…...

济南网站建设要多少钱/潍坊网站建设平台

线-小箭头&#xff0c;中间的线区分&#xff1a;->关联 &#xff1a;类中使用了对方的指针&#xff0c;或者引用--->依赖 &#xff1a;函数参数中使用了对方&#xff0c;指针方式或者引用方式&#xff0c;可以相互依赖。菱形-线-小箭头&#xff0c;开始端的菱形区分&…...