summaryrefslogtreecommitdiffstats
path: root/templates/simulate.m
diff options
context:
space:
mode:
authorNao Pross <np@0hm.ch>2023-05-24 16:22:02 +0200
committerNao Pross <np@0hm.ch>2023-05-24 16:32:02 +0200
commitb6f865025eed2db716f2f853435855edb0db9e82 (patch)
tree0211e0d07543dcea8e8e6048ae58a3458f5ab2d9 /templates/simulate.m
parentTake deliverables for system modelling from npross (diff)
downloadmpc_pe-b6f865025eed2db716f2f853435855edb0db9e82.tar.gz
mpc_pe-b6f865025eed2db716f2f853435855edb0db9e82.zip
Take deliverables for uncontrained optimal control from npross
According to table 5 they are: - LQR - LQR/eval (contained in LQR.m) - simulate - traj_contraints - lqr_tuning - lqr_tuning_script (.m and its .mat output file)
Diffstat (limited to 'templates/simulate.m')
-rw-r--r--templates/simulate.m15
1 files changed, 12 insertions, 3 deletions
diff --git a/templates/simulate.m b/templates/simulate.m
index 3138cd1..6be40c3 100644
--- a/templates/simulate.m
+++ b/templates/simulate.m
@@ -7,8 +7,17 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [Xt,Ut,ctrl_info] = simulate(x0, ctrl, params)
+ % YOUR CODE HERE
+ % Hint: you can access the control command with ctrl.eval(x(:,i))
-% YOUR CODE HERE
-% Hint: you can access the control command with ctrl.eval(x(:,i))
+ Xt = zeros(params.model.nx, params.model.HorizonLength+1);
+ Ut = zeros(params.model.nu, params.model.HorizonLength);
+ ctrl_info = repmat(struct('ctrl_feas',true), 1, params.model.HorizonLength);
-end \ No newline at end of file
+ Xt(:,1) = x0;
+ for k=1:params.model.HorizonLength
+ [u, ~] = ctrl.eval(Xt(:,k));
+ Ut(:,k) = u;
+ Xt(:,k+1) = params.model.A * Xt(:,k) + params.model.B * Ut(:,k);
+ end
+end