@@ -18,6 +18,21 @@ Return a simplified copy of the function `f`.
18
18
19
19
!!! warning
20
20
This function is not type stable by design.
21
+
22
+ ## Example
23
+
24
+ ```jldoctest
25
+ julia> import MathOptInterface as MOI
26
+
27
+ julia> x = MOI.VariableIndex(1)
28
+ MOI.VariableIndex(1)
29
+
30
+ julia> f = MOI.ScalarNonlinearFunction(:^, Any[x, 1])
31
+ ^(MOI.VariableIndex(1), (1))
32
+
33
+ julia> MOI.Nonlinear.SymbolicAD.simplify(f)
34
+ MOI.VariableIndex(1)
35
+ ```
21
36
"""
22
37
simplify (f) = simplify! (copy (f))
23
38
@@ -33,6 +48,27 @@ new object if `f` can be represented in a simpler type.
33
48
34
49
!!! warning
35
50
This function is not type stable by design.
51
+
52
+ ## Example
53
+
54
+ ```jldoctest
55
+ julia> import MathOptInterface as MOI
56
+
57
+ julia> x = MOI.VariableIndex(1)
58
+ MOI.VariableIndex(1)
59
+
60
+ julia> f = MOI.ScalarNonlinearFunction(
61
+ :+,
62
+ Any[MOI.ScalarNonlinearFunction(:+, Any[1.0, x]), 2.0 * x + 3.0],
63
+ )
64
+ +(+(1.0, MOI.VariableIndex(1)), 3.0 + 2.0 MOI.VariableIndex(1))
65
+
66
+ julia> MOI.Nonlinear.SymbolicAD.simplify!(f)
67
+ +(1.0, MOI.VariableIndex(1), 3.0 + 2.0 MOI.VariableIndex(1))
68
+
69
+ julia> f
70
+ +(1.0, MOI.VariableIndex(1), 3.0 + 2.0 MOI.VariableIndex(1))
71
+ ```
36
72
"""
37
73
simplify! (f) = f
38
74
311
347
variables(f::Union{Real,MOI.AbstractScalarFunction})
312
348
313
349
Return a sorted list of the `MOI.VariableIndex` present in the function `f`.
350
+
351
+ ## Example
352
+
353
+ ```jldoctest
354
+ julia> import MathOptInterface as MOI
355
+
356
+ julia> x = MOI.VariableIndex.(1:3)
357
+ 3-element Vector{MathOptInterface.VariableIndex}:
358
+ MOI.VariableIndex(1)
359
+ MOI.VariableIndex(2)
360
+ MOI.VariableIndex(3)
361
+
362
+ julia> f = MOI.ScalarNonlinearFunction(:atan, Any[x[3], 2.0 * x[1]])
363
+ atan(MOI.VariableIndex(3), 0.0 + 2.0 MOI.VariableIndex(1))
364
+
365
+ julia> MOI.Nonlinear.SymbolicAD.variables(f)
366
+ 2-element Vector{MathOptInterface.VariableIndex}:
367
+ MOI.VariableIndex(1)
368
+ MOI.VariableIndex(3)
369
+ ```
314
370
"""
315
371
function variables (f:: MOI.AbstractScalarFunction )
316
372
ret = MOI. VariableIndex[]
@@ -398,6 +454,24 @@ like `*(false, g)` that can be trivially simplified to `false`.
398
454
399
455
In most cases, you should call `simplify!(derivative(f, x))` to return a
400
456
simplified expression of the derivative.
457
+
458
+ ## Example
459
+
460
+ ```jldoctest
461
+ julia> import MathOptInterface as MOI
462
+
463
+ julia> x = MOI.VariableIndex(1)
464
+ MOI.VariableIndex(1)
465
+
466
+ julia> f = MOI.ScalarNonlinearFunction(:sin, Any[x])
467
+ sin(MOI.VariableIndex(1))
468
+
469
+ julia> df_dx = MOI.Nonlinear.SymbolicAD.derivative(f, x)
470
+ *(cos(MOI.VariableIndex(1)), (true))
471
+
472
+ julia> MOI.Nonlinear.SymbolicAD.simplify!(df_dx)
473
+ cos(MOI.VariableIndex(1))
474
+ ```
401
475
"""
402
476
derivative (:: Real , :: MOI.VariableIndex ) = false
403
477
0 commit comments