无约束优化方法----Powell法

4 篇文章 0 订阅
订阅专栏

Powell法的python实现

前面我们介绍了一维搜索的两种优化方法: 黄金分割法以及 二次插值法。本节我们介绍无约束优化问题常用的Powell法(本质上是共轭方向法)。

1. Powell法

Powell法将整个计算过程分为若干个阶段,每一个阶段由n+1次一维搜索组成。根据共轭方向的概念以及性质,Powell法的核心思想是:首先沿着坐标轴的方向依次进行一维搜索,然后将初次迭代的起始点与末次迭代得到的一个极值点连接构成一个新方向,并沿新方向进行一次一维搜索,此时完成一轮迭代,然后重复上述迭代过程直至满足终止条件。

1.1 Powell法的迭代步骤

Powell法迭代步骤

1.2 例题

在这里插入图片描述
初始点 x ( 0 ) = [ 2 , 1 ] T x^{(0)}=[2,1]^T x(0)=[2,1]T

1.3 代码

# import package
import sympy as sp
from sympy import *
import numpy as np
import matplotlib.pyplot as plt
import math
# Powell方法
def Powell(f,x1,x2,epsilon,k,S,x_initial,x_point):

    # 沿坐标轴1的方向进行一维搜索
    alpha = symbols('alpha')
    f1 = f.subs({x1:(x_initial+alpha*S[0])[0],x2:(x_initial+alpha*S[0])[1]}).evalf()
    
    # 次数不高,可直接采用求导的方法求极值点
    alpha1 = solve(diff(f1,alpha),alpha)[0]
    x_new1 = x_initial + alpha1*S[0]

    # 沿坐标轴2的方向进行一维搜索
    f2 = f.subs({x1:(x_new1+alpha*S[1])[0],x2:(x_new1+alpha*S[1])[1]}).evalf()
    alpha2 = solve(diff(f2,alpha),alpha)[0]
    x_new2 = x_new1 + alpha2*S[1]

    # 构造共轭方向
    S1 = np.array(x_new2-x_initial)
    # 沿共轭方向进行一维搜索
    f3 = f.subs({x1:(x_new2+alpha*S1)[0],x2:(x_new2+alpha*S1)[1]}).evalf()
    alpha3 = solve(diff(f3,alpha),alpha)[0]
    x_new3 = x_new2 + alpha3*S1
    x_point.append([x_initial,x_new1,x_new2,x_new3])
    
    
    # 精度判断--满足精度要求即可退出函数 
    if math.sqrt(sum([i**2 for i in (x_new3-x_initial)])) <= epsilon:
        f_min = f.subs({x1:x_new3[0],x2:x_new3[1]})
        # 为了绘图方便将其转为ndarray
        x_point = np.array(x_point)
        print('最优解为:',x_new3)
        print('最优值为:',f_min)
        print('迭代次数为:',k)
        #print('迭代轨迹为:',x_point)
        return None
      
    # 递归调用函数
    k += 1 # 迭代次数加1
    x_initial = x_new3
    S = np.array([S[-1],S1])
    Powell(f,x1,x2,epsilon,k,S,x_initial,x_point)
# 构造函数表达式
x1 = sp.Symbol('x1')
x2 = sp.Symbol('x2')
f = (x1+x2)**2+(x1-1)**2
display(f)

# 初始化参数
k = 0
S = np.array([[1,0],[0,1]])
epsilon = 0.001
x_initial = np.array([2,1])
x_point = list()
Powell(f,x1,x2,epsilon,k,S,x_initial,x_point = x_point)

在这里插入图片描述

# 可视化
def plt_contour(f,x1,x2):
    f = sp.lambdify([x1,x2],f,'numpy')
    x1 = np.linspace(-2,2,100)
    x2 = np.linspace(-2,2,100)
    X1,X2 = np.meshgrid(x1,x2)
    Z = f(X1,X2)
    fig = plt.contour(X1,X2,Z,20)
    return fig
fig = plt_contour(f,x1,x2)
# 第一次
plt.plot([x_point[0][i][0] for i in range(len(x_point[0]))],
         [x_point[0][i][1] for i in range(len(x_point[0]))],
         marker = 'o',color = 'r')
# 第二次
plt.plot([x_point[1][i][0] for i in range(len(x_point[1]))],
            [x_point[1][i][1] for i in range(len(x_point[1]))],
            marker = 'o',color = 'b')

在这里插入图片描述

Powell算法Powell修正算法_matlab仿真
沈春旭的博客
04-01 1万+
1.鲍威尔基本算法的运算流程 1.采用坐标轮转顺次沿n个坐标轴方向[e1,e2,...,en]进行一维搜索。然后以初始点X(0)和终点Xn(1)构成一个新的方向S(1),并以此方向为搜索方向在做一维搜索得到极小值点X(n+1)(1)。      2.去初始点X0(2)=X(n+1)(1),并去掉元搜索方向组中的第一个方向S1(1)=e1,而将第一轮构成的新搜索方向S(1)作为最末一个方向[e
现代设计方法——(matlab脚本)鲍威尔求多维无约束问题最优解
11-11
matlab脚本文件,通用代码,求现代设计方法中二维无约束优化问题的最优解
Powell算法原理以及相关代码
07-10
Powell算法原理以及相关代码,里面有一个讲解Powell算法的pdf和两个代码,分别是基本Powell和改进Powell,一维搜索方法为黄金分割,搜索区域获取为进退。含大量注释,自学编写的,用于解pdf里面的方程。如果有问题,请及时联系我,谢谢!!!
深度理解Powell优化算法
热门推荐
沈春旭的博客
03-31 5万+
1.鲍威尔优化综述 鲍威尔又称方向加速,它由Powell于1964年提出,是利用共轭方向可以加快收敛速度的性质形成的一种搜索方法。该方法不需要对目标函数进行求导,当目标函数的导数不连续的时候也能应用,因此,鲍威尔算法是一种十分有效的直接搜索Powell可用于求解一般无约束优化问题,对于维数n 不同于其他的直接Powell有一套完整的理论体系,故其计算效率高于其他直接。该
POWELL求极小值:Rosenbrock函数
ZeroZeroOneTwo的博客
03-21 1633
鲍威尔(Powell)是直接利用函数值来构造共辄方向的一种共辄方向。鲍威尔的基本算法是:在每一轮迭代中总有一个始点(第一轮的始点是任选的初始点)和n个线性独立的搜索方向。用这个方向替换原来n个方向中的一个,于是形成新的搜索方向组。替换的原则是去掉原方向组的第一个方向而将新方向排在原方向的最后。此外规定,从这一轮的搜索终点出发沿新的搜索方向作一维搜索而得到的极小点,作为下一轮迭代的始点。因为这种方法在迭代中逐次生成共辄方向,而共辄方向是较好的搜索方向,所以鲍威尔又称方向加速。主程序powell.m。
无约束优化方法powell方法
luzhanbo207的博客
11-30 3159
无约束优化方法优化技术中心极为重要也是最基本的内容之一。无约束优化问题的数学模型为: min⁡x∈Rnf(x) \min_{x \in R^n}f(x) x∈Rnmin​f(x) 无约束优化方法不仅可解决设计中无约束优化问题,更重要的是通过对无约束优化方法的研究,给求解约束优化方法提供良好的概念和理论基础,而且约束优化问题通过数学处理可化为无约束优化问题,利用无约束优化方法来求解。所以无约束优化方法优化设计中有十分重要的作用; 根据确定搜索方向所使用的信息和方法无约束优化方法可以分为两大类: (1)直
图像配准powell算法c语言实现,powell
weixin_34746715的博客
05-24 365
powell/ImprovePowell.suopowell/reg1/Debug/reg1.exepowell/reg1/Debug/reg1.exppowell/reg1/Debug/reg1.libpowell/reg1/Debug/reg1.pdbpowell/reg1/reg1/BrainProtonDensitySliceBorder20.pngpowell/reg1/reg1/Bra...
matlab_builder_d4o7hx.zip_Wolfe-Powell_powell约束优化_全局牛顿_割线 matl
07-15
本人编写的各种matlab最优化程序代码,其中包含了temp问题最优化无约束一维极值问题,牛顿基本牛顿,全局牛顿,割线,抛物线,temp1 Wolfe.PowellPowell
matlab写的powell优化算法程序_spm_powell
04-01
资源名:matlab写的powell优化算法程序_spm_powell 资源类型:matlab项目全套源码 源码说明: 全部项目源码都是经过测试校正后百分百成功运行的,如果您下载后不能运行可联系我进行指导或者更换。 适合人群:新手及...
计算二维无约束优化Powell和坐标轮换
03-11
计算二维无约束优化Powell和坐标轮换,以及一维搜索的黄金分割和搜索区间确定的两个子程序.
多维Powell优化算法
02-29
Powell算法求解多维优化问题的能力很强,C语音版本的实现更加强了代码的运行速度。
C语言:powell(鲍威尔)
06-23
#include #include #define m 10 /*数组长度m >= 维数n */ float f(float x[]); void mjtf(int n,float x0[],float h,float s[],float a[],float b[]); void mhjfgf(int n,float a[],float b[],float flag,float x[]); void mbwef(int n,float x0[],float h,float flag,float a[],float b[],float x[]); float f(float x[]) { float result; result=(x[0]-2)*(x[0]-2)+(x[1]-3)*(x[1]-3)+(x[2]-4)*(x[2]-4); return result; } /*多维进退子程序*/ void mjtf(int n,float x0[],float h,float s[],float a[],float b[]) { int i; float x1[m],x2[m],x3[m],f1,f2,f3; for(i=0;i<n;i++) /*计算初始两试点*/
修正鲍威尔(Powell)源代码--MATLAB版本
03-28
这是我根据《现代设计理论方法(第二版)》38页中的鲍威尔理论,基于MATLAB写出的源代码,其中一维搜索极小点函数借鉴于《https://me.csdn.net/shenziheng1》该博主的算法
Powell优化Mathematica程序
10-05
Powell优化程序是用Mathematica编写的两个参量的优化算法实例,可以通过修改里面的参数获得自己想要的Powell优化程序。
Powell优化设计matlab程序
12-28
Powell优化设计matlab程序,包含三个子程序,黄金分割Powell,和一维搜索
python模块:Scipy.optimize.minimize规划问题求解
qq_58539881的博客
08-19 1万+
多元标量函数的最小化,是数学规划模型中更为一般的模型,该模块包括有限制性约束和无限制性约束的最小化,而对于限制性约束又分为线性约束和非线性约束。这种更为一般的模型需要针对具体的问题假设选择特定的方法进行求解。 在数学规划模型中,minimize提供的方法能够解决无/有(线性、非线性)约束的多个决策变量目标函数的最优化问题,但是由于该模块是依据函数导数与梯度进行求解,不能够求解整数规划、01规划等问题。
智能优化算法:基于Powell优化的鸽群优化算法
qq_38643813的博客
11-19 5591
智能优化算法:基于Powell优化的鸽群优化算法前言一、鸽群优化算法(Pigeon-inspired Optimization)原理二、Powell算法1. 原理2. 算法流程三、组合策略四、仿真实验五、总结六、附件 前言        哈喽,大家好!我是一枚小博士,今天给大家带来的是鸽群优化算法(pigeon-inspired optimization, PIO)的改进策略——组合优化。 一、鸽群优化算法(Pigeon-inspired
优化方法----powell共轭梯度算法
weixin_35338624的博客
09-21 1699
Fletcher_Reeves共轭梯度算法要先计算梯度,然后对梯度进行修正得到一组共轭梯度。而计算梯度和计算函数值一样耗时。powell算法使用一维搜索技术寻找一组共轭梯度,从而不需要计算梯度。 #include<iostream> #include<vector> using namespace std; vector<vector<double>...
优化方法笔记2:多维无约束优化
luolei188的博客
04-07 3839
1 多维无约束优化问题(待更新) 1.1 随机搜索 1.2 梯度 1.2.1 梯度 1.2.2 最速上升 1.2.3 改进的梯度
powell-鲍威尔算法详解
最新发布
07-09
鲍威尔Powell)是一种常用的无约束优化算法,用于求解最优化问题。其基本思想是通过不断迭代优化步长和搜索方向,逐步逼近最优解。 鲍威尔的迭代过程如下: 1. 初始化参数:给定初始点$x_0$,初始搜索方向$...

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • Python输入三角形的三条边,计算面积和周长 19912
  • python 输入两个正整数,计算它们的最大公约数和最小公倍数。 14970
  • python 百钱百鸡问题 2193
  • 无约束优化方法----Powell法 1537
  • 生成斐波那契数列的前20个数 1143

分类专栏

  • 预测区间 1篇
  • 优化设计 4篇
  • 基础 2篇

最新评论

  • Delta方法求预测区间推导

    CSDN-Ada助手: 恭喜您写了第17篇博客!标题“Delta方法求预测区间推导”听起来非常有趣和富有挑战性。您对这个主题的深入探索和解释一定会对读者有所帮助。在下一步的创作中,我建议您可以考虑分享一些实际案例或者应用这个方法解决实际问题的经验,这样读者不仅可以学习理论知识,还能将其应用到实际生活中。期待您更多的博客作品!

  • 一维搜索优化方法----黄金分割法

    明天熬夜吗: 大神膜拜

  • python 输入两个正整数,计算它们的最大公约数和最小公倍数。

    weixin_62420450: 怎么编写测试代码对函数进行测试啊,大佬

  • Python输入三角形的三条边,计算面积和周长

    醉歌974: print("三角形面积为 %.2f 。" % area) else:

  • Python输入三角形的三条边,计算面积和周长

    白术配建曲: 判断条件错了,应该是和,而不是或

大家在看

  • ALoRA: Allocating Low-Rank Adaptation for Fine-tuning Large Language Models
  • 揭秘:消费1000,竟能领回2000?每天还有额外收入? 100
  • 掌握高点击率主图的秘密:星参谋一键帮你搞定! 138
  • Java环境搭建——JDK安装和环境搭建 286
  • 多源最短路径算法 -- 弗洛伊德(Floyd)算法 91

最新文章

  • Delta方法求预测区间推导
  • 无约束优化方法----改进的Powell法
  • 一维搜索优化方法----二次插值法
2023年10篇
2021年7篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

今天不熬夜⁠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

深圳SEO优化公司宜宾网站推广报价沈阳关键词按天计费宜宾外贸网站设计哪家好四平企业网站建设多少钱临夏网站定制公司襄樊SEO按天扣费推荐石家庄营销网站哪家好海南seo排名推荐金昌网站优化软件价格阳泉SEO按天收费推荐吉林网站推广系统报价大芬品牌网站设计价格大同网站优化按天收费价格洛阳优化哪家好宿迁百度seo十堰营销网站多少钱西安百度网站优化排名多少钱济南百度seo哪家好襄阳网站定制报价鹰潭关键词排名包年推广多少钱黄山网站推广玉林如何制作网站多少钱内江SEO按天计费公司昌吉网站设计报价新乡网络营销哪家好白银百搜标王多少钱桂林seo排名哪家好观澜百姓网标王推荐坪地网络营销多少钱塔城网站优化推广报价歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化