码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 拉格朗日乘子法与罚函数


    在了解增广拉格朗日乘子法之前,先了解一下拉格朗日乘子法和罚函数。

    拉格朗日乘子法

    基本的拉格朗日乘子法(又称为拉格朗日乘数法),就是求函数f(x1,x2,...)在约束条件下极值的方法。其主要思想是引入一个新的参数λ(即拉格朗日乘子),将约束条件函数与原函数联系到一起,使能配成与变量数量相等的等式方程,从而求出得到原函数极值的各个变量的解。

    假设目标函数为f(x),约束条件为h_{k}(x)

    minf(x)\\s.t.h_{k}(x)=0,k=1,2,... ,l

    其中l表示有l个约束条件。

    在这里我们举一个例子进行理解。

    假设有一个方程为\frac{x^{2}}{a^{2}}+\frac{y^{2}}{b^{2}}+\frac{z^{2}}{c^{2}}=1的椭球,我们要求这个椭球内接长方体的最大体积。

    那么也就是说我们要在\frac{x^{2}}{a^{2}}+\frac{y^{2}}{b^{2}}+\frac{z^{2}}{c^{2}}=1的条件下,求f(x,y,z)=8xyz的最大值。

    现在我们定义一个拉格朗日函数F(x,\lambda ):

    F(x,\lambda )=f(x)+\sum_{k=1}^{l}\lambda_{k}h_{k}(x)

    其中\lambda _{k}是各个约束条件的待定系数。

    接下来求偏导为0的解如:\frac{\partial F}{\partial x}=0,\frac{\partial F}{\partial \lambda }=0

    回到我们的题目,就可以将问题转化为:

    F(x,y,z,\lambda )=8xyz+\lambda(\frac{x^{2}}{a^{2}}+\frac{y^{2}}{b^{2}}+\frac{z^{2}}{c^{2}}-1)

    其中使用

    \frac{x^{2}}{a^{2}}+\frac{y^{2}}{b^{2}}+\frac{z^{2}}{c^{2}}-1=0

    是因为我们的约束条件中要求的格式是

    s.t.h_{k}(x)=0,k=1,2,... ,l

    接下来对F(x,y,z,\lambda )求偏导可得:


    \frac{\partial F(x,y,z,\lambda )}{\partial x}=8yz+\frac{2\lambda x}{a^{2}}=0

    \frac{\partial F(x,y,z,\lambda )}{\partial y}=8xz+\frac{2\lambda y}{b^{2}}=0

    \frac{\partial F(x,y,z,\lambda )}{\partial z}=8xy+\frac{2\lambda z}{c^{2}}=0

    \frac{\partial F(x,y,z,\lambda )}{\partial \lambda }=\frac{x^{2}}{a^{2}}+\frac{y^{2}}{b^{2}}+\frac{z^{2}}{c^{2}}-1=0

    联立前三个方程并代入第四个方程后可以求解为:


    x=\frac{\sqrt{3}}{3}a,y=\frac{\sqrt{3}}{3}b,z=\frac{\sqrt{3}}{3}c

    最后可得

    f(x,y,z)=8xyz=\frac{8\sqrt{3}}{9}abc

    罚函数

    罚函数法是一种广泛采用的约束优化方法,用于解决约束条件下的最优化问题。

    考虑我们的问题为:

    min f (x)\\ s.t.h_{j}(x)=0,j=1,2,3,.. .,p

    将原约束优化问题转变为无约束优化问题:

    minL_{p}(x)=f(x)+\rho p(x)

    其中\rho表示惩罚参数。对于等式约束,可以定义罚函数:

    \rho (x)=\sum_{j=1}^{p}|h_{j}(x)|^{2}

    如果满足约束条件则无影响,但是如果没有满足约束条件,则会施加惩罚。

    下一篇文章继续了解对偶上升法和增广拉格朗日乘子法

  • 相关阅读:
    Spring:AOP面向切面编程
    Qt-QTimer 定时器使用记录
    java毕业设计——基于java+Eclipse+jsp的网上手机销售系统设计与实现(毕业论文+程序源码)——网上手机销售系统
    自动化测试面试题解析,半小时通透
    基于JAVA的TCP网络QQ聊天工具系统
    js 设计模式(灵活的语言 JavaScript)
    使用标准IO对bitmap打马赛克
    得物多活架构设计之路由服务设计
    【C语音 || 数据结构】二叉树--堆
    关于「气味体验创造」的 19 个创意方案 #N1 线上工作坊成果分享
  • 原文地址:https://blog.csdn.net/weixin_46007132/article/details/125866970
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号