【优化论】约束优化算法

在这里插入图片描述

约束优化算法是一类专门处理目标函数在存在约束条件下求解最优解的方法。为了更好地理解约束优化算法,我们需要了解一些核心概念和基本方法。

约束优化的核心概念

  1. 可行域(Feasible Region)
    • 比喻:想象你在一个园艺场里种植不同种类的植物,但只有特定区域可以种植。可行域就是这些允许种植的区域。
    • 技术细节:可行域是满足所有约束条件的所有点的集合。若约束条件为 g i ( x ) ≤ 0 g_i(x) \leq 0 gi(x)0 h j ( x ) = 0 h_j(x) = 0 hj(x)=0 ,则可行域可以表示为 { x   ∣   g i ( x ) ≤ 0 ,   h j ( x ) = 0 } \{ x \, | \, g_i(x) \leq 0, \, h_j(x) = 0 \} {xgi(x)0,hj(x)=0}
  2. 拉格朗日乘子法(Lagrange Multipliers)
    • 比喻:假设你在调整种植区域时,既想保持植物健康生长(目标函数),又要遵循园艺场的规定(约束条件)。拉格朗日乘子法就像在这两者之间找到一个平衡点
    • 技术细节:拉格朗日乘子法引入拉格朗日乘子 λ \lambda λ ,构造拉格朗日函数 L ( x , λ ) = f ( x ) + λ g ( x ) L(x, \lambda) = f(x) + \lambda g(x) L(x,λ)=f(x)+λg(x) 。通过求解 ∇ L = 0 \nabla L = 0 L=0 可以找到约束优化问题的解。

常用的约束优化算法

  1. 罚函数法(Penalty Method)
    • 比喻:罚函数法就像在种植区域外种植植物时会受到罚款,这样你会尽量保持在可行域内
    • 技术细节:将约束条件转换为目标函数的一部分,加上一个惩罚项,使得在违反约束条件时目标函数的值变得很大。例如,对于约束 g ( x ) ≤ 0 g(x) \leq 0 g(x)0 ,构造目标函数 f ( x ) + 1 2 ρ max ⁡ ( 0 , g ( x ) ) 2 f(x) + \frac{1}{2}\rho \max(0, g(x))^2 f(x)+21ρmax(0,g(x))2 ,其中 ρ \rho ρ 是罚参数。
  2. 障碍函数法(Barrier Method)
    • 比喻:障碍函数法就像在可行域边界设置了障碍物,防止你越过边界。
    • 技术细节:引入障碍函数 ϕ ( x ) \phi(x) ϕ(x) ,当 x x x 靠近约束边界时,障碍函数值趋于无穷大。例如,对于约束 g ( x ) ≤ 0 g(x) \leq 0 g(x)0 ,构造目标函数 f ( x ) − μ log ⁡ ( − g ( x ) ) f(x) - \mu \log(-g(x)) f(x)μlog(g(x)) ,其中 μ \mu μ 是障碍参数。
  3. 拉格朗日乘子法(Lagrangian Method)
    • 比喻:拉格朗日乘子法就像同时调整种植区域和遵守规定的权重,使两者达到平衡。
    • 技术细节:构造拉格朗日函数 L ( x , λ , ν ) = f ( x ) + ∑ λ i g i ( x ) + ∑ ν j h j ( x ) L(x, \lambda, \nu) = f(x) + \sum \lambda_i g_i(x) + \sum \nu_j h_j(x) L(x,λ,ν)=f(x)+λigi(x)+νjhj(x) ,通过求解 ∇ L = 0 \nabla L = 0 L=0 可以找到问题的鞍点,从而求解优化问题。

实例一

让我们通过一个实例来具体了解约束优化的过程:

假设我们要最小化函数 f ( x ) = x 1 2 + x 2 2 f(x) = x_1^2 + x_2^2 f(x)=x12+x22 ,但有约束 g ( x ) = x 1 + x 2 − 1 ≤ 0 g(x) = x_1 + x_2 - 1 \leq 0 g(x)=x1+x210

  1. 罚函数法
    • 构造罚函数: P ( x ) = x 1 2 + x 2 2 + 1 2 ρ max ⁡ ( 0 , x 1 + x 2 − 1 ) 2 P(x) = x_1^2 + x_2^2 + \frac{1}{2}\rho \max(0, x_1 + x_2 - 1)^2 P(x)=x12+x22+21ρmax(0,x1+x21)2
    • x 1 + x 2 ≤ 1 x_1 + x_2 \leq 1 x1+x21 时,无惩罚项;当 x 1 + x 2 > 1 x_1 + x_2 > 1 x1+x2>1 时,有惩罚项,导致目标函数值增加。【目标是使目标函数最小】
  2. 障碍函数法
    • 构造障碍函数: B ( x ) = x 1 2 + x 2 2 − μ log ⁡ ( 1 − x 1 − x 2 ) B(x) = x_1^2 + x_2^2 - \mu \log(1 - x_1 - x_2) B(x)=x12+x22μlog(1x1x2)
    • x 1 + x 2 x_1 + x_2 x1+x2 接近 1 1 1 时, − log ⁡ ( 1 − x 1 − x 2 ) -\log(1 - x_1 - x_2) log(1x1x2) 的值趋于无穷大,使得目标函数值增大。
  3. 拉格朗日乘子法
    • 构造拉格朗日函数: L ( x , λ ) = x 1 2 + x 2 2 + λ ( x 1 + x 2 − 1 ) L(x, \lambda) = x_1^2 + x_2^2 + \lambda (x_1 + x_2 - 1) L(x,λ)=x12+x22+λ(x1+x21)
    • 求解 ∇ L = 0 \nabla L = 0 L=0 得到: 2 x 1 + λ = 0 2x_1 + \lambda = 0 2x1+λ=0 2 x 2 + λ = 0 2x_2 + \lambda = 0 2x2+λ=0 x 1 + x 2 − 1 = 0 x_1 + x_2 - 1 = 0 x1+x21=0
    • 解得 x 1 = x 2 = 1 2 , λ = − 1 x_1 = x_2 = \frac{1}{2} ,\lambda = -1 x1=x2=21λ=1

实例二

我们需要最小化函数 f ( x , y ) = x + 3 y f(x, y) = x + \sqrt{3}y f(x,y)=x+3 y ,并且满足约束条件 x 2 + y 2 = 1 x^2 + y^2 = 1 x2+y2=1

罚函数法

  1. 构造罚函数
    首先,我们将约束条件转换为一个惩罚项。对于约束条件 x 2 + y 2 = 1 x^2 + y^2 = 1 x2+y2=1 ,我们可以构造以下罚函数: P ( x , y ) = ( x 2 + y 2 − 1 ) 2 P(x, y) = (x^2 + y^2 - 1)^2 P(x,y)=(x2+y21)2

    这里,我们使用平方形式来确保任何违约束的情况都会被显著地惩罚

  2. 构造新的目标函数
    将惩罚项加入到目标函数中,形成新的目标函数: F ( x , y ) = x + 3 y + ρ 2 ( x 2 + y 2 − 1 ) 2 F(x, y) = x + \sqrt{3}y + \frac{\rho}{2} (x^2 + y^2 - 1)^2 F(x,y)=x+3 y+2ρ(x2+y21)2

    其中, ρ \rho ρ 是一个正的罚参数,用来调整惩罚项的权重。

  3. 求解优化问题
    我们的目标是找到使新的目标函数 F ( x , y ) F(x, y) F(x,y) 最小的 x x x y y y 值。

在这里插入图片描述

二次罚函数法算法详解

在这里插入图片描述

基本概念

  1. 目标函数:我们想最小化的函数。例如, f ( x , y ) = x + 3 y f(x, y) = x + \sqrt{3}y f(x,y)=x+3 y
  2. 约束条件:限制条件,必须满足。例如, x 2 + y 2 = 1 x^2 + y^2 = 1 x2+y2=1

罚函数法通过将约束条件转换为惩罚项,加入到目标函数中,从而形成新的目标函数。这个新目标函数在每次迭代时会逐步增加惩罚力度,使得解最终满足约束条件。

步骤解析

第一步:初始化

  1. 给定初始罚参数 σ 1 > 0 \sigma_1 > 0 σ1>0
    • 这是初始的惩罚参数。惩罚参数决定了违反约束条件时受到的惩罚程度。
    • 例如,设定 σ 1 = 1 \sigma_1 = 1 σ1=1
  2. 设定初始点 x 0 x^0 x0
    • 这是我们开始优化的初始猜测值。
    • 例如, x 0 = [ 0.5 , 0.5 ] x^0 = [0.5, 0.5] x0=[0.5,0.5]
  3. 设定迭代次数 k ← 1 k \leftarrow 1 k1
    • 这是一个计数器,用于跟踪迭代次数。
  4. 设定惩罚因子增长系数 ρ > 1 \rho > 1 ρ>1
    • 这是一个用来增加惩罚参数的因子,每次迭代后惩罚参数会乘以这个因子。
    • 例如,设定 ρ = 10 \rho = 10 ρ=10

第二步:迭代过程

  1. while 循环
    • 这个循环会持续运行,直到满足某个收敛准则(例如,目标函数值变化很小,或达到最大迭代次数)。
  2. 以当前点为初始点,求解新的点
    • 我们要最小化新的目标函数 P E ( x , σ k ) P_E(x, \sigma_k) PE(x,σk) ,找到新的 x k + 1 x^{k+1} xk+1

    • 新的目标函数形式为:

      P E ( x , σ k ) = f ( x ) + σ k 2 ( x 2 + y 2 − 1 ) 2 P_E(x, \sigma_k) = f(x) + \frac{\sigma_k}{2} (x^2 + y^2 - 1)^2 PE(x,σk)=f(x)+2σk(x2+y21)2

    • 使用数值优化方法(如梯度下降法)来求解这个新的目标函数。

  3. 更新罚参数
    • 计算新的罚参数 σ k + 1 = ρ σ k \sigma_{k+1} = \rho \sigma_k σk+1=ρσk
  4. 更新迭代次数
    • k ← k + 1 k \leftarrow k + 1 kk+1
  5. 结束迭代
    • 当满足收敛准则时,结束 while 循环。

详细解释与实例

初始化

我们设定初始参数:

σ 1 = 1 , x 0 = [ 0.5 , 0.5 ] , ρ = 10 , k = 1 \sigma_1 = 1, \quad x^0 = [0.5, 0.5], \quad \rho = 10, \quad k = 1 σ1=1,x0=[0.5,0.5],ρ=10,k=1

迭代过程

假设我们要最小化以下目标函数:

f ( x , y ) = x + 3 y f(x, y) = x + \sqrt{3}y f(x,y)=x+3 y

并且满足约束条件:

x 2 + y 2 = 1 x^2 + y^2 = 1 x2+y2=1

第一次迭代

  1. 构造新的目标函数

    P E ( x , σ 1 ) = x + 3 y + 1 2 σ 1 ( x 2 + y 2 − 1 ) 2 P_E(x, \sigma_1) = x + \sqrt{3}y + \frac{1}{2} \sigma_1 (x^2 + y^2 - 1)^2 PE(x,σ1)=x+3 y+21σ1(x2+y21)2

    其中 σ 1 = 1 \sigma_1 = 1 σ1=1

  2. 求解新目标函数
    使用数值优化方法找到最小化 P E ( x , 1 ) P_E(x, 1) PE(x,1) x x x y y y 值。
    假设我们找到新的点 x 1 x^1 x1

  3. 更新罚参数

    σ 2 = ρ σ 1 = 10 × 1 = 10 \sigma_2 = \rho \sigma_1 = 10 \times 1 = 10 σ2=ρσ1=10×1=10

  4. 更新迭代次数

    k ← 2 k \leftarrow 2 k2

第二次迭代

  1. 构造新的目标函数

    P E ( x , σ 2 ) = x + 3 y + 1 2 σ 2 ( x 2 + y 2 − 1 ) 2 P_E(x, \sigma_2) = x + \sqrt{3}y + \frac{1}{2} \sigma_2 (x^2 + y^2 - 1)^2 PE(x,σ2)=x+3 y+21σ2(x2+y21)2

    其中 σ 2 = 10 \sigma_2 = 10 σ2=10

  2. 求解新目标函数
    使用数值优化方法找到最小化 P E ( x , 10 ) P_E(x, 10) PE(x,10) x x x y y y 值。
    假设我们找到新的点 x 2 x^2 x2

  3. 更新罚参数

    σ 3 = ρ σ 2 = 10 × 10 = 100 \sigma_3 = \rho \sigma_2 = 10 \times 10 = 100 σ3=ρσ2=10×10=100

  4. 更新迭代次数

    k ← 3 k \leftarrow 3 k3

这个过程不断重复,直到满足收敛准则为止。

什么是收敛准则

收敛准则是用来决定优化算法何时停止迭代的标准。常见的收敛准则包括以下几种:

  1. 目标函数值变化很小
    • 如果在连续的迭代中,目标函数的值变化很小(小于某个阈值),则认为算法已收敛,可以停止迭代。
    • 例如,设定阈值为 ϵ \epsilon ϵ,如果 ∣ f ( x k + 1 ) − f ( x k ) ∣ < ϵ |f(x^{k+1}) - f(x^k)| < \epsilon f(xk+1)f(xk)<ϵ,则停止迭代。
  2. 梯度值很小
    • 如果目标函数的梯度(或导数)值很小,表示已经到达了极值点附近,则可以停止迭代。
    • 例如,如果 ∥ ∇ f ( x k ) ∥ < ϵ \|\nabla f(x^k)\| < \epsilon ∥∇f(xk)<ϵ,则停止迭代。
  3. 迭代次数达到上限
    • 如果迭代次数达到了预先设定的最大迭代次数,则停止迭代。
    • 例如,设定最大迭代次数为 N N N,如果 k ≥ N k \geq N kN,则停止迭代。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

软连接迁移 Docker 的默认安装(存储)目录

前言 经常我们会拿到一些别人装好的服务器&#xff0c;需要在这些系统上启动我们的docker服务。 但是这些“专业人员”呢&#xff0c;有时候就会有非常不专业的操作&#xff0c;比如他把根目录/只划分50GB&#xff0c;/home却有51TB。这个时候就会导致我们的服务器还有很多空间…

万界星空科技机械加工行业MES解决方案

机械加工行业作为制造业的重要组成部分&#xff0c;面临着生产效率、成本控制和产品质量提升等多重挑战。为了应对这些挑战&#xff0c;引入并实施制造执行系统&#xff08;MES&#xff09;成为了行业的必然选择。本文将详细介绍一种针对机械加工行业的MES解决方案&#xff0c;…

STM32-HAL-FATFS(文件系统)(没做完,stm32f103zet6(有大佬的可以在评论区说一下次板子为什么挂载失败了))

1STM32Cube配置 1-1配置时钟 1-2配置调试端口 1-3配置uart 1-4配置SDIO&#xff08;注意参数&#xff09;&#xff08;其中他的初始化的异常函数给注释&#xff0c;SD卡文件写了&#xff09; 配置了还要打开中断和DMA可在我的其他文章中看一样的 1-5配置FatFs (只改了图选中…

【Kubernetes】Pod 资源调度之亲和性调度

Pod 资源调度之亲和性调度 1.Node 亲和性调度1.1 Node 硬亲和性1.2 Node 软亲和性 2.Pod 亲和性调度2.1 Pod 硬亲和2.2 Pod 软亲和2.3 Pod 反亲和 Kubernetes 的 默认调度器 以 预选、优选、选定机制 完成将每个新的 Pod 资源绑定至为其选出的目标节点上&#xff0c;不过&#…

Javase-异常

文章目录 1. 异常概述2. 异常的继承结构3. 自定义异常4. 异常的处理5. 异常的使用6. finally语句块7. 方法覆盖与异常 1. 异常概述 什么是异常 ①什么是异常?有什么用? 1.Java中的异常是指程序运行时出现了错误或异常情况&#xff0c;导致程序无法继续正常执行的现象。例如&…

【CG】计算机图形学(Computer Graphics)基础(其壹)

0 学习视频 B站GAMES101-现代计算机图形学入门-闫令琪 1 什么是计算机图形学 1.1 什么是好的画面&#xff1f; 画面足够亮。如果全局光照做的好&#xff0c;整个画面就会亮&#xff0c;看起来很舒服。 1.2 计算机图形学涉及到的领域 数学&#xff08;透视&#xff09;投影…

java基础:面向对象(一)

一、概念 物以类聚&#xff0c;分类的思维模式&#xff0c;思考问题首先会解决问题需要哪些分类&#xff0c;然后对这些分类进行单独思考。最后&#xff0c;才对某个分类下的细节进行面向过程的思索。面向对象适合处理复杂的问题&#xff0c;适合处理需要多人协作的问题!对于描…

vulhub靶场之DEVGURU:1

1 信息收集 1.1 主机发现 arp-scan -l 发现主机IP地址为“192.168.1.11 1.2 端口发现 nmap -sS -sV -A -T5 -p- 192.168.1.11 发现端口为&#xff1a;22&#xff0c;80&#xff0c;8585 1.3 目录扫描 dirsearch -u 192.168.1.11 发现存在git泄露 2 文件和端口访问 2…

idea中没有显示‘‘Spring‘‘一栏 (已解决)

第一步: 随便找一个Bean(即直接或者间接使用Component的类) 第二步: 找到左边的图标, 右键这个图标, 然后选择如下选项: 第三步: 成功 然后就成功了, 可以看到具体的bean了以及其bean的关系图等.

MySQL的Geometry数据处理之WKB方案

MySQL的Geometry数据处理之WKT方案&#xff1a;https://blog.csdn.net/qq_42402854/article/details/140134357 MySQL的Geometry数据处理之WKT方案中&#xff0c;介绍WTK方案的优点&#xff0c;也感受到它的繁琐和缺陷。比如&#xff1a; 需要借助 ST_GeomFromText和 ST_AsTex…

主从复制原理及操作

主从复制的概念 主从复制是一种在数据库系统中常用的数据备份和读取扩展技术&#xff0c;通过将一个数据库服务器&#xff08;主服务器&#xff09;上的数据变更自动同步到一个或多个数据库服务器&#xff08;从服务器&#xff09;上&#xff0c;以此来实现数据的冗余备份、读…

数据库之SQL(二)

目录 一、简述SQL中如何将“行”转换为“列” 二、简述SQL注入 三、如何将一张表的部分数据更新到另一张表 四、WHERE和HAVING的区别 一、简述SQL中如何将“行”转换为“列” 我们以MySQL数据库为例&#xff0c;来说明行转列的实现方式。 首先&#xff0c;假设我们有一张分…

WAIC 2024:科技界的摇滚狂欢,你错过了什么?

大数据产业创新服务媒体 ——聚焦数据 改变商业 2024年7月5日&#xff0c;WAIC 2024举办的第二天。数据猿作为受邀媒体&#xff0c;在今天继续亲历这一场关于未来的盛会。在这片汇聚了全球顶尖科技力量的舞台上&#xff0c;见证了人工智能领域的最新成果&#xff0c;感受到了科…

Midjourney对图片细微调整和下载保存

点击v2是对第二图片细微调整。 点击u3对第3张图片进行放大。 保存图片: 对点击u3放大的图片&#xff0c;双击 , 右键保存图片

hdu物联网硬件实验3 按键和中断

学院 班级 学号 姓名 日期 成绩 实验题目 按键和中断 实验目的 实现闪灯功能转换 硬件原理 无 关键代码及注释 /* Button Turns on and off a light emitting diode(LED) connected to digital pin 13, when pressing a pushbutton attached…

招聘一个1-3年经验的Java工程师:企业视角的技能与素质要求

个人名片 &#x1f393;作者简介&#xff1a;java领域优质创作者 &#x1f310;个人主页&#xff1a;码农阿豪 &#x1f4de;工作室&#xff1a;新空间代码工作室&#xff08;提供各种软件服务&#xff09; &#x1f48c;个人邮箱&#xff1a;[2435024119qq.com] &#x1f4f1…

Spring的核心基础:感受一下对象工厂

“欢迎来到Spring&#xff01;”的小项目 &#xff08;1&#xff09;写一个HelloSpring的类&#xff0c;采用setter方法注入userName&#xff0c;写一个简单的show方法。 package com.itzhoutao; public class HelloSpring{private String userName;public void setUserName…

Spring源码十一:事件驱动

上一篇Spring源码十&#xff1a;BeanPostProcess中&#xff0c;我们介绍了BeanPostProcessor是Spring框架提供的一个强大工具&#xff0c;它允许我们开发者在Bean的生命周期中的特定点进行自定义操作。通过实现BeanPostProcessor接口&#xff0c;开发者可以插入自己的逻辑&…

核心实验:基于Web前端的性能测试分析!

实验简介 本实验主要利用IE和Chrome的F12开发人员工具结合Web前端测试分析相关知识&#xff0c;对常见网站进行基于前端的性能测试分析&#xff0c;本实验将不会使用到测试开发相关技术&#xff0c;而是纯粹意义上的手工测试&#xff0c;但却是很容易找到系统前端性能及设计问…

AI行业的非零和博弈:解读Mustafa Suleyman的观点

引言 在人工智能&#xff08;AI&#xff09;领域&#xff0c;微软AI公司的CEO Mustafa Suleyman最近在阿斯彭思想节上的访谈引起了广泛关注。与CNBC记者Andrew Ross Sorkin的对话中&#xff0c;Suleyman不仅分享了他对OpenAI人事变动的看法&#xff0c;还深入探讨了AI行业的现…