Ich muss mit JuMP zwei Kurven (die beide zu kubischen Funktionen gehören sollten) in eine Reihe von Punkten einpassen.
Ich habe eine Kurve angepasst, aber ich habe Probleme, zwei Kurven in denselben Datensatz einzufügen.
Ich dachte, wenn ich Punkte auf Kurven verteilen kann - also wenn jeder Punkt nur einmal verwendet werden kann - kann ich es wie unten machen, aber es hat nicht funktioniert. (Ich weiß, dass ich viel kompliziertere Dinge verwenden kann, ich möchte es einfach halten.)
Dies ist ein Teil meines aktuellen Codes:
# 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 ))
Aber es gibt verschiedene Fehler, je nachdem, was ich versuche; *includeIn1
und, .*includeIn1
funktioniert nicht, ich habe versucht, es über zu tun, @NLobjective
aber es gab mir Keuchhusten ~ 50 Zeilen von Fehlern usw.
Ist meine Idee realistisch? Kann ich es in den Code schaffen?
Jede Hilfe wird sehr geschätzt. Vielen Dank.
yPoints = [ 3, 6, 5, 7, 3, 3, 1, 0, 4, 1]