フィルターのクリア

fminconの実行時のエラーについて

120 ビュー (過去 30 日間)
narisawa
narisawa 2018 年 3 月 6 日
回答済み: michio 2018 年 3 月 6 日
関数fminconのアルゴリズム、SQPを利用して非線形計画問題の最小化を行っているのですが、非線形の等式拘束条件の数が数千個になると、「インデックスが行列の次元を超えています」というエラーが返されて、最小化の計算ができません。
ここで、ふたつ質問があるのですが、
1,このエラーのインデックスとは何のことを指しているのでしょうか?
2,このエラーを回避する方法はありますか?
よろしくお願いします。

採用された回答

michio
michio 2018 年 3 月 6 日
「インデックスが行列の次元を超えています」というエラー自体は、行列が定義された範囲外のインデックス(要素)を参照すると発生します。例えば下記のように 10x1 の配列を定義して、11番目の要素を参照する場合です。
a = zeros(10,1);
a(11)
条件の数でそのエラーが発生することは考えにくいのですが、まずはエラーがどこで発生しているかを確認したいですね。怪しいところにブレークポイントを設定してもよいですが、例えばコマンドウィンドウ上で
dbstop if error
と実行したのちにプログラムを走らせてみてください。そうするとエラーが発生した時点でプログラムがデバッグモードに入りますので、その時の値など直接確認してエラーの詳細を確認してみてください。詳細はこちら:
デバッグが終了したのちは
dbclear all
と実行しておけば、エラーが起きてもデバッグモードには入らなくなります。

その他の回答 (0 件)

カテゴリ

Help Center および File Exchangeソルバーベースの非線形最適化 についてさらに検索

製品

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!