0

これは私が助けを必要としている問題です:

方程式:

r = a1 * x1 + a2 * x2 + a3 * x3 + a4 * x4、

ここで、「x1、x2、x3、x4」は、製品の4つの側面のスコア(すべて正)です。

'a1、a2、a3、a4'は初期化された重みです(それらの合計は1です)。

「r」は、この製品の最終スコアとして計算されます。

製品の数が100であるとしましょう。次に、最終スコア「r」に基づいて、100個の製品を並べ替え、上位10個の製品の均等に重み付けされた利益(与えられた)を計算します。

目的は、重み'a1、a2、a3、a4'を変更することにより、重み付き利益の最大値を見つけることです。

Matlabツールボックスにはそれを解決する機能がありますか?いくつか検索しましたが、この問題に適したものが見つかりませんでした。任意の提案をいただければ幸いです!

4

1 に答える 1

0

加重利益のマイナスを計算する関数を作成します (matlab の組み込みアルゴリズムが最小値を検出するため、マイナスになります)。あなたが説明していることを理解できれば、次のようになります。

function f = wprofit(a)
r=-x*a;
r=sort(r);
f=sum(r(1:10));
end

次に、fmincon を使用して最小値を見つけます。

Aeq=ones(4,1);
beq=1;
a0=[.25 .25 .25 .25]';
[a,f]=fmincon(@wprofit,a0,[],[],Aeq,beq)
于 2012-02-15T19:04:27.540 に答える