Necesito ajustar dos curvas (que ambas deben pertenecer a funciones cúbicas) en un conjunto de puntos con JuMP.
He terminado de ajustar una curva, pero estoy luchando por ajustar 2 curvas en el mismo conjunto de datos.
Pensé que si podía distribuir puntos a las curvas, por lo que si cada punto solo se podía usar una vez, podría hacerlo como a continuación, pero no funcionó. (Sé que puedo usar cosas mucho más complicadas, quiero que sea simple).
Esta es una parte de mi código actual:
# cubicFunc is a two dimensional array which accepts cubicFunc[x,degree]
@variable(m, mult1[1:4]) // 0:3 because it's cubic
@variable(m, mult2[1:4]) // 0:3 because it's cubic
@variable(m, 0 <= includeIn1[1:numOfPoints] <= 1, Int)
@variable(m, 0 <= includeIn2[1:numOfPoints] <= 1, Int)
# some kind of hack to force one of them to 0 and other one to 1
@constraint(m, loop[i in 1:numOfPoints], includeIn1[i] + includeIn2[i] == 1)
@objective(m, Min, sum( (yPoints - cubicFunc*mult1).*includeIn1 .^2 ) + sum( (yPoints - cubicFunc*mult2).*includeIn2 .^2 ))
Pero da varios errores dependiendo de lo que estoy intentando; *includeIn1
y, .*includeIn1
no funciona, he intentado hacerlo @NLobjective
pero me dio ~ 50 líneas de errores, etc.
¿Es realista mi idea? ¿Puedo incluirlo en el código?
Cualquier ayuda será muy apreciada. Muchas gracias.
yPoints = [ 3, 6, 5, 7, 3, 3, 1, 0, 4, 1]