目录
- 线性规划(LP)
- 整数线性规划(ILP)
- 混合整数线性规划(MILP)
- 非线性规划(NLP)
- 整数非线性规划(INLP)
- 混合整数非线性规划(MINLP)
- 求解算法
- 分组背包问题(MCKP)
- 启发式算法
- 在线算法(优化)
- 离线优化
- 长期优化
- 李雅普诺夫
- 随机优化
- 块坐标下降法(Block Coordinate Descent)
- 逐次凸逼近算法(Sequential Convex Approximation Algorithm)
- NP-hard
- 最优化
- 凸优化
- 非凸优化
- 去中心化优化(decentralized optimization)
- Stackelberg博弈
- 双边匹配
- Markov Decision Process (MDP)
- Q-learning
- Deep Q-network (DQN)
- Double Deep Q-learning(DDQN)
- DDPG
线性规划(LP)
- 目标函数:线性
- 约束条件:都是线性的
- 决策变量:都是连续变量
- 凸性分析:一定是凸优化
整数线性规划(ILP)
- 目标函数:线性
- 约束条件:都是线性的
- 决策变量:都是整数变量
- 凸性分析:非凸优化,虽然目标函数和约束条件是线性的,但由于整数决策变量,解空间不是一个凸集
混合整数线性规划(MILP)
- 目标函数:线性
- 约束条件:都是线性的
- 决策变量:包含两种类型 ①连续变量(可以取任意实数值)②整数变量(只能取整数值,通常包括二进制变量,即0或1)
- 凸性分析:非凸优化,虽然目标函数和约束条件是线性的,但由于整数决策变量,解空间不是一个凸集
非线性规划(NLP)
- 目标函数:非线性(可能包含平方、平方根、对数、指数等非线性项)
- 约束条件:可以是线性或非线性的
- 决策变量:都是连续变量
- 凸性分析:非线性规划问题是否是凸优化问题,取决于目标函数和约束条件的形式。如果目标函数是凸的,并且约束条件也定义了一个凸集(即,约束条件也是凸的),那么非线性规划问题就是一个凸优化问题。否则,它就是非凸优化问
整数非线性规划(INLP)
- 目标函数:非线性
- 约束条件:可以是线性或非线性的
- 决策变量:都是整数变量
- 凸性分析:通常不是凸优化问题,尽管目标函数和约束条件可能是凸的,但整数约束使得解空间不再是一个凸集,从而使得整个问题变成非凸的
混合整数非线性规划(MINLP)
- 目标函数:非线性的
- 约束条件:可以是线性或非线性的
- 决策变量:包含两种类型 ①连续变量(可以取任意实数值)②整数变量(只能取整数值,通常包括二进制变量,即0或1)
- 凸性分析:通常不是凸优化问题。即使目标函数和约束条件都是凸的,但混合了整数变量和连续变量的解空间使得问题变得非凸
求解算法
优化类型 | 常用求解方法 |
---|---|
线性规划(LP) | 单纯形法(Simplex Method) |
内点法(Interior Point Method) | |
整数线性规划(ILP) | 分支定界法(Branch and Bound) |
割平面法(Cutting Plane Method) | |
混合整数线性规划(MILP) | 分支定界法(Branch and Bound) |
割平面法(Cutting Plane Method) | |
分支切割法(Branch and Cut) | |
非线性规划(NLP) | 梯度下降法(Gradient Descent) |
牛顿法(Newton’s Method) | |
内点法(Interior Point Method) | |
序列二次规划(Sequential Quadratic Programming, SQP) | |
整数非线性规划(INLP) | 分支定界法(Branch and Bound) |
分支切割法(Branch and Cut) | |
启发式算法(Heuristic Algorithms) | |
混合整数非线性规划(MINLP) | 分支定界法(Branch and Bound) |
分支切割法(Branch and Cut) | |
全局优化方法(Global Optimization Methods) | |
启发式算法(Heuristic Algorithms) | |
杂交算法(Hybrid Algorithms) |
分组背包问题(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)
逐次凸逼近算法是一种逐步优化非凸函数的方法。它将非凸优化问题分解为一系列凸优化子问题,并依次求解这些子问题,每次求解时都对原始非凸函数进行凸逼近。在每次迭代中,通过构建一个局部的凸逼近模型来近似原始函数,并求解该凸逼近模型以获得下一个迭代点。通过不断地迭代和优化,逐步逼近原始非凸函数的最优解。逐次凸逼近算法通常对凸优化问题比较有效,但也可以应用于某些非凸问题,尤其是局部非凸问题
NP-hard
-
NP-hard: NP难可以理解为一种问题的难度级别,表示在目前的计算能力下,在多项式时间内不太可能找到一个解。但一旦有了解,验证解的正确性相对容易的问题。
-
多项式时间:如果一个算法的运行时间是输入规模的多项式函数,我们说这个算法是多项式时间复杂度的
最优化
最优化包含了凸优化、非凸优化,凸优化是一类特殊的最优化问题,启发式算法和深度强化学习可以用于解决复杂的最优化问题。
凸优化
- 定义:目标函数和所有的约束都是凸函数的,在凸优化中,目标函数的局部嘴有点也是全局最优点
- 复杂性:大多数凸优化都是P问题,可以在多项式时间内求解
非凸优化
- 定义:存在多个局部最优点
- 复杂性:通常求全局最优解的算法复杂度是指数级的,因此通常是NP-hard的
- 求解方法:
- 局部搜索算法: 与凸优化问题不同,非凸问题可能存在多个局部最小值。局部搜索算法如梯度下降和牛顿法可以找到局部最小值,但不能保证找到全局最小值。
- 随机化算法: 随机算法如模拟退火和遗传算法可以跳出局部最小值,通过引入随机性来寻找更广阔的搜索空间。
- 分解方法: 将复杂的非凸问题分解为多个子问题,通过交替优化来逐步逼近全局最优解。
- 凸近似: 将非凸问题近似为凸问题,通过求解近似问题来获得原问题的解
- 深度强化学习
去中心化优化(decentralized optimization)
集中式调度和资源分配可能会忽略用户的意愿,每个用户都想优先获得更多的资源。去中心化优化。
去中心化优化就是通过让各个独立单元在局部信息的基础上自主决策和协作,来实现资源的最优分配。
博弈论
和双边匹配
是解决去中心化优化的有效方式
参考:Resource Management in Mobile Edge Computing:
A Comprehensive Survey
Stackelberg博弈
是一种两阶段博弈模型,在边缘计算中为计算卸载提供激励机制,玩家被标记为领导者(如边缘服务器)和多个追随者(如移动设备)。在Stackelberg博弈中,领导者选择最佳应对策略以最大化其收益,而追随者对领导者的行为做出理性反应以最小化其博弈成本函数。Stackelberg博弈的解是Stackelberg均衡。
与纳什均衡(Nash Equilibrium,NE)稍有不同,NE中追随者的最优策略也是领导者的最优策略
参考:Resource Management in Mobile Edge Computing:
A Comprehensive Survey
双边匹配
双边匹配可以以decentralized
的方式解决边缘服务器中的决策问题,例如用户-服务器关联问题,移动用户更倾向于选择能够提供更高的卸载率和计算资源的边缘服务器,而边缘服务器更倾向于选择计算开销更低的用户。
参考:Resource Management in Mobile Edge Computing:
A Comprehensive Survey
Markov Decision Process (MDP)
-
定义:是一种用于建模决策问题的数学框架,特别适用于那些涉及随机性和决策的系统。MDP由以下几个基本元素组成:
- 状态集合(States, S):系统可能处于的所有不同状态的集合。
- 动作集合(Actions, A):在每个状态下可以采取的所有可能动作的集合。
- 转移概率(Transition Probabilities, P):描述从一个状态采取某个动作后,转移到另一个状态的概率。
- 奖励函数(Reward Function, R):描述在某个状态下采取某个动作后获得的即时奖励。
- 折扣因子(Discount Factor, γ):用来权衡即时奖励和未来奖励的重要性,取值在0到1之间。
-
通俗易懂的解释
假设你在玩一个迷宫游戏,目标是找到出口。这个游戏可以用MDP来描述:- 状态集合(S):每个不同的位置都是一个状态。比如,“在入口处”是一个状态,“在一个死胡同”是另一个状态,“在出口”也是一个状态。
- 动作集合(A):你在每个位置可以采取的行动,比如“向前走”、“向左转”、“向右转”、“向后退”。
- 转移概率(P):这些描述了你采取一个行动后,会转移到哪个新位置的概率。例如,在一个状态下“向前走”,你可能有90%的概率移动到下一个格子,但也可能有10%的概率因为障碍而停留在原地。
- 奖励函数(R):你在某个状态下采取某个行动后得到的分数。比如,每走一步扣1分,找到出口加100分。
- 折扣因子(γ):这个值决定了你是更注重立即得分还是未来的得分。比如,值为0.9表示你比较在意未来的分数,而值为0表示你只在意当前的得分。
在这个迷宫游戏中,你的目标是找到一系列的行动(策略),使得你在游戏中的总得分最高。MDP提供了一种系统的方法来计算这种最佳策略。
Q-learning
-
定义:Q-learning 是一种强化学习(Reinforcement Learning)算法,用于帮助智能体(agent)在环境中学习如何采取行动,以最大化其总奖励。它基于一个叫做Q值的表格来存储状态和动作的组合,表示在特定状态下采取某个动作的预期奖励。Q-learning通过不断更新这个Q值表格来学习最佳策略。
-
通俗解释
想象你在一个迷宫中找出口,每走一步会有不同的奖励或惩罚。Q-learning就像一个笔记本,记录了在每个位置(状态)上每个可能的行动(动作)得到的分数(奖励)。每次你在迷宫中走动时,会更新这个笔记本,让它越来越准确,最终帮助你找到走出迷宫的最佳路径。
Deep Q-network (DQN)
-
定义:DQN 是Q-learning的改进版本,它使用神经网络来代替Q值表格。因为在复杂的环境中,状态和动作的组合太多,无法用表格存储。DQN通过神经网络来估算Q值,这样就可以处理更复杂的问题,如玩视频游戏。
-
通俗解释
如果说Q-learning是用笔记本来记录得分,DQN就是用计算机程序来记忆和估算得分。想象你在玩一个复杂的电子游戏,DQN就像一个非常聪明的助手,它不仅记录你的每一步得分,还能根据这些记录帮你预测接下来应该怎么走,才能得到更高的分数。
Double Deep Q-learning(DDQN)
-
定义:DDQN 是DQN的进一步改进,它解决了DQN在估算Q值时可能出现的过高估计问题。DDQN使用两个神经网络来分别选择和评估动作,从而得到更准确的Q值估算,避免了因为高估而选择错误的动作。
-
通俗解释
如果DQN是一个聪明的助手,那么DDQN就是两个助手,一个负责建议行动(选择动作),另一个负责评估这些行动(评估Q值)。这样可以避免单一助手可能犯的错误,使你在游戏中走得更好。
DDPG
-
定义:DDPG 是一种用于
连续动作空间
的强化学习算法,它结合了策略梯度(Policy Gradient)和DQN的优点。DDPG使用一个策略网络来决定最佳动作,并用一个Q网络来估算这些动作的价值,适用于例如机器人控制这类需要连续动作的任务。 -
通俗解释
如果你在控制一个遥控车,而控制它的每个动作(如转动方向盘的角度)都是连续的,那么DDPG就像是一个高级驾驶教练,它不仅告诉你什么时候转弯,还告诉你转多大角度最合适。DDPG通过不断练习来找到每个时刻最好的转动和加速方式,让你能以最优的方式驾驶遥控车。