Gostaria de aprender algo sobre esse problema de otimização: Para determinados números inteiros não negativos , encontre uma função minimize a expressão f
Um exemplo usando uma formulação diferente pode ficar mais claro: você recebe um conjunto de conjuntos de vetores como
{
{(3, 0, 0, 0, 0), (1, 0, 2, 0, 0)},
{(0, 1, 0, 0, 0), (0, 0, 0, 1, 0)},
{(0, 0, 0, 2, 0), (0, 1, 0, 1, 0)}
}
Escolha um vetor de cada conjunto, para que o componente máximo de sua soma seja mínimo. Por exemplo, você pode escolher
(1, 0, 2, 0, 0) + (0, 1, 0, 0, 0) + (0, 1, 0, 1, 0) = (1, 1, 2, 1, 0)
com o componente máximo igual a 2, o que é claramente ideal aqui.
Estou curioso para saber se este é um problema conhecido e quais métodos de solução aproximados específicos do problema estão disponíveis. Deve ser rápido e fácil de programar (sem solucionador de ILP , etc.). Nenhuma solução exata é necessária, pois é apenas uma aproximação do problema real.
Vejo que deveria ter adicionado alguns detalhes sobre as instâncias de problemas em que estou interessado:
- , ou seja, sempre existem 64 linhas (quando escritas como no exemplo acima).
- , ou seja, existem apenas 2 vetores por linha.
- N que (o comprimento do vetor) está entre 10 e 1000.
Além disso, em cada linha a soma dos elementos de todos os vetores é a mesma, ou seja,
e a soma dos elementos do vetor soma é menor que seu comprimento, ou seja,