【优化论】约束优化算法

在这里插入图片描述

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

约束优化的核心概念

  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.mzph.cn/diannao/41759.shtml

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

相关文章

基于机器学习的永磁同步电机矢量控制策略-高分资源-下载可用!

基于机器学习的永磁同步电机矢量控制策略 优势 训练了RL-Agent&#xff0c;能够提高电机在非线性负载下的性能。 部分程序 仿真结果 转矩估计及dq轴电流。 代码有偿&#xff0c;50&#xff0c;需要的可以联系。

数学建模算法目标规划

在人们的生产实践中&#xff0c;经常会遇到如何利用现有资源来安排生产&#xff0c;以取得最大经济 效益的问题。此类问题构成了运筹学的一个重要分支—数学规划&#xff0c;而线性规划(Linear Programming 简记 LP)则是数学规划的一个重要分支。特别是在计算机能处理成千上万个…

pycharm如何使用jupyter

目录 配置jupyter新建jupyter文件别人写的方法&#xff08;在pycharm种安装&#xff0c;在网页中使用&#xff09; pycharm专业版 配置jupyter 在pycharm终端启动一个conda虚拟环境&#xff0c;输入 conda install jupyter会有很多前置包需要安装&#xff1a; 新建jupyter…

可变参数 Collections 不可变集合 Stream流

目录 1.可变参数&#xff1a; 2.Collections: 3.不可变集合&#xff1a; 4.Stream流: 1、什么是流 2、如何生成流 1.单列集合获取Stream流 2.双列集合获取Stream流 3.数组获取Stream流&#xff1a; 4.一堆零散数据&#xff1a; Stream接口中的静态方法 3.Stream流的…

解决分布式环境下session共享问题

在分布式环境下&#xff0c;session会存在两个问题 第一个问题:不同域名下&#xff0c;浏览器存储的jsessionid是没有存储的。比如登录时认证服务auth.gulimall.com存储了session&#xff0c;但是搜索服务search.gulimall.com是没有这个session的&#xff1b; 第二个问题&…

基于SpringBoot的校园台球厅人员与设备管理系统

本系统是要设计一个校园台球厅人员与设备管理系统&#xff0c;这个系统能够满足校园台球厅人员与设备的管理及用户的校园台球厅人员与设备管理功能。系统的主要功能包括首页、个人中心、用户管理、会员账号管理、会员充值管理、球桌信息管理、会员预约管理、普通预约管理、留言…

w3wp.exe 中发生未处理的 Microsoft ,NETFramework 异常。

&#x1f3c6;本文收录于「Bug调优」专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收藏&&…

Spring 6.1.10版本源码编译

每篇一句 我们对时间的感知其实非常主观&#xff0c;我们越习惯于我们的生活方式&#xff0c;生活里面的新鲜感就越少&#xff0c;我们对时间 的感知就越快&#xff0c;生命就越短。 1.源码下载 进入Spring官网 https://spring.io/ 按照上图步骤进入如下Spring Framework链…

罗剑锋的C++实战笔记学习(二):容器、算法库、多线程

4、容器 1&#xff09;、容器的通用特性 所有容器都具有的一个基本特性&#xff1a;它保存元素采用的是值&#xff08;value&#xff09;语义&#xff0c;也就是说&#xff0c;容器里存储的是元素的拷贝、副本&#xff0c;而不是引用 容器操作元素的很大一块成本就是值的拷贝…

RAG 工业落地方案框架(Qanything、RAGFlow、FastGPT、智谱RAG)细节比对!CVPR自动驾驶最in挑战赛赛道,全球冠军被算力选手夺走了

RAG 工业落地方案框架&#xff08;Qanything、RAGFlow、FastGPT、智谱RAG&#xff09;细节比对&#xff01;CVPR自动驾驶最in挑战赛赛道&#xff0c;全球冠军被算力选手夺走了。 本文详细比较了四种 RAG 工业落地方案 ——Qanything、RAGFlow、FastGPT 和智谱 RAG&#xff0c;重…

SwiftUI 6.0(iOS 18.0)滚动视图新增的滚动阶段(Scroll Phase)监听功能趣谈

何曾几时&#xff0c;在 SwiftUI 开发中的秃头小码农们迫切需要一种能够读取当前滚动状态的方法。 在过去&#xff0c;他们往往需要借助于 UIKit 的神秘力量。不过这一切在 SwiftUI 6.0 中已成“沧海桑田”。 在本篇博文中&#xff0c;您将学到如下内容&#xff1a; 1. Scroll…

一份适合新手的软件测试练习项目

最近&#xff0c;不少读者托我找一个能实际练手的测试项目。开始&#xff0c;我觉得这是很简单的一件事&#xff0c;但当我付诸行动时&#xff0c;却发现&#xff0c;要找到一个对新手友好的练手项目&#xff0c;着实困难。 我翻了不下一百个web网页&#xff0c;包括之前推荐练…

nginx的知识面试易考点

Nginx概念 Nginx 是一个高性能的 HTTP 和反向代理服务。其特点是占有内存少&#xff0c;并发能力强&#xff0c;事实上nginx的并发能力在同类型的网页服务器中表现较好。 Nginx 专为性能优化而开发&#xff0c;性能是其最重要的考量指标&#xff0c;实现上非常注重效率&#…

linux驱动编程 - kfifo先进先出队列

简介&#xff1a; kfifo是Linux Kernel里面的一个 FIFO&#xff08;先进先出&#xff09;数据结构&#xff0c;它采用环形循环队列的数据结构来实现&#xff0c;提供一个无边界的字节流服务&#xff0c;并且使用并行无锁编程技术&#xff0c;即当它用于只有一个入队线程和一个出…

nginx修改网站默认根目录及发布(linux、centos、ubuntu)openEuler软件源repo站点

目录 安装nginx配置nginx其它权限配置 安装nginx dnf install -y nginx配置nginx whereis nginxcd /etc/nginx llcd conf.d touch vhost.conf vim vhost.conf 命令模式下输入:set nu或:set number可以显示行号 复制如下内容&#xff1a; server {listen 80;server_name…

ESP32 通过蓝牙显示歌词代码示例

通过蓝牙协议播放音乐&#xff0c;有的时候需要显示歌词&#xff0c;这里就是a2dp库获取了歌词 值得注意的是要想正确获取到歌词&#xff0c;必须打开各种播放器的字幕&#xff08;歌词&#xff09;开关 本项目用了三个开源库 a2dp&#xff0c;tft_espi,xfont. a2dp &#x…

【】AI八股-神经网络相关

Deep-Learning-Interview-Book/docs/深度学习.md at master amusi/Deep-Learning-Interview-Book GitHub 网上相关总结&#xff1a; 小菜鸡写一写基础深度学习的问题&#xff08;复制大佬的&#xff0c;自己复习用&#xff09; - 知乎 (zhihu.com) CV面试问题准备持续更新贴 …

.net 调用海康SDK的跨平台解决方案

📢欢迎点赞 :👍 收藏 ⭐留言 📝 如有错误敬请指正,赐人玫瑰,手留余香!📢本文作者:由webmote 原创📢作者格言:新的征程,我们面对的不仅仅是技术还有人心,人心不可测,海水不可量,唯有技术,才是深沉黑夜中的一座闪烁的灯塔序言 上2篇海康SDK使用以及常见的坑…

【JavaEE精炼宝库】文件操作(1)——基本知识 | 操作文件——打开实用性编程的大门

目录 一、文件的基本知识1.1 文件的基本概念&#xff1a;1.2 树型结构组织和目录&#xff1a;1.3 文件路径&#xff08;Path&#xff09;&#xff1a;1.4 二进制文件 VS 文本文件&#xff1a;1.5 其它&#xff1a; 二、Java 操作文件2.1 方法说明&#xff1a;2.2 使用演示&…

HCIA综合实验

学习新思想&#xff0c;争做新青年。今天学习的是HCIA综合实验&#xff01; 实验拓扑 实验需求 总部&#xff1a; 1、除了SW8 SW9是三层交换机&#xff0c;其他交换机均为2层交换机。 2、GW为总部的出口设备&#xff0c;使用单臂路由技术&#xff0c;VLAN10,20,100的网关都在GW…