Оптимизация подмножества массивов с составными агрегатными функциями

У меня есть массив P = [1, 5, 3, 6, 4,...] размера N и средний A

Я хочу найти наиболее эффективный способ максимизировать следующую трехмерную функцию:

f(x, y) = 1/( (1+e^(-6(x-2))) * (1+e^(-6(y-2))) * (1+e^(-0.1x-0.3y+1.5)) )

Function gcontour plot

где x = c(S) = Count(S) и y = m(S) = Min(S[0]/A, S[1]/A,..., S[n]/A) и S является подмножеством P Подмножество не обязательно должно быть непрерывным в P

У меня такое чувство, что это может быть сведено к некоторому варианту проблемы с подмножеством, но я действительно не знаю, с чего начать, кроме сортировки P Цель состоит в том, чтобы реализовать алгоритм в PHP, но на самом деле любой псевдокод очень помог бы.

Ответы

Ответ 1

Если вы ищете умное сокращение математики, согласитесь с другими, место является математическим обменом. В противном случае начните с библиотеки Math_Combinatorics. Затем вы сможете обработать все уникальные комбинации S:

require_once 'Math/Combinatorics.php';
$combos = new Math_Combinatorics;

$P = [1, 5, 3, 6, 4, ...];
for ($n = 1; $n <= count($P); $n++) {
    foreach ($combos->combinations($P, $n) as $S) {
        ... your calculations on S go here ...
    }
}