百科问答小站 logo
百科问答小站 font logo



如何快速的利用matlab求解拥有大量变量的函数的雅克比矩阵? 第1页

  

user avatar   yujiangnyu 网友的相关建议: 
      
  1. 你用的是符号计算工具箱,因为每次call函数都要调用符号工具箱引擎,所以会慢。因此这个做法不推荐。
  2. 我不是很熟悉IPOPT, 不知道它为什么要求用户自己输入Jacobian。像MATLAB自带的优化工具fmincon等,都是可以选择是否提供Jacobian的,不提供的话fmincon会自己去数值近似一个。
  3. 所以,其实一个好的解决办法就是改写一下你的函数,让它每一步可以对自身做一个数值近似来获得Jacobian.

下面以fmincon为例来演示怎么实现:


给你的cost function写个wrapper

       function [y, F] = myfunc(x) % Objective y = mycost(x);  % Analytical Jacobian % F = 2*x;   % Numerical Jacobian delta = 1e-5; F = (mycost(x+delta) - mycost(x))/delta; end  function y = mycost(x) y = x^2; end     


然后在script里写

        opt = optimoptions('fmincon');  opt.SpecifyObjectiveGradient = true;  fmincon(@myfunc, 10, [],[],[],[],[],[],[], opt)     

运算结果如下

       >> myoptimizer  Local minimum found that satisfies the constraints.  Optimization completed because the objective function is non-decreasing in  feasible directions, to within the default value of the optimality tolerance, and constraints are satisfied to within the default value of the constraint tolerance.  <stopping criteria details>   ans =    -4.9997e-06     

你可以尝试uncomment我的analytical jacobian那部分来用解析的Jacobian, 但是估计你的问题里面解析的不好求,还是用数值的吧。

我估计ipopt的语法比较类似。应该可以如此实现。




  

相关话题

  如何理解 Farkas 引理? 
  如果用进步次数评定一个人的成绩,如何获取第一名? 
  人是如何做黑盒优化的? 
  如何理解 Farkas 引理? 
  线性空间的对偶空间和优化里的拉格朗日对偶有什么关系? 
  ICLR 2019 有什么值得关注的亮点? 
  有什么理论复杂但是实现简单的算法? 
  机器学习中的优化理论,需要学习哪些资料才能看懂? 
  你在生活中用过最高级的算法知识是什么? 
  在优化问题里,强化学习相比启发式搜索算法有什么好处? 

前一个讨论
哪位大神可以解读一下,为什么画不出来呀?
下一个讨论
为什么招程序员不考虑MATLAB技能?





© 2024-12-18 - tinynew.org. All Rights Reserved.
© 2024-12-18 - tinynew.org. 保留所有权利