Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/CI.yml
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ jobs:
- uses: actions/checkout@v5
- uses: julia-actions/setup-julia@v2
with:
version: '1'
version: '1.11'
- uses: julia-actions/cache@v2
- name: Configure doc environment
shell: julia --project=docs --color=yes {0}
Expand Down
12 changes: 6 additions & 6 deletions Project.toml
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,16 @@ LuxCore = "bb33d45b-7691-41d6-9220-0943567d0623"
MLDataDevices = "7e8f7934-dd98-4c1a-8fe8-92b47a384d40"
ModelingToolkit = "961ee093-0014-501f-94e3-6117800e7a78"
NeuralPDE = "315f7962-48a3-4962-8226-d0f33b1235f0"
Optimization = "7f7a1694-90dd-40f0-9382-eb1efda571ba"
OrdinaryDiffEq = "1dea7af3-3e70-54e6-95c3-0bf5283fa5ed"
QuasiMonteCarlo = "8a4e6c94-4038-4cdc-81c3-7e6ffdb2a71b"
SciMLBase = "0bca4576-84f4-4d90-8ffe-ffa030f20462"
StableRNGs = "860ef19b-820b-49d6-a774-d7a799459cd3"
SymbolicIndexingInterface = "2efcf032-c050-4f8e-a9bb-153293bab1f5"
Symbolics = "0c5d862f-8b57-4792-8d23-62f2024744c7"

[sources]
NeuralLyapunovProblemLibrary = {path = "lib/NeuralLyapunovProblemLibrary"}

[compat]
Aqua = "0.8.11"
Boltz = "1.2"
Expand All @@ -43,11 +45,10 @@ ModelingToolkit = "9.77"
NLopt = "1"
NeuralLyapunovProblemLibrary = "0.0.1"
NeuralPDE = "5.19.1"
Optimization = "4"
OptimizationBase = "2.1, 3"
OptimizationOptimJL = "0.4"
OptimizationOptimisers = "0.3"
OrdinaryDiffEq = "6.92"
Pkg = "1"
QuasiMonteCarlo = "0.3.3"
Random = "1"
SafeTestsets = "0.1"
Expand All @@ -67,13 +68,12 @@ ExplicitImports = "7d51a73a-1435-4ff3-83d9-f097790105c7"
LuxCUDA = "d0bbae9a-e099-4d5b-a835-1c6931763bda"
NLopt = "76087f3c-5699-56af-9a33-bf431cd00edd"
NeuralLyapunovProblemLibrary = "83723521-ca9c-4edc-8e64-505178d150fe"
Optimization = "7f7a1694-90dd-40f0-9382-eb1efda571ba"
OptimizationBase = "bca83a33-5cc9-4baa-983d-23429ab6bcbb"
OptimizationOptimJL = "36348300-93cb-4f02-beb5-3c3902f8871e"
OptimizationOptimisers = "42dfb2eb-d2b4-4451-abcd-913932933ac1"
Pkg = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f"
Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c"
SafeTestsets = "1bc83da4-3b8d-516f-aca4-4fe02f6d838f"
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"

[targets]
test = ["SafeTestsets", "Test", "Optimization", "OptimizationOptimJL", "OptimizationOptimisers", "NeuralLyapunovProblemLibrary", "NLopt", "Random", "CSDP", "ComponentArrays", "LuxCUDA", "DiffEqGPU", "Aqua", "ExplicitImports", "Pkg"]
test = ["SafeTestsets", "Test", "OptimizationBase", "OptimizationOptimJL", "OptimizationOptimisers", "NeuralLyapunovProblemLibrary", "NLopt", "Random", "CSDP", "ComponentArrays", "LuxCUDA", "DiffEqGPU", "Aqua", "ExplicitImports"]
3 changes: 1 addition & 2 deletions src/NeuralLyapunov.jl
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ using ModelingToolkit: @named, @parameters, ODESystem, PDESystem, parameters, un
defaults, operation, unbound_inputs, defaults, structural_simplify
import SciMLBase
using SciMLBase: ODEFunction, ODEInputFunction, ODEProblem, solve, EnsembleProblem,
EnsembleThreads
EnsembleThreads, remake

using SymbolicIndexingInterface: SymbolCache, variable_symbols
using NeuralPDE: PhysicsInformedNN, discretize, LogOptions
Expand All @@ -22,7 +22,6 @@ using MLDataDevices: cpu_device
using Boltz.Layers: ShiftTo
using StableRNGs: StableRNG
using QuasiMonteCarlo: sample, LatinHypercubeSample
using Optimization: remake
using DataFrames: DataFrame

const cpud = cpu_device()
Expand Down
2 changes: 1 addition & 1 deletion test/benchmark_CUDA.jl
Original file line number Diff line number Diff line change
Expand Up @@ -173,7 +173,7 @@ end
function f(x, p, t)
pos = x[1]
vel = x[2]
return vcat(vel, -vel - pos)
return [vel, -vel - pos]
end
function f(dx, x, p, t)
pos = x[1]
Expand Down
8 changes: 4 additions & 4 deletions test/damped_pendulum.jl
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
using NeuralPDE, Lux, ComponentArrays, ModelingToolkit, NeuralLyapunov
import Boltz.Layers: PeriodicEmbedding, MLP
import Optimization
import OptimizationBase
using OptimizationOptimisers: Adam
using OptimizationOptimJL: BFGS
using StableRNGs, Random
Expand Down Expand Up @@ -86,9 +86,9 @@ prob = discretize(pde_system, discretization)

########################## Solve OptimizationProblem ##########################

res = Optimization.solve(prob, Adam(0.1); maxiters = 500)
prob = Optimization.remake(prob, u0 = res.u)
res = Optimization.solve(prob, BFGS(); maxiters = 500)
res = OptimizationBase.solve(prob, Adam(0.1); maxiters = 500)
prob = OptimizationBase.remake(prob, u0 = res.u)
res = OptimizationBase.solve(prob, BFGS(); maxiters = 500)

###################### Get numerical numerical functions ######################

Expand Down
8 changes: 4 additions & 4 deletions test/damped_pendulum_lux.jl
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
using NeuralPDE, Lux, ModelingToolkit, NeuralLyapunov, NeuralLyapunovProblemLibrary
import Boltz.Layers: PeriodicEmbedding, MLP
import Optimization
import OptimizationBase
using OptimizationOptimisers: Adam
using OptimizationOptimJL: BFGS
using StableRNGs, Random
Expand Down Expand Up @@ -71,9 +71,9 @@ prob = discretize(pde_system, discretization)

########################## Solve OptimizationProblem ##########################

res = Optimization.solve(prob, Adam(0.01f0); maxiters = 300)
prob = Optimization.remake(prob, u0 = res.u)
res = Optimization.solve(prob, BFGS(); maxiters = 300)
res = OptimizationBase.solve(prob, Adam(0.01f0); maxiters = 300)
prob = OptimizationBase.remake(prob, u0 = res.u)
res = OptimizationBase.solve(prob, BFGS(); maxiters = 300)

###################### Get numerical numerical functions ######################

Expand Down
8 changes: 4 additions & 4 deletions test/damped_pendulum_lux_2.jl
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
using NeuralPDE, Lux, ModelingToolkit, NeuralLyapunov, NeuralLyapunovProblemLibrary
import Boltz.Layers: PeriodicEmbedding, MLP
import Optimization
import OptimizationBase
using OptimizationOptimisers: Adam
using OptimizationOptimJL: BFGS
using StableRNGs, Random
Expand Down Expand Up @@ -70,9 +70,9 @@ prob = discretize(pde_system, discretization)

########################## Solve OptimizationProblem ##########################

res = Optimization.solve(prob, Adam(0.01f0); maxiters = 300)
prob = Optimization.remake(prob, u0 = res.u)
res = Optimization.solve(prob, BFGS(); maxiters = 300)
res = OptimizationBase.solve(prob, Adam(0.01f0); maxiters = 300)
prob = OptimizationBase.remake(prob, u0 = res.u)
res = OptimizationBase.solve(prob, BFGS(); maxiters = 300)

###################### Get numerical numerical functions ######################

Expand Down
8 changes: 4 additions & 4 deletions test/damped_sho.jl
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
using NeuralPDE, Lux, NeuralLyapunov, ComponentArrays
using Boltz.Layers: MLP
import Optimization
import OptimizationBase
using OptimizationOptimisers: Adam
using OptimizationOptimJL: BFGS
using StableRNGs, Random
Expand Down Expand Up @@ -63,9 +63,9 @@ sym_prob = symbolic_discretize(pde_system, discretization)

########################## Solve OptimizationProblem ##########################

res = Optimization.solve(prob, Adam(); maxiters = 450)
prob = Optimization.remake(prob, u0 = res.u)
res = Optimization.solve(prob, BFGS(); maxiters = 300)
res = OptimizationBase.solve(prob, Adam(); maxiters = 450)
prob = OptimizationBase.remake(prob, u0 = res.u)
res = OptimizationBase.solve(prob, BFGS(); maxiters = 300)

###################### Get numerical numerical functions ######################
(V, V̇) = get_numerical_lyapunov_function(
Expand Down
12 changes: 6 additions & 6 deletions test/damped_sho_CUDA.jl
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
using NeuralPDE, NeuralLyapunov
import Optimization
import OptimizationBase
using OptimizationOptimisers: Adam
using OptimizationOptimJL: BFGS
using Random
Expand Down Expand Up @@ -62,11 +62,11 @@ sym_prob = symbolic_discretize(pde_system, discretization)

########################## Solve OptimizationProblem ##########################

res = Optimization.solve(prob, Adam(0.01f0); maxiters = 300)
prob = Optimization.remake(prob, u0 = res.u)
res = Optimization.solve(prob, Adam(); maxiters = 300)
prob = Optimization.remake(prob, u0 = res.u)
res = Optimization.solve(prob, BFGS(); maxiters = 300)
res = OptimizationBase.solve(prob, Adam(0.01f0); maxiters = 300)
prob = OptimizationBase.remake(prob, u0 = res.u)
res = OptimizationBase.solve(prob, Adam(); maxiters = 300)
prob = OptimizationBase.remake(prob, u0 = res.u)
res = OptimizationBase.solve(prob, BFGS(); maxiters = 300)

###################### Get numerical numerical functions ######################
(V, V̇) = get_numerical_lyapunov_function(
Expand Down
8 changes: 4 additions & 4 deletions test/inverted_pendulum.jl
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
using NeuralPDE, Lux, NeuralLyapunov
import Boltz.Layers: PeriodicEmbedding, MLP
import Optimization
import OptimizationBase
using OptimizationOptimisers: Adam
using OptimizationOptimJL: BFGS
using StableRNGs, Random
Expand Down Expand Up @@ -88,9 +88,9 @@ prob = discretize(pde_system, discretization)

########################## Solve OptimizationProblem ##########################

res = Optimization.solve(prob, Adam(0.05f0); maxiters = 300)
prob = Optimization.remake(prob, u0 = res.u)
res = Optimization.solve(prob, BFGS(); maxiters = 300)
res = OptimizationBase.solve(prob, Adam(0.05f0); maxiters = 300)
prob = OptimizationBase.remake(prob, u0 = res.u)
res = OptimizationBase.solve(prob, BFGS(); maxiters = 300)

########################### Get numerical functions ###########################

Expand Down
8 changes: 4 additions & 4 deletions test/inverted_pendulum_ODESystem.jl
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
using NeuralPDE, Lux, ModelingToolkit, NeuralLyapunov, NeuralLyapunovProblemLibrary
import Boltz.Layers: PeriodicEmbedding, MLP
import Optimization
import OptimizationBase
using OptimizationOptimisers: Adam
using OptimizationOptimJL: BFGS
using StableRNGs, Random
Expand Down Expand Up @@ -82,9 +82,9 @@ prob = discretize(pde_system, discretization)

########################## Solve OptimizationProblem ##########################

res = Optimization.solve(prob, Adam(0.05f0); maxiters = 300)
prob = Optimization.remake(prob, u0 = res.u)
res = Optimization.solve(prob, BFGS(); maxiters = 300)
res = OptimizationBase.solve(prob, Adam(0.05f0); maxiters = 300)
prob = OptimizationBase.remake(prob, u0 = res.u)
res = OptimizationBase.solve(prob, BFGS(); maxiters = 300)

########################### Get numerical functions ###########################

Expand Down
8 changes: 4 additions & 4 deletions test/roa_estimation.jl
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
using NeuralPDE, Lux, ComponentArrays, NeuralLyapunov
import Optimization
import OptimizationBase
using OptimizationOptimisers: Adam
using OptimizationOptimJL: BFGS
using Boltz.Layers: MLP
Expand Down Expand Up @@ -54,9 +54,9 @@ sym_prob = symbolic_discretize(pde_system, discretization)

########################## Solve OptimizationProblem ##########################

res = Optimization.solve(prob, Adam(); maxiters = 300)
prob = Optimization.remake(prob, u0 = res.u)
res = Optimization.solve(prob, BFGS(); maxiters = 300)
res = OptimizationBase.solve(prob, Adam(); maxiters = 300)
prob = OptimizationBase.remake(prob, u0 = res.u)
res = OptimizationBase.solve(prob, BFGS(); maxiters = 300)

###################### Get numerical numerical functions ######################
(V, V̇) = get_numerical_lyapunov_function(
Expand Down
5 changes: 0 additions & 5 deletions test/runtests.jl
Original file line number Diff line number Diff line change
@@ -1,10 +1,5 @@
using SafeTestsets

# Use the local version of NeuralLyapunovProblemLibrary
import Pkg
Pkg.develop(Pkg.PackageSpec(path = (pwd() * "/../lib/NeuralLyapunovProblemLibrary")))
Pkg.instantiate()

const GROUP = lowercase(get(ENV, "GROUP", "all"))
const DEVICE = lowercase(get(ENV, "DEVICE", "cpu"))

Expand Down
Loading