JuMPを使用して、2つの曲線(どちらも3次関数に属する)を一連の点にフィットさせる必要があります。
1つのカーブのフィッティングを実行しましたが、2つのカーブを同じデータセットにフィッティングするのに苦労しています。
ポイントをカーブに分配できれば、つまり各ポイントが1度しか使用できなければ、以下のようにできると思いましたが、うまくいきませんでした。(私はもっと複雑なものを使うことができることを知っています、私はそれを単純に保ちたいです。)
これは私の現在のコードの一部です:
# 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 ))
しかし、それは私がしようとしていることに応じてさまざまなエラーを出します。*includeIn1
そして、.*includeIn1
動作しません、私はそれをやろうとしました@NLobjective
が、それは私に〜50行のエラーなどの叫びを与えました
私の考えは現実的ですか?コードに入れることはできますか?
どんな助けも高く評価されます。どうもありがとうございました。
yPoints = [ 3, 6, 5, 7, 3, 3, 1, 0, 4, 1]