最优化作业第6章——无约束多维非线性规划方法

代码:

#导入模块
from sympy import *
import sympy as sp  #将导入的模块重新定义一个名字以便后续的程序进行使用
from numpy import *
import numpy as np#定义主要的处理函数
def main():#x1,x2:目标函数变量;alpha:步长因子;f:目标函数;a,b:目标函数不同变量的解;dif_x1,dif_x2:目标函数偏导函数#x_solver:目标函数变量解组成的矩阵;x_fun:包含alpha的迭代解函数组成的矩阵# dif_x11,dif_x22:目标函数偏导函数;f_x_diff:目标函数偏导函数值组成的矩阵;# f_alpha_diff:对alpha求偏导得到的函数;alpha_solver:α的解;k:迭代的次数#x_solver_k1:作为第k+1次迭代的解;x_solver_k:作为第k次迭代的解k = 0x1,x2,alpha = symbols("x1,x2,alpha",real = True)#将变量符号化,否则会出错f = 8*x1**2 + 4*x1*x2 + 5*x2**2 #定义目标函数a = 10b=10 #定义目标函数的初始解的两维解f_solver = 8*a**2 + 4*a*b + 5*b**2#得到给定初始解下的目标函数值dif_x1 = sp.diff(f,x1)dif_x2 = sp.diff(f,x2)  #目标函数对不同变量进行求偏导,得到偏导函数dif_x11 = dif_x1.subs({x1: a, x2: b})dif_x22 = dif_x2.subs({x1: a, x2: b})  # 将目标函数的初始解代入到偏导函数中得到具体的偏导函数值print("------------------------------第<%s>次迭代------------------------------" % k)print("目标函数解为:%s,目标函数值为:%s,梯度向量长度:<%s>\n"% ( [[a],[b]], f_solver,(dif_x11**2 + dif_x22**2)**0.5))while True:k = k + 1x_solver = np.array([[a],[b]]) #将目标函数的初始解定义为2行1列的数组x_solver = np.mat(x_solver)#将数组转化为矩阵dif_x11 = dif_x1.subs({x1:x_solver[0,0],x2:x_solver[1,0]})dif_x22 = dif_x2.subs({x1:x_solver[0,0],x2:x_solver[1,0]})#将目标函数的初始解代入到偏导函数中得到具体的偏导函数值f_x_diff = np.array([[dif_x11],[dif_x22]])#将偏导函数值定义为数组f_x_diff = np.mat(f_x_diff)#将数组转化为矩阵x_fun = x_solver - alpha*f_x_diff#迭代公式得到新的解f = 8*x_fun[0,0]**2 + 4*x_fun[0,0]*x_fun[1,0] + 5*x_fun[1,0]**2 #将新得到的解带入到目标函数得到只包含alpha的一元函数f_alpha_diff = sp.diff(f,alpha) #对函数进行求导alpha_dict = solve([f_alpha_diff],[alpha]) #由于极值点处的导数为0,因此求解其方程得到alpha,返回的是一个字典{alpha: 149/2650}alpha_solver = alpha_dict[alpha]#取值操作x_solver_k1 = x_solver - alpha_solver * f_x_diff#通过迭代得到下一步的解矩阵a = float(x_solver_k1[0,0])b = float(x_solver_k1[1,0])#取得解矩阵的解f_solver = 8*a**2 + 4*a*b + 5*b**2x_solver_k = x_solver_k1  # 将上一次解保留下来,作为终止条件的判断dif_x11 = dif_x1.subs({x1:a,x2:b})dif_x22 = dif_x2.subs({x1:a,x2:b})#将目标函数的初始解代入到偏导函数中得到具体的偏导函数值f_diff_solver = (dif_x11 ** 2 + dif_x22 ** 2) ** 0.5#得到梯度向量的模长print("------------------------------第<%s>次迭代------------------------------" % k)print("目标函数解为:<%s>,目标函数值为:<%s>,梯度向量长度:<%s>\n"%(x_solver_k1,float(f_solver),float(f_diff_solver)))if f_diff_solver < 0.01:#判断是否满足迭代终止条件breakif __name__ == '__main__':main()

结果:


------------------------------第<0>次迭代------------------------------
目标函数解为:[[10], [10]],目标函数值为:1700,梯度向量长度:<244.131112314674>------------------------------第<1>次迭代------------------------------
目标函数解为:<[[-66/53][564/265]]>,目标函数值为:<24.452830188679243>,梯度向量长度:<19.898988777347018>------------------------------第<2>次迭代------------------------------
目标函数解为:<[[0.143840177580469][0.143840177580462]]>,目标函数值为:<0.3517299436684602>,梯度向量长度:<3.5115862548259504>------------------------------第<3>次迭代------------------------------
目标函数解为:<[[-0.0179121730571876][0.0306135321341049]]>,目标函数值为:<0.0050592897557630336>,梯度向量长度:<0.28622740794050416>------------------------------第<4>次迭代------------------------------
目标函数解为:<[[0.00206899966863705][0.00206899966863635]]>,目标函数值为:<7.277291368992362e-05>,梯度向量长度:<0.050510719048299235>------------------------------第<5>次迭代------------------------------
目标函数解为:<[[-0.000257649015339521][0.000440345589853036]]>,目标函数值为:<1.046766882819546e-06>,梯度向量长度:<0.004117100118651557>进程已结束,退出代码0

 

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

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

相关文章

ASIHTTPRequest详解 [经典3]

大文件断点续传 0.94 以后支持大文件的断点下载&#xff0c;只需要设置&#xff1a; [ request setAllowResumeForFileDownloads:YES ]; [ request setDownloadDestinationPath:downloadPath ]。 就可以了。 ASIHTTPRequest会自动保存访问过的&#xff35;&#xff32;&#xf…

OSPF地址汇总配置

配置过程在R1上&#xff1a;1. 给 Loopback 0 接口分配IP。2. 给ethernet 0/0 接口分配 IP3. 开启OSPF路由协议&#xff0c;进程号为110&#xff0c;并宣告直连网段。在R2上&#xff1a;1. 给ethernet 0/0 接口分配 IP2. 开启OSPF路由协议&#xff0c;进程号为110&#xff0c;并…

图论——连通图

Tyvj 2059 元芳看电影 描述 神探狄仁杰电影版首映这天&#xff0c;狄仁杰、李元芳和狄如燕去看电影。由于人实在是太多了&#xff0c;入场的队伍变得十分不整齐&#xff0c;一个人的前面可能会出现并排的好多人。“元芳&#xff0c;这队伍你怎么看&#xff1f;”“大人&#xf…

stanford corenlp的TokensRegex

最近做一些音乐类、读物类的自然语言理解&#xff0c;就调研使用了下Stanford corenlp&#xff0c;记录下来。 功能 Stanford Corenlp是一套自然语言分析工具集包括&#xff1a; POS(part of speech tagger)-标注词性NER(named entity recognizer)-实体名识别Parser树-分析句子…

Courses hdu 1083(匹配)

http://acm.hdu.edu.cn/showproblem.php?pid1083 题意&#xff1a;一共有N个学生跟P门课程,一个学生可以任意选一门或多门课,问是否达成: 1.每个学生选的都是不同的课(即不能有两个学生选同一门课) 2.每门课都有一个代表(即P门课都被成功选过) 今天学姐讲匹配时讲的题目&#…

Python 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、...

去空格及特殊符号 s.strip().lstrip().rstrip(,) 复制字符串 #strcpy(sStr1,sStr2)sStr1 strcpysStr2 sStr1 sStr1 strcpy2print sStr2 连接字符串 #strcat(sStr1,sStr2)sStr1 strcatsStr2 appendsStr1 sStr2print sStr1 查找字符 #strchr(sStr1,sStr2)# < 0 为未找到…

周赛题解

A - An easy problemTime Limit:3000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Status Practice HDU 2601Description When Teddy was a child , he was always thinking about some simple math problems ,such as “What it’s 1 cup of wa…

内存容量出现异常的解决办法

【鄙视360人工服务工程师 笨死你!】 如果哪天的内存容量突然出现了异常 而且发现只有一半可以使用的时候 不是内存出现了问题 而是设置的问题。 【win 7 win 8 win 10通用的解决办法】 问题描述&#xff1a; 我是win 10 64位系统 内存容量突然只有一半了 打开我的电脑的设置看了…

matlab常用函数——方程函数

八、插值函数、线性方程解函数和多项式函数 1)插值函数 interp1q :1维快速线性插值法 yi=interp1q(x,Y,xi) interp1q正常执行条件: (1)x单调递增列向量 (2)Y为列向量or行数为length(x)(3)xi为列向量,如果xi值在x的坐标范围外,返回NaN 实例: x=(-5:0.5:5); y=sin…

最优化课堂笔记06-无约束多维非线性规划方法(续)

6.5共轭方向法 6.5.1 共轭方向 6.5.1 共轭梯度法 6.6单纯形法(不考) 6.7最小二乘法 6.7.2 改进的高斯-牛顿最小二乘法

opengl微发展理解

1.什么是OpenGL? 一种程序&#xff0c;可以与界面和图形硬件交互作用、一个开放的标准 2.软件管道 请看上图 - Apllication层 表示你的程序&#xff08;调用渲染命令。如opengl API&#xff09; -Abstraction层 表示画图接口&#xff08;如OpenGL API或者DirectX API&a…

最优化作业第六章——共轭梯度法和鲍尔法

共轭梯度法&#xff1a; 代码&#xff1a; #导入模块 from sympy import * import sympy as sp #将导入的模块重新定义一个名字以便后续的程序进行使用 from numpy import * import numpy as npdef main():#本例是利用共轭梯度法进行最优化x1,x2,alpha symbols("x1,x2,…

酒鬼随机漫步(一个矢量类)

摘要: 阅读全文这是一个定义的一个矢量类&#xff0c; 然后用矢量类模拟一个酒鬼的随机漫步 问题很简单&#xff0c; 实现也不麻烦&#xff0c; 但是这个小程序却可以呈现出许多语法知识。而且代码风格也不错&#xff0c;因此保存在了这篇博客中。 建议&#xff1a; 1. 类的声…

对高并发流量控制的一点思考

前言 在实际项目中&#xff0c;曾经遭遇过线上5WQPS的峰值&#xff0c;也在压测状态下经历过10WQPS的大流量请求&#xff0c;本篇博客的话题主要就是自己对高并发流量控制的一点思考。 应对大流量的一些思路 首先&#xff0c;我们来说一下什么是大流量&#xff1f; 大流量&…

ndk学习19: 使用Eclipse调试so

1. 设置调试选项在AndroidManifest文件加入允许调试android:debuggable"true" 此时编译项目会多出:2. 配置调试代码把需要调试的代码,放如按钮事件中,如果放在OnCreate会导致连接调试器时,代码已经跑完了Button btnTest (Button)findViewById(R.id.button1);btnT…

最优化课程笔记07——约束问题的非线性规划方法(重点:拉格朗日乘子法和惩罚函数法)

7.1 间接法&#xff1a;约束转化为无约束问题&#xff08;含一个重点&#xff1a;拉格朗日乘子法&#xff09; 当维数多的时候不适用 7.1.2拉格朗日乘子法&#xff08;重点&#xff09; 7.1.2.1 等式约束问题 7.1.2.2 不等式约束问题 7.1.3 惩罚函数法&#xff08;内惩罚函数法…

工业相机:传感器尺寸与像元尺寸的关系

相同分辨率的工业相机&#xff0c;传感器面积越大&#xff0c;则其单位像素的面积也越大&#xff0c;成像质量也会越好。同样的500万像素的工业相机&#xff0c;2/3”的传感器成像质量就要优于1/2”的。一般来说&#xff0c;工业相机的靶面大小&#xff0c;如果要求不是太严格&…

结构化查询语言包含哪些方面?

结构化查询语言SQL&#xff08;STRUCTURED QUERY LANGUAGE&#xff09;是最重要的关系数据库操作语言&#xff0c;并且它的影响已经超出数据库领域&#xff0c;得到其他领域的重视和采用&#xff0c;如人工智能领域的数据检索&#xff0c;第四代软件开发工具中嵌入SQL的语言等。…