アルゴリズムに間違ったオプションを使用しています。MATLAB は、指定されたパラメーターを確認し、それらのパラメーターを使用するアルゴリズムを使用します。アルゴリズムが異なれば結果も異なる可能性があるため、警告がスローされます (これらを無視してはなりません)。ドキュメントから:
'trust-region-reflective' では、勾配を指定する必要があり、境界または線形等式制約のみが許可されますが、両方は許可されません。
fmincon への呼び出しのドキュメントには、次のように記載されています。
x = fmincon(fun,x0,A,b) は x0 から開始し、線形不等式
A*x ≤ bに従って、fun で記述された関数の最小化子 x を見つけようとします。x0 は、スカラー、ベクトル、または行列にすることができます。
あなたはおそらく使用するつもりでした
x = fmincon(fun,x0,A,b,Aeq,beq)
A = []、b = []、および Aeq と beq は、以前に A と b を持っていたものになります (信頼領域反射を使用する場合)。
実際に を呼び出しているため、2 回目の試行は機能しませんでしたx = fmincon(fun,x0,A,b,Aeq,beq)
。代わりに、オプション構造体を渡そうとします。
このページでは、オプションの設定方法について説明します
編集: オプションを渡したい場合は、すべてのオプションのパラメーターを指定する必要があります。
[x,fval] = fmincon(@DijIIii,x0, A , b,[], [], [], [],@nonlcon,options);