Hello,
I want to create a constraint: a variable var1 is equal to the output of a torch artificial neural network whose input is another variable var2.
------- This following function is my ann prediction (the ANN has been imported) -----
function get_y_pred(ann, x, x_scl, y_scl)
# x_scl and y_scl are scaler to modify the input x and output y.
x_std = x_scl.transform(x)
x_std = V.Variable(torch.from_numpy(x_std).float())
y_std = ann(x_std).data.numpy()
y_pred = y_scl.inverse_transform(y_std)
return y_pred
end
The input x should be a matrix containing var2 and some constants, e.g.,
x = [1.0, 0.6, var2, 0.8] # Vector
x = reshape(x, 1, length(x)) # Vector to Matrix
now I try to add a constraint for var1, i.e., during the optimization var1 should be adaptively changed by the ANN.
@addNLconstraint(model, var1 == get_y_pred(ann, x, x_scl, y_scl))
but it does not work, because I can not create a constraint by using a self-defined function or expression (get_y_pred) with ANN.
Can anyone help me with finding a way to solve this problem? Thank you very much!