Global Search optimization error
    3 ビュー (過去 30 日間)
  
       古いコメントを表示
    
I am trying to run a global search optimization in order to minimize a function. When I run it, I receive the following error:
Warning: Matrix is singular, close to
singular or badly scaled. Results may
be inaccurate. RCOND = NaN. 
> In qpsub>eqnsolv at 953
  In qpsub at 157
  In nlconst at 619
  In fmincon at 837
  In C:\Program Files\MATLAB\R2012b\toolbox\globaloptim\globaloptim\private\globalsearchnlp.p>i_runLocalSolver at 684
  In C:\Program Files\MATLAB\R2012b\toolbox\globaloptim\globaloptim\private\globalsearchnlp.p>globalsearchnlp at 292
  In GlobalSearch>GlobalSearch.run at 327
  In opt_model_ms at 52
Do you have any idea why is this happening? My function is well defined. On the other hand it has 6 variables, which could be difficult for global search to find the minimum. I could also post the function here if you need more information?
採用された回答
  Giorgos Papakonstantinou
      
 2013 年 1 月 23 日
        
      編集済み: Giorgos Papakonstantinou
      
 2013 年 1 月 27 日
  
      
      1 件のコメント
  Alan Weiss
    
      
 2013 年 1 月 23 日
				Perhaps your line
 Aeq(2,6)=zeros;
should be
 Aeq = zeros(2,6);
Also, I notice that you are integrating a function symbolically inside your function, then converting the answer to numeric. This is bound to be slow. It would probably be better to get a symbolic expression for the integral (if one exists) and use matlabFunction to give you a function handle or file for numeric computation. If there is no closed form symbolic expression for the integral, then I recommend you use a numeric integrator in MATLAB such as integral or quadgk.
Good luck,
Alan Weiss
MATLAB mathematical toolbox documentation
その他の回答 (3 件)
  Alan Weiss
    
      
 2013 年 1 月 23 日
        The warning indicates that you are using the fmincon active-set algorithm. The first thing I would try is to use the interior-point algorithm. Then the sqp algorithm. See the documentation for details.
 opts = optimset('Algorithm','interior-point');
 problem = createOptimProblem('fmincon','options',opts);
Obviously, you will have other things in your problem structure, I just wanted to show you how to include the options to change the algorithm.
Alan Weiss
MATLAB mathematical toolbox documentation
0 件のコメント
  Giorgos Papakonstantinou
      
 2013 年 1 月 23 日
        2 件のコメント
  Matt J
      
      
 2013 年 1 月 23 日
				Either could be the case, but there is no reason to doubt the solution just because it lies at the boundaries.
  Alan Weiss
    
      
 2013 年 1 月 24 日
				You could also try some of the suggestions in the documentation for how to check whether your answer is indeed an optimum.
If you feel that I have sufficiently answered your questions, please accept the appropriate answer.
Alan Weiss
MATLAB mathematical toolbox documentation
参考
カテゴリ
				Help Center および File Exchange で Linear Least Squares についてさらに検索
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



