0

MATLAB または CPLEX で最適化問題を解こうとしています。2 つのセット A (n 個の要素) と B (m 個の要素) があります。A の 1 つの要素を B の 1 つの要素に正確に割り当てる必要があります。

B の 1 つの要素に、必要な数の A の要素を割り当てることができます (最大 n)。A の要素 i を B = cijの j 要素に割り当てるにはコストがかかります。

さらに、B 内のエレメントに割り当てられた A 内のエレメントの NUMBER に関連付けられた別のコスト (ロード) があります。そのコストは次 のとおりです。 lj = ( sum (j に割り当てられた要素の数) ^2 )

したがって、全体のコストは次のようになります。 sum (cij+lj)

sum (cij+lj) が最小になるような最適な割り当てを見つけたいと考えています。この問題は、負荷がない場合の 2 進整数プログラミングとして定式化できます。私の懸念は、MATLAB または CPLEX でそのような関数をどのように記述できるかです。

4

1 に答える 1

0

1 つのベクトルから別のベクトルへの割り当てのコストを、割り当てられる変数の数 (1 から 1 をn含む) に応じて最小限に抑えたいですか? もしそうなら:

[x,fval] = fminsearch(@(x) sum(arrayfun( @(y) y*cij+y^2,1:n)),1)

また

function out = minFunc(x,n)
  out = 0
  for ii=1:n
    out = out + cij*ii + n^2;
  end
end

デモンストレーション用に cij=1 であり、Ij = N^2、N = j に割り当てられた要素の数です。これは常に返されるため、ニーズに対して単純化されているようx = 1です。ただし、最小化される変数xは使用されていないため、何を最小化しようとしているのかわかりません。さらにお手伝いできることがあればお知らせください。

于 2012-03-12T16:15:18.993 に答える