julia - 将 MutivariatePolynomials 输出作为用户定义函数导入 JuMP
问题描述
我正在尝试从 MultivariatePolynomials 导入函数的输出并将其作为函数使用到 JuMp 中。下面是相关代码,它是大型 NL 方程系统的一部分。
using JuMP
using MultivariatePolynomials
@polyvar k s θ_1k θ_2k θ_3k θ_4k θ_5k θ_6k θ_7k θ_8k θ_9k θ_10k θ_11k θ_12k θ_13k E ρ
d=....
j_11=subs(d,k=>q11(θ_1k,θ_2k,θ_3k,θ_4k,θ_5k,θ_6k,θ_7k,θ_8k,θ_9k),s=>f(s,ρ,E))
c_11=subs(j_11, k=>-0.7071067811865476,s=>0)
function v11(θ_1k,θ_2k,θ_3k,θ_4k,θ_5k,θ_6k,θ_7k,θ_8k,θ_9k,ρ,E)
c_11
end
m=Model(solver=IpoptSolver())
JuMP.register(m, :v11, 27, v11, autodiff=true)
@NLconstraint(m,cons1, ((v11(θ_1k,θ_2k,θ_3k,θ_4k,θ_5k,θ_6k,θ_7k,θ_8k,θ_9k,θ_10k,θ_11k,θ_12k,θ_13k,ρ, E))*w_1+*β*(1-δ+...
solve(m)
status=solve(m)
我收到以下错误:
MethodError: no method matching parseNLExpr_runtime(::JuMP.Model, ::DynamicPolynomials.PolyVar{true}, ::Array{ReverseDiffSparse.NodeData,1}, ::Int64, ::Array{Float64,1})
Closest candidates are:
parseNLExpr_runtime(::JuMP.Model, ::Number, ::Any, ::Any, ::Any) at C:\Users\s1364322\.julia\v0.6\JuMP\src\parsenlp.jl:196
parseNLExpr_runtime(::JuMP.Model, ::JuMP.Variable, ::Any, ::Any, ::Any) at C:\Users\s1364322\.julia\v0.6\JuMP\src\parsenlp.jl:202
似乎输出c_11
并没有像我尝试通过定义函数那样转换为多元函数类型v11
,而是保持为多项式类型。我该如何解决这个问题?拜托,非常感谢您的帮助
解决方案
以供日后参考,已在讨论中解决。
推荐阅读
- javascript - 如何在 Node.js 中获取不带扩展名的文本文件的 MIME 类型
- jpa - 如何将动态属性/提示传递给 EJB EntityManagerFactory 注入?
- rust - 试图使类型“PointerState”未初始化
- php - “return view”和“return make:view”有什么区别?
- python - Python列表元素与转换为元组以进行字符串格式化
- regex - 正则表达式忽略几组符号中的所有内容
- python - 用 pygame 和 pyserial 控制电机
- flutter - 用路径在 Flutter 中绘制复杂元素,然后以不同的角度重绘相同的元素
- python - Python模拟树概率
- javascript - Firebase“运行此应用程序的环境不支持操作”