Muy buenas,


Tengo la siguiente duda/problema,

He optimizado con éxito un problema de este tipo:

\sum f(x_i)

donde f es una curva exponencial (función no lineal)

sujeto a:

a_i < x_i < b_i
y
\sum f(x_i) < Presupuesto

Vamos, es repartir un presupuesto forzando a que inviertas como poco a_i y
como mucho b_i para cada i

Esto lo hecho correctamente usando el paquete:

http://cran.r-project.org/web/packages/nloptr/index.html

Uso un algoritmo que no necesita gradiente: NLOPT_LN_COBYLA
(Aunque el gradiente se podría calcular, es fácil)

Ahora bien,

Quiero hacer una variación de este problema incluyendo que x_i pueda ser
cero (no se invierte en i) o si es mayor que cero ya tenga que ser como
mínimo a_i y como  máximo b_i

Esto lo he puesto de la siguiente manera:

\sum w_i * f(x_i)

donde como antes

a_i < x_i < b_i
\sum  w_i * f(x_i) < Presupuesto

Y donde ahora, w_i quiero que sea  binario (entero).


Por lo que he estado viendo esto es un problema de MINLP: Mixed Integer Non
Linear Problem

Buscando un poco y mirando en el task view de optimización de cran no he
conseguido encontrar nada  para esto...


See que a lo mejor R no es la herramienta más potente para esto, pero mi
idea es hacer un pequeño interfaz con shiny y como en general en estos
casos el paquete suele ejecutar código en C o Fortran creo que puede ser
bastante eficiente....

¿Alguna opción?

De no ser posible una opción en R, alternativas libres para conseguirlo¿?


Muchas gracias!!














-- 
Jorge Ayuso Rejas

	[[alternative HTML version deleted]]

