运筹说 第99期 | 非线性规划—最优性条件

news2024/12/28 16:14:16

通过上期学习,大家已经了解了非线性规划中无约束极值问题及其求解方法。本期小编将为大家介绍最优性条件,包括可行下降方向、库恩-塔克条件等内容。

1 可行下降方向

起约束作用

假定X(0)是上述问题的一个可行解,满足所有约束。对某约束条件gj(X)≥0来说,满足它有两种情况:

(1)gj(X)>0:此时X(0)在可行域内部,不在该约束条件形成的可行域边界上,则称该约束为X(0)点的不起作用约束(无效约束)。

(2)gj(X)=0:此时X(0)点处于由该约束条件形成的可行域边界上,则称该约束为X(0)点的起作用约束(有效约束)。

可行方向

设X(0)为任一可行点,对某一方向P来说,若存在实数λ0>0,使对任意的λ∈[0,λ0],均有X(0)+λP∈R成立,就称方向P为X(0)点的一个可行方向。

以J记X(0)点所有起作用约束下标集合,即

若P为X(0)点的可行方向,则存在λ0>0,使对任意λ∈[0,λ0],有

从而

其中∇gj(X(0))为约束函数在点的梯度。

由泰勒展开式

对X(0)点的所有起作用约束,当λ>0足够小时,只要

就有

此外,对X(0)点所有不起作用约束,gj(X(0))>0,由gj(X)的连续性,当λ>0足够小时,也有

所以,只要方向P满足上述梯度不等式,即可保证它是点的可行方向。

下降方向

设X(0)∈R,对某一方向P来说,若存在实数λ0'>0,使对任意的λ∈[0,λ0']均有下式成立

就称方向P为点的一个下降方向。

由泰勒展开式

当λ足够小时,只要∇f(X(0))TP<0,就有f(X(0)+λP)<f(X(0))。即只要方向P满足∇f(X(0))TP<0,就可保证它为X(0)点的下降方向。

可行下降方向

若X(0)点的某一方向P,既是该点的可行方向,又是该点的下降方向,那么就称它为这个点的可行下降方向。

设X(0)不是极小点,为求其极小点,继续搜索应沿该点的可行下降方向进行。显然,对X*来说,若该点不存在可行下降方向,它就可能是局部极小点,若存在可行下降方向,它就不是极小点。

定理4

设X*是上述问题的一个局部极小点,f(X)在X*处可微,且

则在X*点不存在可行下降方向,从而不存在P同时满足

其中,指标集J={j | gj(X*)=0,1≤j≤l}

从几何上说,满足上式的方向P与该点目标函数负梯度方向的夹角成锐角,且与该点起作用约束梯度方向的夹角也成锐角。

2 库恩-塔克条件

Gordan引理

设A1,A2,...,Al为个n维向量,不存在向量P使

成立的充要条件是存在不全为零的非负实数μ1,μ2,...,μl,使

几何意义

设A1,A2,A3是三个二维向量,若它们均位于某条直线H的同一侧,则可找到某一向量P,使AjTP<0(j=1,2,3)。但是,如果A1,A2,A3不在任一条直线的同一侧,就无法找到使AjTP<0(j=1,2,3)均满足的向量P,因为总可以放大或缩小各向量的长度,使之合成为零向量,即可找到不全为零的非负实数μj使

Fritz John定理

设X*是非线性规划的局部最优点,函数f(x)和gj(x)(j=1,2,...,l)在点X*有连续一阶偏导,则必然存在不全为零的数μ1,μ2,...,μl,使

该定理给出了非线性规划的局部最优点应满足的必要条件,上式称为Fritz John条件,满足这个条件的点称为Fritz John点。

  • Fritz John条件是由Gordan引理矩阵展开得到。Gordan引理只对起作用约束做了说明,Fritz Join定理采用互补松弛条件将非作用约束引入,取对应参数为0改良得到。

  • 判断一个点是不是Fritz John点的步骤就是找到对应点的函数梯度,带入公式看是否能找到不全为零的数使得方程成立。

如果μ0=0,∇f(x)就从Fritz John条件中消去,说明在所讨论的点X*处,起作用约束的梯度线性相关,这时Fritz John条件失效,因此需要对讨论点处起作用约束的梯度附加上线性无关的条件,以保证μ0>0,这样就引出了库恩-塔克条件。

库恩-塔克条件(K-T条件)

K-T条件是确定某点为非线性规划最优解的一个必要条件,但一般来说不是充分条件,因此满足该条件的点不一定是最优点。但是对于凸规划,它既是最优点存在的必要条件,也是充分条件。

设X*是上述问题的局部极小点,函数f(x)和gj(x)(j=1,2,...,l)在X*点有连续一阶偏导,且X*处的所有起作用约束的梯度线性无关,则存在μ1*,μ2*,...,μl*,使

上述条件称为库恩-塔克条件,满足该条件的点叫库恩-塔克点。

考虑非线性规划

其中f(x)、h(x)、gj(x)都具有一阶连续偏导数,我们以

代替hi(x)=0,从而得到上述非线性规划的库恩-塔克条件:若X*是其极小点,且X*点所有起作用约束的梯度∇hi(X*)和∇gj(X*)线性无关,则存在向量Γ*=(γ1*,γ2*,...,γm*)T和M*=(μ1*,μ2*,...,μl*)T使下述条件成立:

其中γ1*,γ2*,...,γm*和μ1*,μ2*,...,μl*称为广义拉格朗日乘子。

为加深对K-T条件的直观理解,考虑某非线性规划的可行解X(k),假定此处有两个起作用约束,g1(X(k))=0和g2(X(k))=0,若X(k)为极小点,则∇f(X(k))必处于∇g1(X(k))和∇g2(X(k))的夹角内。

【证明过程】

假设∇f(X(k))方向如图所示,沿g1(X(k))=0的方向函数值增大,沿g2(X(k))=0的方向函数值减小,即在X(k)点存在可行下降方向,它就不是极小点,与题设矛盾。由此可见,若X(k)是极小点,且此处起作用约束的梯度线性无关,则可∇f(X(k))将表示成∇g1(X(k))和∇g2(X(k))的非负线性组合,即存在μ1≥0,μ2≥0,使下式成立:

例题

用库恩-塔克条件解非线性规划

解:先将其转换为标准形式

设库恩-塔克点为x*,各函数梯度为

对两个约束条件分别引入拉格朗日乘子μ1*和μ2*代入

该问题的库恩-塔克条件如下

分别考虑一下几种情况:

(1)μ1*>0,μ2*>0:无解;(约束2,3无法同时成立)

(2)μ1*>0,μ2*=0:x*=1,f(x*)=9;(约束2)

(3)μ1*=0,μ2*=0:x*=4,f(x*)=0;(约束1)

(4)μ1*=0,μ2*>0:x*=6,f(x*)=4。(约束3)

以上就是非线性规划中最优性条件的全部内容了,通过本节学习大家是否对可行下降方向与库恩-塔克条件有了一个大致的认识呢?下期小编将讲一讲与知识内容相关的逸闻趣事,为大家介绍为什么库恩-塔克条件又叫KKT条件,敬请关注!

作者 | 林若唯 唐京茹

责编 | 陈梦

审核 | 徐小峰

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

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

相关文章

2024年,如何打造惊艳的个人博客/出版系统并且赚点小钱?

几年前,我就推荐过用Markdown写作静态博客。静态博客几乎是零托管成本,比较适合个人博客起步。Markdown便于本地搜索,也可当作是个人知识库方案。 现在有了新的进展。我不仅构建了一个视觉上相当不错的个人网站,还美化了github、…

Linux/Frolic

Enumeration nmap 还是扫描系统对外开放的端口情况,对外开放了22,139,445,还有9999端口,显示是http服务,使用了nginx 1.10.3 ┌──(kali㉿kali)-[~/HTB/Frolic] └─$ nmap -sC -sV -oA nmap -Pn 10.10.10.111 Starting Nmap 7.93 ( http…

pandas进行数据计算时如何处理空值的问题?

目录 1.数据预览: 2.解决方法 (1)问题示例 (2)方法 A.方法一 B.方法二 1.数据预览: 2.解决方法 (1)问题示例 如下图如果不理睬这些空值的话,计算总分便也会是空值…

uni-app购物车页面详细代码

效果图&#xff1a; 这里的购物车加减用的是uni-app中的sku插件 代码附下&#xff08;全&#xff09;&#xff1a; <script setup lang"ts"> import {reqMemberCartList,reqMemberdelentCart,reqMemberPutCart,putMemberCartSelectedAPI, } from /services/…

linux后台进程的总结

文章目录 方案1 nohup &方案2 screen 方案1 nohup & 1、单独使用 nohup 执行脚本&#xff0c;如下图所示&#xff0c;终端会被接管&#xff0c;就是标准输入stdin 被关闭了&#xff0c;使用ctrlc会导致终止执行&#xff0c;但是可以关闭这个终端&#xff0c;重新打开终…

c5060:out can‘t be used with used with non-varying visibility

openGL系列文章目录 文章目录 openGL系列文章目录前言一、GLSL language integration是什么&#xff1f;二、GLSL language integration配置二、GLSL language integration编译报错解决 前言 GLSL插件下载和安装&#xff1a;GLSL language integration下载地址 你也可以在visu…

【python可视化大屏】使用python实现可拖拽数据可视化大屏

介绍&#xff1a; 我在前几期分享了关于爬取weibo评论的爬虫&#xff0c;同时也分享了如何去进行数据可视化的操作。但是之前的可视化都是单独的&#xff0c;没有办法在一个界面上展示的。这样一来呢&#xff0c;大家在看的时候其实是很不方便的&#xff0c;就是没有办法一目了…

软件测试|教你使用dataclass

前言 当我们需要在Python中定义一种简单的数据容器类时&#xff0c;dataclass是一个非常有用的工具。它允许我们轻松地创建具有一些自动化特性的类&#xff0c;例如自动生成__init__()、__repr__()和__eq__()等方法。本文将详细介绍dataclass的使用&#xff0c;并提供示例来说…

Qt点击按钮在其附近弹出一个窗口

效果 FS_PopupWidget.h #ifndef FS_POPUPWIDGET_H #define FS_POPUPWIDGET_H#pragma once#include <QToolButton> #include <QWidgetAction> #include <QPointer>class QMenu;class FS_PopupWidget : public QToolButton {Q_OBJECTpublic:FS_PopupWidget(QW…

3dmax有哪些技巧?3damx不为人知的秘密

在装修设计和建筑可视化领域&#xff0c;3D MAX是一款强大的工具&#xff0c;可以帮助我们创建出高质量的3D模型和动画。然而&#xff0c;要充分发挥其潜力&#xff0c;我们需要掌握一些3D MAX渲染的技巧。以下是一些实用的技巧&#xff0c;帮助你提高渲染效率和质量。 合理设…

【总结】Dinky学习笔记

概述 Dinky 是一个开箱即用、易扩展&#xff0c;以 Apache Flink 为基础&#xff0c;连接 OLAP 和数据湖等众多框架的一站式实时计算平台&#xff0c;致力于流批一体和湖仓一体的探索与实践 官网&#xff1a;Dinky 核心特性 沉浸式&#xff1a;提供专业的 DataStudio 功能&a…

mysql8 源码编译 客户端连接运行 报段异常解决

mysql8 源码编译 客户端连接运行 报段异常解决。解决方案&#xff1a;删除之前编译的文件。先安装libncurses-dev依赖&#xff0c;在重新编译。原因&#xff1a;第一次编译没有libncurses-dev依赖&#xff0c;编译告警&#xff0c;再次编译有缓存&#xff0c;没有引入声明头文件…

Umi3 创建,配置环境,路由传参(代码示例)

目录 创建项目 配置环境 创建脚手架 项目结构及其目录、 路由 配置路由 嵌套路由 编程式导航和声明式导航 声明式导航 编程式导航 约定式路由 路由传参 query传参&#xff08;问号&#xff09; 接收参数 params传参&#xff08;动态传参&#xff09; 接收参数 创…

[zabbix] zabbix监控

一、温习zabbix自定义监控 二、zabbix 自动发现与自动注册 2.1 zabbix 自动发现 //zabbix 自动发现&#xff08;对于 agent2 是被动模式&#xff09; zabbix server 主动的去发现所有的客户端&#xff0c;然后将客户端的信息登记在服务端上。 缺点是如果定义的网段中的主机数…

SpringBoot教程(五) | SpringBoot中Controller详解

SpringBoot教程(五) | SpringBoot中Controller详解 SpringBoot整合SpringMvc其实千面一直讲的都是。只需要我们在pom文件中引入 web的starter就可以了&#xff0c;然后我们就可以正常使用springMvc中的功能了。所以本篇文章可能更多的是回顾&#xff0c;回顾一下springMVC中的…

Centos7 制作系统镜像iso文件

Centos7 制作系统镜像iso文件 1. 系统备份镜像1.1 安装mondo1.2 制作备份镜像1.3 恢复系统 1. 系统备份镜像 这部分针对有系统备份需求&#xff0c;防止系统遭受意外状况&#xff0c;无法紧急恢复。整体备份内容较大&#xff0c;建议考虑后再进行操作 本次使用mondo软件进行备…

代码随想录算法训练营第28天 | 93.复原IP地址 78.子集 90.子集II

目录 93.复原IP地址 &#x1f4a1;解题思路 回溯三部曲 # 判断子串是否合法 &#x1f4bb;实现代码 78.子集 &#x1f4a1;解题思路 回溯三部曲 &#x1f4bb;实现代码 90.子集II &#x1f4a1;解题思路 &#x1f4bb;实现代码 93.复原IP地址 题目链接&#x…

Rocketmq rust版本-开篇

我是蚂蚁背大象(Apache EventMesh PMC&Committer)&#xff0c;文章对你有帮助给Rocketmq-rust star,关注我GitHub:mxsm&#xff0c;文章有不正确的地方请您斧正,创建ISSUE提交PR~谢谢! Emal:mxsmapache.com Rust重构Rocketmq,大家好我是mxsm(Apache EventMesh PMC&Comm…

Linux网络编程---IP 地址格式转换函数

Linux网络编程—IP 地址格式转换函数 我们更容易阅读的IP地址是以点分十进制表示的&#xff0c;例如&#xff1a;192.168.5.10 &#xff0c;这是一种字符串的形式&#xff0c;但是计算器所需要的IP地址是以二进制进行表示&#xff0c;这便需要我们在点分十进制字符串和二进制地…

Swift 周报 第四十五期

文章目录 前言新闻和社区苹果或将扩充健康版图&#xff0c;为Apple Watch X铺路更新后的《Apple Developer Program 许可协议》现已发布 提案通过的提案 Swift论坛推荐博文话题讨论关于我们 前言 本期是 Swift 编辑组整理周报的第四十五期&#xff0c;每个模块已初步成型。各位…