matrix - MethodError:没有方法匹配 parseNExpr_runtime
问题描述
我在 Julia 中用于解决 NLP 问题的以下代码有错误。
using JuMP
using Ipopt
using DataFrames,ConditionalJuMP
m = Model(solver=IpoptSolver())
#importing data
xi=[-1.016713795 0.804447648 0.932137661 1.064136698 -0.963217531
-1.048396778 1.076371484 1.099027177 1.061556926 -0.95185481
-0.980261302 0.271253807 0.184946729 1.062838197 -0.958794505
-0.980703191 0.278820569 0.231132677 1.062967459 -0.959302488
-0.953074503 -0.00768112 0.128808175 1.067743779 -0.978524489
-1.014866259 0.815325963 1.065956208 1.067059122 -0.974682291
-0.995088119 0.550359991 0.845087207 1.066556784 -0.973154887]
xj=xi
pii=[-300
-259.6530828
-284.3708955
-291.3387625
-342.4479859
-356.5031603
-351.0154738]
sample_size=7
bus_num=5
tempsum=0
#define variables
@variable(m,aij[1:2*bus_num,1:2*bus_num]) # define matrix by
2bus_num*2bus_num
for n=1:sample_size
for i=1:bus_num
for j=1:bus_num
tempsum=(aij[i,j]*xi[n,i]*xj[n,j]-pii[n,2])^2+tempsum
end
end
end
#define constraints
@constraint(m, [i=1:2*bus_num,j=2*bus_num],aij[i,j]==aij[j,i])
@constraint(m, [i=1:2*bus_num,j=2*bus_num],aij[i,j]*aij[i,j]<=aij
[i,i]*aij[j,j])
@constraint(m, [i=1:2*bus_num,j=2*bus_num],aij[i,i]*aij[j,j]<=0.25*
(aij[i,i]+aij[j,j])*(aij[i,i]+aij[j,j]))
#define NLP objective function
@NLobjective(m, Min, tempsum)
solve(m)
println("m = ",getobjectivevalue(m))
println("Aij = ", getvalue(aij))
但运行后,出现如下错误。
MethodError: 没有方法匹配 parseNLExpr_runtime(::JuMP.Model, ::JuMP.GenericQuadExpr{Float64,JuMP.Variable}, ::Array{ReverseDiffSparse.NodeData,1}, ::Int64, ::Array{Float64,1})
错误发生在 上@NLobjective(m, Min, tempsum)
,但我不知道如何修改代码。你可以请任何人帮助我吗?
此外,我还对如何在此处为解矩阵 aij 添加正定约束感到困惑,因为我想得到一个正定矩阵 aij。
解决方案
@NLobjective(m, Min, tempsum) 此代码中的 tempsum 必须是由 Jump.register(***) 注册的函数。
推荐阅读
- amazon-web-services - 将 IIS 日志移动到 AWS s3 存储桶
- git - 如何一步完成拉取和合并?
- c - 如何获得线性方程的系数
- javascript - 有人知道为什么我的变换比例 css 不起作用吗?
- mysql - 如果连接表中的行之一不匹配条件,Mysql 将排除整行
- .net - 检查是否在没有 try-catch 的情况下设置了属性属性;
- jquery - 如何在平板电脑的页面加载时隐藏键盘?
- php - Laravel - Excel 导入
- r - 如何传递循环迭代的值并在 R 的循环中使用它?
- javascript - 当 chrome 开发工具关闭时,ajax 加载的 html 中的脚本标签不起作用