优化问题基础知识

news2024/11/15 17:47:42

目录

    • 线性规划(LP)
    • 整数线性规划(ILP)
    • 混合整数线性规划(MILP)
    • 非线性规划(NLP)
    • 整数非线性规划(INLP)
    • 混合整数非线性规划(MINLP)
    • 分组背包问题(MCKP)
    • 启发式算法
    • 在线算法
    • 长期优化
    • 李雅普诺夫算法
    • 随机优化
    • 块坐标下降法(Block Coordinate Descent)
    • 逐次凸逼近算法(Sequential Convex Approximation Algorithm)


线性规划(LP)

  • 目标函数:线性
  • 约束条件:都是线性的
  • 决策变量:都是连续变量
  • 复杂度:求解相对简单,可以用单纯形法、内点法等多种有效算法求解,求解时间在多项式时间内

整数线性规划(ILP)

  • 目标函数:线性
  • 约束条件:都是线性的
  • 决策变量:都是整数变量

混合整数线性规划(MILP)

  • 目标函数:线性
  • 约束条件:都是线性的
  • 决策变量:包含两种类型 ①连续变量(可以取任意实数值)②整数变量(只能取整数值,通常包括二进制变量,即0或1)

非线性规划(NLP)

  • 目标函数:非线性
  • 约束条件:可以是线性或非线性的
  • 决策变量:都是连续变量

整数非线性规划(INLP)

  • 目标函数:非线性
  • 约束条件:可以是线性或非线性的
  • 决策变量:都是整数变量

混合整数非线性规划(MINLP)

  • 目标函数:非线性的
  • 约束条件:可以是线性或非线性的
  • 决策变量:包含两种类型 ①连续变量(可以取任意实数值)②整数变量(只能取整数值,通常包括二进制变量,即0或1)

分组背包问题(MCKP)

MCKP是一种更泛化的背包问题,它是将n件物品,分为若干组,在每组物品里最多取一件物品放入背包,每件物品的重量确定,价值确定,背包容量确定,求在不超过背包容量的情况下,可以存放的最大价值,其形式化描述如下:
在这里插入图片描述
其中 p i j p_{ij} pij为第i组中第j个物品的价值, w i j w_{ij} wij为其重量, x i j x_{ij} xij为是否选择该物品,它只能为0或1

参考:https://developer.aliyun.com/article/690841


启发式算法

启发式算法 (Heuristic Algorithms) 是相对于最优算法提出的。一个问题的最优算法是指求得该问题每个实例的最优解。启发式算法可以这样定义:一个基于直观或经验构造的算法,在可接受的花费 (指计算时间、占用空间等) 下给出待解决组合优化问题每一个实例的一个可行解,该可行解与最优解的偏离程度不一定事先可以预计。

启发式算法简单的划分为如下三类:简单启发式算法 (Simple Heuristic Algorithms),元启发式算法 (Meta-Heuristic Algorithms) 和 超启发式算法 (Hyper-Heuristic Algorithms)。
在这里插入图片描述

参考:https://leovan.me/cn/2019/04/heuristic-algorithms/


在线算法

在线算法能够在输入数据逐步到达的过程中,实时地做出决策,而不需要等待所有数据到达后再进行处理


长期优化

在长时间范围内优化系统的性能或资源分配,目标是在整体时间范围内实现最优效果


李雅普诺夫算法

李雅普诺夫算法既适用于长期优化,也适用于在线优化


随机优化

随机优化是一种寻找最佳解或接近最佳解的方法,其核心思想是通过随机的方式搜索解空间,而不是依赖于确定性的规则或梯度信息。这种方法适用于那些无法简单求解、复杂度高、或者解空间维度较大的问题


块坐标下降法(Block Coordinate Descent)

块坐标下降法是一种迭代优化算法,其核心思想是将优化问题分解为多个子问题,并分别对每个子问题进行优化。在每次迭代中,选择一个或多个块(即一组变量),固定其他变量,然后解决子问题以更新所选块的变量。通过重复这个过程,逐渐优化整个问题。块坐标下降法通常适用于变量之间具有较强相关性的优化问题,因为它可以利用变量之间的相关性来加速收敛。


逐次凸逼近算法(Sequential Convex Approximation Algorithm)

逐次凸逼近算法是一种逐步优化非凸函数的方法。它将非凸优化问题分解为一系列凸优化子问题,并依次求解这些子问题,每次求解时都对原始非凸函数进行凸逼近。在每次迭代中,通过构建一个局部的凸逼近模型来近似原始函数,并求解该凸逼近模型以获得下一个迭代点。通过不断地迭代和优化,逐步逼近原始非凸函数的最优解。逐次凸逼近算法通常对凸优化问题比较有效,但也可以应用于某些非凸问题,尤其是局部非凸问题

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

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

相关文章

当前API面临的安全风险,有什么安全措施

在当今信息化高速发展的时代,API(应用程序编程接口)技术已成为企业数字化转型的基石,它连接着各种服务、传输数据并控制系统,成为现代数字业务环境不可或缺的一部分。然而,随着API的广泛应用,其…

Vue3+ts(day07:pinia)

学习源码可以看我的个人前端学习笔记 (github.com):qdxzw/frontlearningNotes 觉得有帮助的同学,可以点心心支持一下哈(笔记是根据b站上学习的尚硅谷的前端视频【张天禹老师】,记录一下学习笔记,用于自己复盘,有需要学…

一文读懂RDMA: Remote Direct Memory Access(远程直接内存访问)

目录 ​编辑 引言 一、RDMA的基本原理 二、RDMA的主要特点 三、RDMA的编程接口 四、RDMA的代码演示 服务器端代码: 客户端代码: 五、总结 引言 RDMA,全称Remote Direct Memory Access,即远程直接内存访问,是…

海山数据库(He3DB)数据仓库发展历史与架构演进:(一)传统数仓

从1990年代Bill Inmon提出数据仓库概念后经过四十多的发展,经历了早期的PC时代、互联网时代、移动互联网时代再到当前的云计算时代,但是数据仓库的构建目标基本没有变化,都是为了支持企业或者用户的决策分析,包括运营报表、企业营…

【Qt 学习笔记】Qt常用控件 | 布局管理器 | 表单布局Form Layout

博客主页:Duck Bro 博客主页系列专栏:Qt 专栏关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ Qt常用控件 | 布局管理器 | 表单布局Form Layout 文章编号&#xff1a…

黑马点评3——优惠券秒杀

🌈hello,你好鸭,我是Ethan,一名不断学习的码农,很高兴你能来阅读。 ✔️目前博客主要更新Java系列、项目案例、计算机必学四件套等。 🏃人生之义,在于追求,不在成败,勤通…

2024最新流媒体在线音乐系统网站源码| 音乐社区 | 多语言 | 开心版

简介: 2024最新流媒体在线音乐系统网站源码| 音乐社区 | 多语言 | 开心版 下载地址 https://www.kuaiyuanya.com/product/article/index/id/33.html 图片:

Pytorch DDP分布式细节分享

自动微分和autograde 自动微分 机器学习/深度学习关键部分之一:反向传播,通过计算微分更新参数值。 自动微分的精髓在于它发现了微分计算的本质:微分计算就是一系列有限的可微算子的组合。 自动微分以链式法则为基础,依据运算逻…

笔记-Apriori算法介绍(Python实现)

1.Apriori算法简介 Apriori算法是经典的挖掘频繁项集和关联规则的数据挖掘算法。A priori在拉丁语中指"来自以前"。当定义问题时,通常会使用先验知识或者假设,这被称作"一个先验"(a priori)。Apriori算法的名…

回溯算法05(leetcode491/46/47)

参考资料: https://programmercarl.com/0491.%E9%80%92%E5%A2%9E%E5%AD%90%E5%BA%8F%E5%88%97.html 491. 非递减子序列 题目描述: 给你一个整数数组 nums ,找出并返回所有该数组中不同的递增子序列,递增子序列中 至少有两个元素…

基于python的k-means聚类分析算法,对文本、数据等进行聚类,有轮廓系数和手肘法检验

K-means算法是一种常见的聚类算法,用于将数据点分成不同的组(簇),使同一组内的数据点彼此相似,不同组之间的数据点相对较远。以下是K-means算法的基本工作原理和步骤: 工作原理: 初始化&#x…

Java面试八股之start()和run()的区别

start()和run()的区别 在Java中,run()方法和start()方法是与线程操作紧密相关的,两者之间存在本质的区别: start()是Thread类的一个实例方法,它的主要作用是启动一个新的线程。当调用线程对象的start()方法时,Java虚…

教师专属的成绩发布小程序

还在为成绩发布而烦恼?还在担心家长无法及时获得孩子的学习反馈?是否想要一个既安全又高效的工具来简化你的教学工作?那么,易查分小程序可能是你一直在寻找的答案。 现在的老师们有了超多的工具来帮助我们减轻负担,提高…

数据结构之二叉树的超详细讲解(2)--(堆的概念和结构的实现,堆排序和堆排序的应用)

个人主页:C忠实粉丝 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C忠实粉丝 原创 数据结构之二叉树的超详细讲解(2)--(堆的概念和结构的实现,堆排序和堆排序的应用) 收录于专栏【数据结构初阶】 本专栏旨在分享学习数据结构学习的一点学习笔记…

python从0开始学习(十二)

目录 前言 1、字符串的常用操作 2、字符串的格式化 2.1 格式化字符串的详细格式(针对format形式) ​编辑 总结 前言 上一篇文章我们讲解了两道关于组合数据类型的题目,本篇文章我们将学习新的章节,学习字符串及正则表达式。 …

Gradle和Maven项目解决Spring Boot Configuration Annotation Processor not configured警告

问题描述 写了一个配置类,加了注解@ConfigurationProperties(prefix = “xxx”) 后一直报警告:Spring Boot Configuration Annotation Processor not configured 意思是 Spring boot 未配置注解处理器 解决过程 出现这个问题后,百度查了解决方式 1.maven项目 maven项目是…

logback 配置

https://zhuanlan.zhihu.com/p/673142694 配置结构 root 在 Logback 配置文件中, 元素用于配置根 Logger,它是整个日志系统的根节点。根 Logger 拥有最高级别,通常用于设置全局的日志级别和全局的 Appender(附加器)。…

[Algorithm][动态规划][路径问题][不同路径][不同路径Ⅱ][珠宝的最高价值]详细讲解

目录 1.不同路径1.题目链接2.算法原理详解3.代码实现 2.不同路径 II1.题目链接2.算法原理详解3.代码实现 3.珠宝的最高价值1.题目链接2.算法原理详解3.代码实现 1.不同路径 1.题目链接 不同路径 2.算法原理详解 思路: 确定状态表示 -> dp[i][j]的含义 走到dp[…

Mac 安装 git

文章目录 前言一、介绍二、下载三、验证四、配置五、Git常用命令六、git提交和撤销工作流程代码提交和提交同步代码撤销和撤销同步 FAQ1.homebrew 下载解决方法一(强烈推荐):解决方法二: 总结 前言 Git 是一个开源的分布式版本控…

JavaScript 中的 Range 和 Selection 对象

JavaScript 中的 Range 和 Selection 对象 前言 最近在做鼠标框选的需求,鼠标框选就需要用到 Range 和 Selection 对象。 Range 表示选择的区间范围,Selection 表示选择的文档内容。 下面就详细说下这两个对象 一、Range Range 接口表示一个包含节…