|
| 1 | +using OptimizationBase, Test |
| 2 | +prob = OptimizationProblem((x, p) -> sum(x), zeros(2)) |
| 3 | +@test_throws OptimizationBase.OptimizerMissingError solve(prob, nothing) |
| 4 | + |
| 5 | +struct OptAlg end |
| 6 | + |
| 7 | +SciMLBase.allowscallback(::OptAlg) = false |
| 8 | +@test_throws OptimizationBase.IncompatibleOptimizerError solve(prob, OptAlg(), |
| 9 | + callback = (args...) -> false) |
| 10 | + |
| 11 | +SciMLBase.requiresbounds(::OptAlg) = true |
| 12 | +@test_throws OptimizationBase.IncompatibleOptimizerError solve(prob, OptAlg()) |
| 13 | +SciMLBase.requiresbounds(::OptAlg) = false |
| 14 | + |
| 15 | +prob = OptimizationProblem((x, p) -> sum(x), zeros(2), lb = [-1.0, -1.0], ub = [1.0, 1.0]) |
| 16 | +@test_throws OptimizationBase.IncompatibleOptimizerError solve(prob, OptAlg()) #by default allowsbounds is false |
| 17 | + |
| 18 | +cons = (res, x, p) -> (res .= [x[1]^2 + x[2]^2]) |
| 19 | +optf = OptimizationFunction((x, p) -> sum(x), SciMLBase.NoAD(), cons = cons) |
| 20 | +prob = OptimizationProblem(optf, zeros(2)) |
| 21 | +@test_throws OptimizationBase.IncompatibleOptimizerError solve(prob, OptAlg()) #by default allowsconstraints is false |
| 22 | + |
| 23 | +SciMLBase.requiresconstraints(::OptAlg) = true |
| 24 | +optf = OptimizationFunction((x, p) -> sum(x), SciMLBase.NoAD()) |
| 25 | +prob = OptimizationProblem(optf, zeros(2)) |
| 26 | +@test_throws OptimizationBase.IncompatibleOptimizerError solve(prob, OptAlg()) |
0 commit comments