非线性规划的拉格朗日乘子法python编程python包编程
非线性规划的拉格朗日乘子法&python编程&python包编程
- 一、拉格朗日乘子法
- 1.1 拉格朗日乘子法定义
- 1.2 KKT条件定义
- 1.3 拉格朗日乘子法手工推导例题
- 二、Python编程
- 2.1 Python代码
- 2.2 结果
- 三、Python包编程
- 3.1 Pyhon包代码
- 3.2 结果
- Ending、参考资料
一、拉格朗日乘子法
给定题目:
1.1 拉格朗日乘子法定义
假设需要求极值的目标函数 (objective function) 为 f(x,y) ,约束条件为 φ(x,y)=M 设
g(x,y)=M-φ(x,y) ,定义一个新函数F(x,y,λ)=f(x,y)+λg(x,y) ,则用偏导数方法列出方程: ∂F/∂x=0
∂F/∂y=0 ∂F/∂λ=0 求出 x,y,λ 的值,代入即可得到目标函数的极值
1.2 KKT条件定义
对于含有不等式约束的优化问题,如何求取最优值呢?常用的方法是KKT条件,同样地,把所有的不等式约束、等式约束和目标函数全部写为一个式子L(a,b, x)= f(x) + ag(x)+bh(x),KKT条件是说最优值必须满足以下条件:
- L(a, b, x)对x求导为零;
- h(x) =;
- a*g(x) = 0;
求取这三个等式之后就能得到候选最优值。其中第三个式子非常有趣,因为g(x)<=0,如果要满足这个等式,必须a=0或者g(x)=0.
这是SVM的很多重要性质的来源,如支持向量的概念。
1.3 拉格朗日乘子法手工推导例题
过程如下图
结果分析:手工算出来结果为1.5396abc
当a=b=c=1时,结果为1.5396
二、Python编程
给定题目:
2.1 Python代码
#拉格朗日乘子法python代码from sympy import *
x1,x2,k = symbols('x1,x2,k')
f = 60-10*x1-4*x2+(x1)**2+(x2)**2-x1*x2
g = x1+x2-8#构造拉格朗日等式
L=f-k*g#求导,构造KKT条件
dx1 = diff(L, x1) # 对x1求偏导
#print("dx1=",dx1)dx2 = diff(L,x2) #对x2求偏导
#print("dx2=",dx2)dk = diff(L,k) #对k求偏导
#print("dk=",dk)#dx1= -k + 2*x1 - x2 - 10
#dx2= -k - x1 + 2*x2 - 4
#dk= -x1 - x2 + 8#求出个变量解
m= solve([dx1,dx2,dk],[x1,x2,k])
#print(m)#{x1: 5, x2: 3, k: -3}#给变量重新赋值
x1=m[x1]
x2=m[x2]
k=m[k]#计算方程的值
f = 60-10*x1-4*x2+(x1)**2+(x2)**2-x1*x2
print("方程的极小值为:",f)
2.2 结果
三、Python包编程
3.1 Pyhon包代码
#导入sympy包,用于求导,方程组求解等等
from sympy import * #设置变量
x1 = symbols("x1")
x2 = symbols("x2")
alpha = symbols("alpha")
#beta = symbols("beta")#构造拉格朗日等式
L = 60 - 10*x1 - 4*x2 + x1*x1 + x2*x2 - x1*x2 - alpha * (x1 + x2 - 8)#求导,构造KKT条件
difyL_x1 = diff(L, x1) #对变量x1求导
difyL_x2 = diff(L, x2) #对变量x2求导
difyL_alpha = diff(L, alpha) #对alpha求导#求解KKT等式
aa = solve([difyL_x1, difyL_x2, difyL_alpha], [x1, x2, alpha])
print(aa)
x1=aa.get(x1)
x2=aa.get(x2)
alpha=aa.get(alpha)
print("最优解为:",60 - 10*x1 - 4*x2 + x1*x1 + x2*x2 - x1*x2 - alpha * (x1 + x2 - 8))
3.2 结果
Ending、参考资料
- 【数学基础】KKT条件
- 深入理解拉格朗日乘子法(Lagrange Multiplier) 和KKT条件
- SymPy’s documentation
- 【机器学习6】PYTHON实现拉格朗日乘子法
非线性规划的拉格朗日乘子法python编程python包编程相关推荐
- 拉格朗日乘子法解决带约束的极值问题
拉格朗日乘子法解决带约束的极值问题 1. 拉格朗日乘子法简介 2. Python实现小栗子 2.1 小栗子1:等式约束下的拉格朗日方程求解 2.2 小栗子2:给定一个椭球,求其内接长方体的最大体积 2 ...
- 基于蒙特卡诺和拉格朗日乘子法的电动车调度【有序、无序充放电】【Matlab代码】
目录 1 概述 2 蒙特卡洛模拟方法介绍 3 拉格朗日乘子法 4 规模化电动汽车充电负荷预测计算方法 5 Matlab代码实现 1 概述 电动汽车EV(Electric Vehicle)具有清洁环保. ...
- (Matlab实现)基于蒙特卡诺和拉格朗日乘子法的电动车调度【有序、无序充放电】
目录 1 概述 2 蒙特卡洛模拟方法介绍 3 拉格朗日乘子法 4 规模化电动汽车充电负荷预测计算方法 5 Matlab代码实现 1 概述 电动汽车EV(Electric Vehicle)具有清洁环保 ...
- 数值计算之 拉格朗日乘子法初探
数值计算之 拉格朗日乘子法初探 前言 等式约束优化 等式约束的几何解释 不等式约束优化 多约束优化 KKT条件 代码示例 前言 LM算法的置信域方法中,通过在优化函数后添加一个优化量约束来提升迭代过程 ...
- 拉格朗日乘子法(Lagrange multiplier)
问题提出 已知函数z=f(x,y)z=f(x,y)(本文假设它是凸函数,三维空间想象成抛物体,局部极值就是全域唯一极值),现在要求 minf(x,y)min f(x,y)只需求解方程组: ⎧⎩⎨⎪⎪⎪ ...
- 拉格朗日乘子法与KKT条件
欢迎转载,转载请注明出处:https://blog.csdn.net/qq_41709378/article/details/106599811 --------------------------- ...
- 最优化:拉格朗日乘子法
作者:桂. 时间:2017-03-27 20:26:17 链接:http://www.cnblogs.com/xingshansi/p/6628785.html 声明:欢迎被转载,不过记得注明出处哦~ ...
- 转 机器学习系列 08:深入理解拉格朗日乘子法、KKT 条件和拉格朗日对偶性
深度理解拉格朗日乘子法.KKT条件与线性规划对偶理论的微妙关系 https://blog.csdn.net/benzhujie1245com/article/details/85270058?utm_ ...
- 拉格朗日乘子法 学习笔记
本来是想写支持向量机的学习笔记的然后觉得内容太多了越写越不想写于是咕掉了. 把写好的拉格朗日乘子法发上来吧QwQ 拉格朗日乘子法 wiki链接 拉格朗日乘子法用来求解带多个等式约束的情况下的多元函数极 ...
最新文章
- Paper8:Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition
- 如何查看oracle 查版本号
- SPringMVC使用总结
- Linux网络编程 之 IO多路复用poll(九)
- L1-007 念数字
- [Mojava 10.14.4] Clover隐藏多余分区, 原来可以这么简单
- 山东自考c语言程序设计停考了吗,山东自考教育类停考专业遗留问题的通知
- mysql建立索引的优缺点|创建索引alter或create索引分类(PRIMARY KEY,UNIQUE KEY,FULLTEXT,INDEX)作用查看索引show index from table
- 大数运算(Java)
- 九、 Excel二维码制作和插件推荐
- Kali Linux 如何使用 软件商店
- 超全必看!开源时间序列数据集整理
- round函数几位小数c语言,Excel中利用round函数保留两位小数实例详解
- Blender插件BoxCutter 7.1.7v15 硬表面建模2.91+教程Box Cutter
- What is pessimistic locking in Hibernate
- 果然,ChatGPT 还是被拿去搞黄色了...
- Poi excel 导出 工具类参考
- 字符串查找函数:strchr、strrchr、strchrnul、strstr、strrstr
- 使用滴滴的mpx框架开发小程序遇到的问题-自动编译不生效
- dive into openstack ovn (by quqi99)
热门文章
- 计算机逻辑函数,逻辑函数
- 【附PPT下载】2021腾讯广告算法大赛 ACM MM Grand Challenge录用论文揭晓
- 游戏产业迎新机遇,KuPlay平台助力多元化发展
- InnoDB关键特性之插入缓冲
- 简单获取速卖通aliexpress商品详情
- 编辑器将光标横线变成竖线
- input输入框只能输入11位数字
- 探索“发电巨兽”在新基建下,如何拯救限电问题?
- 华为鸿蒙测试样机,华为手机鸿蒙1.0测试版系统首曝光!真机照流出:或基于Mate40测试...
- c语言笔试程序改错题,C语言笔试--程序改错题.doc