Help interpreting an error with exponentials using JuMP variables

question
optimization

#1

Any help would be appreciated with this problem:

using NLopt
using JuMP

m=Model(solver=NLoptSolver(algorithm=:DIRECT))

R_=diagm([R0,R1])
R=flipdim(R_,2)
Q=diagm([Q0,Q1])

T=kron(Q,Diagonal(ones(2)))+kron(Diagonal(ones(2)),conj(Q))+kron(R,conj(R))


@variable(m,R0)
@variable(m,R1)
@variable(m,Q0)
@variable(m,Q1)

W=e^(T)


@NLobjective(m,Min,W)

status=solve(m)

Error:

MethodError: no method matching ^(::Irrational{:e}, ::Array{JuMP.GenericQuadExpr{Float64,JuMP.Variable},2})
Closest candidates are:
  ^(::Irrational{:e}, ::Irrational) at irrationals.jl:219
  ^(::Irrational{:e}, ::Rational) at irrationals.jl:219
  ^(::Irrational{:e}, ::Integer) at irrationals.jl:219

I have omitted some details and shortened functions for privacy but I could include more if necessary.


#2

Does it help to use exp(T)?


#3

Unfortunately it doesn’t, it seems julia doesn’t want to take the exponential of my JuMP array, is that a usual problem? I will try to fix other parts of my code and come back to this. Thank you.


#4

Your code seems to be out of order (the @variable statements should come before R, Q and T).

What are you trying to do? T is a 4x4 matrix. Its exponential (be it elementwise or a matrix exponential) is a 4x4 matrix, so how can that be the objective of an optimization?


#5

Sorry, I just didn’t include the full expression of the objective to try to minimize the code. I have fixed the order of the @variable statements. I have another thread where I have posted my updated code with a new problem help-creating-a-jump-variable-array So I won’t repost it here to reduce redundancy, however I can eventually post my full minimization expression if my problems aren’t worked out my other post. Thank you for your help!