n個の実数のセットがあります。私はまた、一連の機能を持っています、
f_1, f_2, ..., f_m.
これらの各関数は、引数として数値のリストを取ります。私はmの範囲のセットも持っています、
[l_1, u_1], [l_2, u_2], ..., [l_m, u_m].
k個の要素のサブセット{r_1、r_2、...、r_k}を繰り返し選択したい
l_i <= f_i({r_1, r_2, ..., r_k}) <= u_i for 1 <= i <= m.
機能がスムーズであることに注意してください。{r_1、r_2、...、r_k}の1つの要素を変更しても、f_i({r_1、r_2、...、r_k})はそれほど変更されません。平均と分散は、一般的に使用される2つのf_iです。
これらは私が満たす必要のあるm個の制約です。
さらに、これを実行して、選択したサブセットのセットが、これらのm個の制約を満たすサイズkのすべてのサブセットのセット全体に均一に分散されるようにします。それだけでなく、これを効率的にやりたいと思っています。実行速度は、考えられるすべてのソリューションの空間内のソリューションの密度によって異なります(これが0.0の場合、アルゴリズムは永久に実行できます)。(f_i(任意のi)は一定の時間で計算できると仮定します。)
nは十分に大きいため、問題を総当たり攻撃することはできません。つまり、すべてのk要素のサブセットを反復処理して、m個の制約を満たすサブセットを見つけることはできません。
これを行う方法はありますか?
このようなCSPには、どのような手法が一般的に使用されていますか?誰かが私にこのような問題について話している良い本や記事の方向を示すことができますか(一般的なCSPだけでなく、離散値ではなく連続的な値を含むCSP)?