@@ -113,7 +113,7 @@ Define the variable dimension and possibly the names of each component.
113
113
# Examples
114
114
```jldoctest
115
115
julia> variable!(ocp, 1, "v")
116
- julia> variable!(ocp, 2, "v", [ "v₁", "v₂" ])
116
+ julia> variable!(ocp, 2, "v", [ "v₁", "v₂" ])
117
117
```
118
118
"""
119
119
function variable! (ocp:: OptimalControlModel , q:: Dimension , name:: String = __variable_name (),
@@ -129,6 +129,14 @@ function variable!(ocp::OptimalControlModel, q::Dimension, name::String=__variab
129
129
nothing # to force to return nothing
130
130
end
131
131
132
+ function variable! (ocp:: OptimalControlModel , q:: Dimension , name:: Symbol , components_names:: Vector{Symbol} )
133
+ variable! (ocp, q, string (name), string .(components_names))
134
+ end
135
+
136
+ function variable! (ocp:: OptimalControlModel , q:: Dimension , name:: Symbol , components_names:: Vector{String} )
137
+ variable! (ocp, q, string (name), components_names)
138
+ end
139
+
132
140
function variable! (ocp:: OptimalControlModel , q:: Dimension , name:: Symbol )
133
141
variable! (ocp, q, string (name))
134
142
end
@@ -187,6 +195,15 @@ function state!(ocp::OptimalControlModel, n::Dimension, name::String=__state_nam
187
195
ocp. state_name = name
188
196
nothing # to force to return nothing
189
197
end
198
+
199
+ function state! (ocp:: OptimalControlModel , n:: Dimension , name:: Symbol , components_names:: Vector{Symbol} )
200
+ state! (ocp, n, string (name), string .(components_names))
201
+ end
202
+
203
+ function state! (ocp:: OptimalControlModel , n:: Dimension , name:: Symbol , components_names:: Vector{String} )
204
+ state! (ocp, n, string (name), components_names)
205
+ end
206
+
190
207
function state! (ocp:: OptimalControlModel , n:: Dimension , name:: Symbol )
191
208
state! (ocp, n, string (name))
192
209
end
@@ -246,6 +263,14 @@ function control!(ocp::OptimalControlModel, m::Dimension, name::String=__control
246
263
nothing # to force to return nothing
247
264
end
248
265
266
+ function control! (ocp:: OptimalControlModel , m:: Dimension , name:: Symbol , components_names:: Vector{Symbol} )
267
+ control! (ocp, m, string (name), string .(components_names))
268
+ end
269
+
270
+ function control! (ocp:: OptimalControlModel , m:: Dimension , name:: Symbol , components_names:: Vector{String} )
271
+ control! (ocp, m, string (name), components_names)
272
+ end
273
+
249
274
function control! (ocp:: OptimalControlModel , m:: Dimension , name:: Symbol )
250
275
control! (ocp, m, string (name))
251
276
end
@@ -438,12 +463,12 @@ Add an `:initial`, `:final`, `:control`, `:state` or `:variable` box constraint
438
463
# Examples
439
464
440
465
```jldoctest
441
- julia> constraint!(ocp, :initial, 2:3, [ 0, 0 ], [ 1, 2 ])
466
+ julia> constraint!(ocp, :initial, 2:3, [ 0, 0 ], [ 1, 2 ])
442
467
julia> constraint!(ocp, :final, Index(1), 0, 2)
443
468
julia> constraint!(ocp, :control, Index(1), 0, 2)
444
- julia> constraint!(ocp, :state, 2:3, [ 0, 0 ], [ 1, 2 ])
445
- julia> constraint!(ocp, :initial, 1:2:5, [ 0, 0, 0 ], [ 1, 2, 1 ])
446
- julia> constraint!(ocp, :variable, 1:2, [ 0, 0 ], [ 1, 2 ])
469
+ julia> constraint!(ocp, :state, 2:3, [ 0, 0 ], [ 1, 2 ])
470
+ julia> constraint!(ocp, :initial, 1:2:5, [ 0, 0, 0 ], [ 1, 2, 1 ])
471
+ julia> constraint!(ocp, :variable, 1:2, [ 0, 0 ], [ 1, 2 ])
447
472
```
448
473
"""
449
474
function constraint! (ocp:: OptimalControlModel{<: TimeDependence, V} , type:: Symbol , rg:: RangeConstraint , lb:: ctVector , ub:: ctVector ,
@@ -512,8 +537,8 @@ Add an `:initial` or `:final` value constraint on a range of the state, or a val
512
537
# Examples
513
538
514
539
```jldoctest
515
- julia> constraint!(ocp, :initial, 1:2:5, [ 0, 0, 0 ])
516
- julia> constraint!(ocp, :initial, 2:3, [ 0, 0 ])
540
+ julia> constraint!(ocp, :initial, 1:2:5, [ 0, 0, 0 ])
541
+ julia> constraint!(ocp, :initial, 2:3, [ 0, 0 ])
517
542
julia> constraint!(ocp, :final, Index(2), 0)
518
543
julia> constraint!(ocp, :variable, 2:3, [ 0, 3 ])
519
544
```
@@ -566,9 +591,9 @@ Add an `:initial` or `:final` value constraint on the state, or a `:variable` va
566
591
# Examples
567
592
568
593
```jldoctest
569
- julia> constraint!(ocp, :initial, [ 0, 0 ])
594
+ julia> constraint!(ocp, :initial, [ 0, 0 ])
570
595
julia> constraint!(ocp, :final, 2) # if the state is of dimension 1
571
- julia> constraint!(ocp, :variable, [ 3, 0, 1 ])
596
+ julia> constraint!(ocp, :variable, [ 3, 0, 1 ])
572
597
```
573
598
"""
574
599
function constraint! (ocp:: OptimalControlModel , type:: Symbol , val:: ctVector , label:: Symbol = __constraint_label ())
@@ -618,10 +643,10 @@ Add an `:initial`, `:final`, `:control`, `:state` or `:variable` box constraint
618
643
# Examples
619
644
620
645
```jldoctest
621
- julia> constraint!(ocp, :initial, [ 0, 0, 0 ], [ 1, 2, 1 ])
622
- julia> constraint!(ocp, :final, [ 0, 0, 0 ], [ 1, 2, 1 ])
646
+ julia> constraint!(ocp, :initial, [ 0, 0, 0 ], [ 1, 2, 1 ])
647
+ julia> constraint!(ocp, :final, [ 0, 0, 0 ], [ 1, 2, 1 ])
623
648
julia> constraint!(ocp, :control, [ 0, 0 ], [ 2, 3 ])
624
- julia> constraint!(ocp, :state, [ 0, 0, 0 ], [ 1, 2, 1 ])
649
+ julia> constraint!(ocp, :state, [ 0, 0, 0 ], [ 1, 2, 1 ])
625
650
julia> constraint!(ocp, :variable, 0, 1) # the variable here is of dimension 1
626
651
```
627
652
"""
@@ -687,22 +712,22 @@ julia> constraint!(ocp, :boundary, (x0, xf, v) -> x0[3]+xf[2]*v[1], 0, 1)
687
712
688
713
# time independent and variable independent ocp
689
714
julia> constraint!(ocp, :control, u -> 2u, 0, 1)
690
- julia> constraint!(ocp, :state, x -> x-1, [ 0, 0, 0 ], [ 1, 2, 1 ])
715
+ julia> constraint!(ocp, :state, x -> x-1, [ 0, 0, 0 ], [ 1, 2, 1 ])
691
716
julia> constraint!(ocp, :mixed, (x, u) -> x[1]-u, 0, 1)
692
717
693
718
# time dependent and variable independent ocp
694
719
julia> constraint!(ocp, :control, (t, u) -> 2u, 0, 1)
695
- julia> constraint!(ocp, :state, (t, x) -> x-t, [ 0, 0, 0 ], [ 1, 2, 1 ])
720
+ julia> constraint!(ocp, :state, (t, x) -> x-t, [ 0, 0, 0 ], [ 1, 2, 1 ])
696
721
julia> constraint!(ocp, :mixed, (t, x, u) -> x[1]-u, 0, 1)
697
722
698
723
# time independent and variable dependent ocp
699
724
julia> constraint!(ocp, :control, (u, v) -> 2u*v[1], 0, 1)
700
- julia> constraint!(ocp, :state, (x, v) -> x-v[1], [ 0, 0, 0 ], [ 1, 2, 1 ])
725
+ julia> constraint!(ocp, :state, (x, v) -> x-v[1], [ 0, 0, 0 ], [ 1, 2, 1 ])
701
726
julia> constraint!(ocp, :mixed, (x, u, v) -> x[1]-v[2]*u, 0, 1)
702
727
703
728
# time dependent and variable dependent ocp
704
729
julia> constraint!(ocp, :control, (t, u, v) -> 2u+v[2], 0, 1)
705
- julia> constraint!(ocp, :state, (t, x, v) -> x-t*v[1], [ 0, 0, 0 ], [ 1, 2, 1 ])
730
+ julia> constraint!(ocp, :state, (t, x, v) -> x-t*v[1], [ 0, 0, 0 ], [ 1, 2, 1 ])
706
731
julia> constraint!(ocp, :mixed, (t, x, u, v) -> x[1]*v[2]-u, 0, 1)
707
732
```
708
733
"""
@@ -761,22 +786,22 @@ julia> constraint!(ocp, :boundary, (x0, xf, v) -> x0[3]+xf[2]*v[1], 0)
761
786
762
787
# time independent and variable independent ocp
763
788
julia> constraint!(ocp, :control, u -> 2u, 1)
764
- julia> constraint!(ocp, :state, x -> x-1, [ 0, 0, 0 ])
789
+ julia> constraint!(ocp, :state, x -> x-1, [ 0, 0, 0 ])
765
790
julia> constraint!(ocp, :mixed, (x, u) -> x[1]-u, 0)
766
791
767
792
# time dependent and variable independent ocp
768
793
julia> constraint!(ocp, :control, (t, u) -> 2u, 1)
769
- julia> constraint!(ocp, :state, (t, x) -> x-t, [ 0, 0, 0 ])
794
+ julia> constraint!(ocp, :state, (t, x) -> x-t, [ 0, 0, 0 ])
770
795
julia> constraint!(ocp, :mixed, (t, x, u) -> x[1]-u, 0)
771
796
772
797
# time independent and variable dependent ocp
773
798
julia> constraint!(ocp, :control, (u, v) -> 2u*v[1], 1)
774
- julia> constraint!(ocp, :state, (x, v) -> x-v[2], [ 0, 0, 0 ])
799
+ julia> constraint!(ocp, :state, (x, v) -> x-v[2], [ 0, 0, 0 ])
775
800
julia> constraint!(ocp, :mixed, (x, u) -> x[1]-u+v[1], 0)
776
801
777
802
# time dependent and variable dependent ocp
778
803
julia> constraint!(ocp, :control, (t, u, v) -> 2u-t*v[2], 1)
779
- julia> constraint!(ocp, :state, (t, x, v) -> x-t+v[1], [ 0, 0, 0 ])
804
+ julia> constraint!(ocp, :state, (t, x, v) -> x-t+v[1], [ 0, 0, 0 ])
780
805
julia> constraint!(ocp, :mixed, (t, x, u, v) -> x[1]-u*v[1], 0)
781
806
```
782
807
"""
@@ -800,12 +825,12 @@ Add an `:initial`, `:final`, `:control`, `:state` or `:variable` box constraint
800
825
# Examples
801
826
802
827
```jldoctest
803
- julia> constraint!(ocp, :initial, rg=2:3, lb=[ 0, 0 ], ub=[ 1, 2 ])
828
+ julia> constraint!(ocp, :initial, rg=2:3, lb=[ 0, 0 ], ub=[ 1, 2 ])
804
829
julia> constraint!(ocp, :final, val=Index(1), lb=0, ub=2)
805
830
julia> constraint!(ocp, :control, val=Index(1), lb=0, ub=2)
806
- julia> constraint!(ocp, :state, rg=2:3, lb=[ 0, 0 ], ub=[ 1, 2 ])
807
- julia> constraint!(ocp, :initial, rg=1:2:5, lb=[ 0, 0, 0 ], ub=[ 1, 2, 1 ])
808
- julia> constraint!(ocp, :variable, rg=1:2, lb=[ 0, 0 ], ub=[ 1, 2 ])
831
+ julia> constraint!(ocp, :state, rg=2:3, lb=[ 0, 0 ], ub=[ 1, 2 ])
832
+ julia> constraint!(ocp, :initial, rg=1:2:5, lb=[ 0, 0, 0 ], ub=[ 1, 2, 1 ])
833
+ julia> constraint!(ocp, :variable, rg=1:2, lb=[ 0, 0 ], ub=[ 1, 2 ])
809
834
```
810
835
"""
811
836
function constraint! (ocp:: OptimalControlModel{<: TimeDependence, <: VariableDependence} , type:: Symbol ;
0 commit comments