C値は常に数字の定数設定されていますか? m
、c
とA
ため
提案値はMolga & Smutnicki (2005)によって与えられるものです。
c
は、定数ベクトルです(他の値も使用できます)。
この機能は通常(x, y) ∈ [0, 10] x [0, 10]
で評価されます。重要度がc
によって決定されるm
最小値を提示する。それらはコサインの積によって変調されており、それはそれらに振動性を与える。
すべての複雑な式について、Langermann関数を変換する最も良い方法は、より単純な部分式から始めることです。主な和のために今
const double A[5][2] = {{3.0, 5.0},{5.0, 2.0},{2.0, 1.0},{1.0, 4.0},{7.0, 9.0}};
const double c[5] = {1.0, 2.0, 5.0, 2.0, 3.0};
const unsigned d = 2;
double s = 0.0;
for (unsigned j = 0; j < d; ++j)
s += std::pow(x[j] - A[i][j], 2.0);
:
const double pi = 3.1415926535897932;
const unsigned m = 5;
double ret = 0.0;
for (unsigned i(0); i < m; ++i)
{
// calculate `s`
ret += c[i] * std::exp(-s/pi) * std::cos(pi * s);
}
とret
は、関数の値が含まれてい
は、2つの同一の "内部" の加算があります。あなたは同じ番号を使用せずに、ベクターからの3つのユニークなランダムな要素を選択するにはどうすればよい
?
単純なアプローチは:乱数を生成し、それがすでに使用されているかどうかを確認し、すでに使用されていた場合は、未使用のものを見つけるまで別の番号を生成するだけです。
これは、do ... while()
ループの単純なシーケンスです。
人口のサイズが小さい場合や人工的に制限されている場合(10/15人)、これはかなり高価になる可能性があります。
多くの選択肢は、x [j]が、この表現でいるものUnique random numbers in an integer array in the C programming language
に記述されていますか? – Ploxzx