Skip to content

Commit 87f52f0

Browse files
feat: enhance DirectTrajOptProblem to handle global component data in NM (#47)
* feat: enhance DirectTrajOptProblem to handle global component data in NamedTrajectory * patch ver for global handling --------- Co-authored-by: Aaron Trowbridge <aaron.j.trowbridge@gmail.com>
1 parent e50d7b3 commit 87f52f0

File tree

2 files changed

+31
-10
lines changed

2 files changed

+31
-10
lines changed

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name = "DirectTrajOpt"
22
uuid = "c823fa1f-8872-4af5-b810-2b9b72bbbf56"
3-
version = "0.8.0"
3+
version = "0.8.1"
44
authors = ["Aaron Trowbridge <aaron.j.trowbridge@gmail.com> and contributors"]
55

66
[deps]

src/problems.jl

Lines changed: 30 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -79,15 +79,36 @@ function DirectTrajOptProblem(
7979
timestep_dim = traj.dims[timestep_var]
8080
new_bounds = merge(traj.bounds, (; timestep_var => (zeros(timestep_dim), fill(Inf, timestep_dim))))
8181

82-
traj = NamedTrajectory(
83-
NamedTuple(name => traj[name] for name in traj.names);
84-
timestep=traj.timestep,
85-
controls=traj.control_names,
86-
bounds=new_bounds,
87-
initial=traj.initial,
88-
final=traj.final,
89-
goal=traj.goal
90-
)
82+
# Extract component data
83+
comps_data = NamedTuple(name => traj[name] for name in traj.names)
84+
85+
# Extract global component data if present
86+
if traj.global_dim > 0
87+
gcomps_data = NamedTuple(
88+
name => Vector(traj.global_data[traj.global_components[name]])
89+
for name in keys(traj.global_components)
90+
)
91+
traj = NamedTrajectory(
92+
comps_data,
93+
gcomps_data;
94+
timestep=traj.timestep,
95+
controls=traj.control_names,
96+
bounds=new_bounds,
97+
initial=traj.initial,
98+
final=traj.final,
99+
goal=traj.goal
100+
)
101+
else
102+
traj = NamedTrajectory(
103+
comps_data;
104+
timestep=traj.timestep,
105+
controls=traj.control_names,
106+
bounds=new_bounds,
107+
initial=traj.initial,
108+
final=traj.final,
109+
goal=traj.goal
110+
)
111+
end
91112
end
92113

93114
traj_constraints = get_trajectory_constraints(traj)

0 commit comments

Comments
 (0)