Tôi cần ghép hai đường cong (cả hai nên thuộc các hàm khối) vào một tập hợp các điểm với JuMP.
Tôi đã thực hiện khớp một đường cong, nhưng tôi đang vật lộn để ghép 2 đường cong vào cùng một tập dữ liệu.
Tôi nghĩ rằng nếu tôi có thể phân phối điểm thành các đường cong - vì vậy nếu mỗi điểm chỉ có thể được sử dụng một lần - tôi có thể làm như dưới đây, nhưng nó không hoạt động. (Tôi biết rằng tôi có thể sử dụng những thứ phức tạp hơn nhiều, tôi muốn giữ cho nó đơn giản.)
Đây là một phần của mã hiện tại của tôi:
# 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 ))
Nhưng nó đưa ra nhiều lỗi khác nhau tùy thuộc vào những gì tôi đang cố gắng; *includeIn1
và, .*includeIn1
không hoạt động, tôi đã cố gắng thực hiện thông qua @NLobjective
nhưng nó đã cho tôi khoảng 50 dòng lỗi, v.v.
Ý tưởng của tôi có thực tế không? Tôi có thể làm cho nó vào mã?
Bất kỳ trợ giúp sẽ được đánh giá cao. Cảm ơn rât nhiều.
yPoints = [ 3, 6, 5, 7, 3, 3, 1, 0, 4, 1]