2017-05-18 4 views
0

ご迷惑をおかけして申し訳ありませんが、Octaveのマニュアルで何の結果も得られません。Octave/MATLABの一般的な最適化プログラムを使用する方法

Iは、関数にいくつかの制約を持つ少し錯体を最大化したい:

機能はこの1つ(私は説明を簡単にするためにこれを書いて)にmathemathically類似している:

F(X、

(z、0と1との間のx、1と2との間のy、z、t)= arcsin(x/2t) 1/x^2より大きい。

この機能を最大限に活用するために、x、y、z、tの数値を計算するコードを教えてください。このコードから、私はどのように最適化関数を使うべきかを導き出します。

多くの助けになります。

は、あなたがfminconを使用してあなたの目的関数の加法の逆を最小限に抑えることができ、非常に

答えて

0

、ありがとうございました。あなたがfminconnonlcon引数を使用する必要がありますので、あなたの制約が( "1/X^2よりyの大きい")非線形である:

myconは、あなたの制約を定義する
% function definition (minus sign to maximize instead of minimize) 
f = @(x) - asin(x(1)/(2*x(4)))/(x(2) + x(1) + max(1, x(3)/x(4))); 
lb = [1 -inf 0 0];% lower bound for [x y z t] 
ub = [2 inf 1 1];% upper bound for [x y z t] 
x0 = [1.5 0 0.5 0.9]; % initial vector 
% minimization 
x = fmincon(f,x0,[],[],[],[],lb,ub,@mycon); 

function [c,ceq] = mycon(x) 
% y > 1/x^2 
% 1/x^2 - y < 0 
c = 1/x(1)^2 - x(2); 
ceq = 0; 
end 

あなたにも渡すことができます最適化オプションを指定する場合は、options引数を使用します。

+0

この機能の仕組みはわかりませんが、最適な結果はまったく出力されません。私の関数では、入力として与える初期ベクトルとして最悪の結果を出力します(ただし、実行中にアルゴリズムが満たした最悪の結果ではありません)。それがうまくいかない理由はありますか? – Ievgeni

関連する問題