Quais seriam os bons métodos (e / ou pacotes de software) para tentar solucionar um problema que minimizasse uma função quadrática , st 0 ≤ x i ≤ 1 e existem mais limitações alguns dos quais são não-linear (e não-diferenciável), por exemplo Σ i x i 1 x i > um < b ?
Estou pensando em . FWIW, o Matlab aparentemente está usando um "método de conjunto ativo, semelhante ao de Gill et al.", Que apresenta desempenho um tanto desigual.
Respostas:
Se você tiver restrições não suaves, não ajuda que você tenha um objetivo quadrático convexo. Você precisa de um solucionador não suave restrito.
Consulte minha página da web
http://www.mat.univie.ac.at/~neum/glopt/software_l.html#nonsm
para obter um software adequado.
fonte
Você diz no comentário que não pode fazê-lo funcionar, pois não é quadrático o suficiente. Não vejo razão para isso. O problema é facilmente codificado como um programa quadrático de número misto.
Se eu entendo sua definição de problema, você deseja restringir a soma das variáveis maiores que um limite. Introduza uma variável binária indicando se x é maior que ae introduza outra variável z que deve ser igual a x quando isso é válido e zero caso contrário, e use a soma das novas variáveis.
Usando a caixa de ferramentas MATLAB YALMIP para fazer interface com o CPLEX (ou Gurobi ou qualquer outro solucionador de MIQP), o problema é resolvido trivialmente em frações de segundo. Aqui, um exemplo aleatório, implementado usando um modelo derivado manualmente e um modelo que explora os recursos de modelagem de alto nível no YALMIP
fonte