AnyMath 文档

使用ModelingToolkit构建符号问题

该页面正在翻译中。

注意此示例使用OptimizationOptimJL。jl包。 查看 Optim.jl页有关安装和使用的详细信息。

ModelingToolkit.jl是Julia中用于符号建模的综合系统。 允许在求解器阶段之前执行许多操作,例如检测稀疏模式、分析求解模型的部分以减少求解复杂性等等。 它支持的系统类型之一是 优化系统,即,符号对应于 优化问题. 让我们演示如何使用 优化系统 构造优化 优化问题s.

首先,我们需要从定义符号变量开始,如下所示:

using ModelingToolkit, Optimization, OptimizationOptimJL

@variables x y
@parameters a b

我们现在可以构建 优化系统 通过为损失函数构建符号表达式:

loss = (a - x)^2 + b * (y - x^2)^2
@named sys = OptimizationSystem(loss, [x, y], [a, b])

为了把它变成数值解的问题,我们需要指定我们的参数值和初始条件。 这看起来像:

u0 = [x => 1.0
      y => 2.0]
p = [a => 6.0
     b => 7.0]
2-element Vector{Pair{Num, Float64}}:
 a => 6.0
 b => 7.0

现在我们解决了。

sys = complete(sys)
prob = OptimizationProblem(sys, u0, p, grad = true, hess = true)
solve(prob, Newton())
retcode: Success
u: 2-element Vector{Float64}:
  6.0
 36.0

它还提供了许多其他功能,如自动并行和稀疏化。 此外,您可以分层嵌套系统以生成巨大的优化问题。 查看https://docs.sciml.ai/ModelingToolkit/stable/[ModelingToolkit.jl OptimizationSystem文档]获取更多信息。