热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

KKT

KKT(Karush-Kuhn-Tucher)条件在优化理论中,KKT条件是非线性规划(nonlinearprogramming)最佳解的必要条件。KK

KKT(Karush-Kuhn-Tucher)条件
在优化理论中,KKT条件是非线性规划(nonlinear programming)最佳解的必要条件。KKT条件将lagrange乘数法(Lagrange multipliers)中的等式约束优化问题推广至不等式约束。本文从Lagrange乘数法推导KKT条件。

给定一个目标函数f:Rn→R,我们希望找到x∈Rn ,在满足约束条件g(x)=0的前提下,使得f(x)有最小值。这个约束优化问题如下:

minimize f(x)
subject to g(x)=0
为方便分析,假设f对g是连续可导函数。Lagrange乘数法是含等式约束条件优化问题的典型解法。定义Lagrangian函数

L(x,λ)=f(x)+λg(x)
其中λ为Lagrange乘数。Lagrange乘数法将原来的约束优化问题转化成等价的非约束问题

minimize x,λL(x,λ)
优化必要条件:

▽xL=∂L∂x=▽f+λg(x)=0
▽λL=∂L∂λ=g(x)=0
其中第一个为stationary equation,第二个为约束条件。通过求解上述方程,可得L(x,λ)的驻点(stationary point)x∗以及λ的值(正负数皆可能)。

接下来我们将约束等式g(x)=0推广为g(x)⩽0。优化问题如下:

minimize f(x)
subject to g(x)⩽0
约束不等式g(x)⩽0称为primal feasibility, 由此定义可行域(feasible region)K={x∈Rn∣g(x)⩽0}。假设x∗为满足约束条件的最佳解,分两种情况讨论:(1)g(x∗)⩽0,最佳解位于K的内部,称为interior solution,这时约束条件是无效的;(2)g(x∗)=0,最佳解落在K的边界,称为boundary solution,此时约束条件是有效的。这两种情况的最佳解具有不同的必要条件。

内部解:在约束条件无效的情形下, g(x)不起作用,约束优化问题退化为无约束优化问题,因此驻点x∗满足▽f=0且λ=0。
边界解:在约束条件有效的情形下,约束不等式变成等式g(x)=0,这与前面Lagrange乘数法的情况相同。我们可以证明驻点x∗发生在▽f∈span{▽g},换句话说,存在λ使得▽f=−λg(x),但这里λ的正负号是尤其意义的。因为我们希望最小化f,梯度▽f应该指向可行域K的内部,但▽g指向可行域K的外部(即g(x)>0的区域),因此λ⩾0称为对偶可行性
更直观的图解来自https://en.wikipedia.org/wiki/Karush%E2%80%93Kuhn%E2%80%93Tucker_conditions 及 http://blog.csdn.net/johnnyconstantine/article/details/46335763:
这里写图片描述
这里写图片描述
不论是内部解还是边界解,λg(x)=0恒成立,称为complementary slckness。综上,最佳解的必要条件包括lagrangian函数L(x,λ)的定常方程式、原始可行性、对偶可行性,以及complementary slckness:

▽xL=▽f+λg(x)=0
g(x)⩽0
λ⩾0
λg(x)=0
以上就是KKT条件。如果我们要做大化f(x)且受限于g(x)⩽0,那么对偶可行性要改成λ⩽0
考虑标准约束优化问题

minimize f(x)
subject to g(x)=0, j=1,…,m
     hk(x)⩽0, k=1,…,p
定义拉格朗日函数

L(x,{λj},{μk})=f(x)+∑mj=1λjgj(x)+∑pk=1μkhk(x)
其中λj是对应gj(x)=0的拉格朗日乘数,μk是对应hk(x)⩽0的拉格朗日乘数,KKT条件

▽xL=0
gj=0,j=1,…,m
hk(x)⩽0
μk⩾0
μkhk(x)=0,k=1,…,p


推荐阅读
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
  • 本文为Codeforces 1294A题目的解析,主要讨论了Collecting Coins整除+不整除问题。文章详细介绍了题目的背景和要求,并给出了解题思路和代码实现。同时提供了在线测评地址和相关参考链接。 ... [详细]
  • 本文介绍了如何使用PHP向系统日历中添加事件的方法,通过使用PHP技术可以实现自动添加事件的功能,从而实现全局通知系统和迅速记录工具的自动化。同时还提到了系统exchange自带的日历具有同步感的特点,以及使用web技术实现自动添加事件的优势。 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • Skywalking系列博客1安装单机版 Skywalking的快速安装方法
    本文介绍了如何快速安装单机版的Skywalking,包括下载、环境需求和端口检查等步骤。同时提供了百度盘下载地址和查询端口是否被占用的命令。 ... [详细]
  • 电话号码的字母组合解题思路和代码示例
    本文介绍了力扣题目《电话号码的字母组合》的解题思路和代码示例。通过使用哈希表和递归求解的方法,可以将给定的电话号码转换为对应的字母组合。详细的解题思路和代码示例可以帮助读者更好地理解和实现该题目。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
author-avatar
追梦and寻梦
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有