百科问答小站 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 引理? 
  最优控制(optimal control)与最优化(optimization)有什么区别? 
  深度学习方面还有什么Open Problem? 
  如果用进步次数评定一个人的成绩,如何获取第一名? 
  有哪些适合入门且较全面的运筹学书籍可以推荐一下吗? 
  深度学习方面还有什么Open Problem? 
  有哪些适合入门且较全面的运筹学书籍可以推荐一下吗? 
  做Federated Learning优化就是decentralized optimization吗? 
  神经网络的损失函数为什么是非凸的? 
  国内本科运筹学课程的教育都存在哪些问题? 

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





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