查看: 100|回复: 3|关注: 0

[已答复] 全局最优化工具 Pattern Search,向量化函数 提高效率

[复制链接]

新手

14 麦片

财富积分


050


10

主题

33

帖子

0

最佳答案
发表于 2019-2-9 08:37:40 | 显示全部楼层 |阅读模式
本帖最后由 romanticjune 于 2019-2-9 08:43 编辑

     从资料上学到Pattern Search适合不连续点的全局最小值寻找,其中倒数第二节'Vectorize the Objective and Constraint Functions'提到“ Direct search often runs faster if you vectorize the objective and nonlinear constraint functions.” 我理解的是通过向量化目标函数和约束函数可以提高搜寻效率。而关键就是“Write your vectorized objective function or nonlinear constraint function to accept a matrix with an arbitrary number of points.”。我理解的是,让你的函数能够接受向量,并输出向量。它举出的例子是:    mimin.gif
    若初值为列向量,则函数可写作:

  1. function
  2. f = vectorizedc(x)
  3. f = x(1,:).^4+x(2,:).^4-4*x(1,:).^2-2*x(2,:).^2+3*x(1,:)-.5*x(2,:);

复制代码

    因为这个例子比较简单,我比较向量化前后的时间差别不大,我有两个疑问:
    1.不知道对于复杂的情况,效率能够提高多少?
    2.是不是任何函数都能写成向量化输入的形式呢?比如很长的函数。





论坛优秀回答者

中级

1098 麦片

财富积分


5001500


3

主题

777

帖子

172

最佳答案
  • 关注者: 65
发表于 2019-2-9 10:10:19 | 显示全部楼层
1.对可以向量化的复杂函数来说,提升很明显,具体多明显,可以自己用tic和toc命令对比循环求一系列函数数值以及直接用向量化后的函数求数值的时间差

2.不是,matlab中三角函数等函数默认就是向量化的,这些函数组合成的复杂函数向量化是比较容易的,但也有例如求数值积分等函数向量化较难的,目标复杂函数中含有这些成分的话就不容易解决了

新手

14 麦片

财富积分


050


10

主题

33

帖子

0

最佳答案
 楼主| 发表于 2019-2-9 10:17:51 | 显示全部楼层
TouAkira 发表于 2019-2-9 10:10
1.对可以向量化的复杂函数来说,提升很明显,具体多明显,可以自己用tic和toc命令对比循环求一系列函数数值 ...

谢谢回复。
感觉PatternSearch是很有用的工具,作为初学者想发现了新大陆一样兴奋,就像最近用Matlab一样。
其实我是遇到了一个复杂的函数,公式很长,而且含有数值积分,感觉到您应该是这方面的专家,不知道能否麻烦看一下这个式子向量化的可能性有吗,很好奇。 intt.gif
A和B是积分内部的 正态分布项的  均值 和方差,作为待拟合系数。

新手

14 麦片

财富积分


050


10

主题

33

帖子

0

最佳答案
 楼主| 发表于 2019-2-9 10:21:50 | 显示全部楼层
还有我看到说明书上很重要的一点就是,向量化函数 就是“可接纳向量”并输出与向量相同长度的函数值,反过来是不是能做到这一点,就证明函数已经向量化了呢,比如: out.gif
对于一个向量A,带入函数f(x)后可输出x=a1/a2/a3/a4时对应的函数值,且长度与A相同
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /2 下一条

快速回复 返回顶部 返回列表