From 3a0f6dc04f5b98d6cc87b4bd0c20d7b388ce7b58 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Arnstr=C3=B6m?= Date: Sat, 28 Mar 2026 23:17:55 +0100 Subject: [PATCH 1/4] Handle scalar weights in set_objective --- src/lmpc/lmpc.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/lmpc/lmpc.py b/src/lmpc/lmpc.py index d672cef..af04a35 100644 --- a/src/lmpc/lmpc.py +++ b/src/lmpc/lmpc.py @@ -59,9 +59,9 @@ def set_output_bounds(self, ymin=np.zeros(0), ymax=np.zeros(0), ks =None, soft = ks=ks, soft=soft, binary=binary, prio=prio) def set_objective(self, uids=None, Q=None, R=None ,Rr=None, S=None, Qf=None, Qfx=None): - Q = np.zeros((0,0)) if Q is None else np.array(Q) - R = np.zeros((0,0)) if R is None else np.array(R) - Rr = np.zeros((0,0)) if Rr is None else np.array(Rr) + Q = np.zeros((0,0)) if Q is None else Q if np.isscalar(Q) else np.array(Q) + R = np.zeros((0,0)) if R is None else R if np.isscalar(R) else np.array(R) + Rr = np.zeros((0,0)) if Rr is None else Rr if np.isscalar(Rr) else np.array(Rr) S = np.zeros((0,0)) if S is None else np.array(S) Qf = np.zeros((0,0)) if Qf is None else np.array(Qf) Qfx = np.zeros((0,0)) if Qfx is None else np.array(Qfx) From ef7b3fa93f3b864002f2c02f98d7fb89537d69dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Arnstr=C3=B6m?= Date: Sun, 29 Mar 2026 11:53:13 +0200 Subject: [PATCH 2/4] Add observer functions to get/set/predict/correct state --- src/lmpc/lmpc.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/lmpc/lmpc.py b/src/lmpc/lmpc.py index af04a35..aee26cb 100644 --- a/src/lmpc/lmpc.py +++ b/src/lmpc/lmpc.py @@ -108,11 +108,18 @@ def settings(self,settings): def set_state_observer(self,F=None,G=None,Gd=None,C=None,Dd=None, f_offset=None,h_offset=None,Q=None,R=None,x0=None): - print(Q) - print(R) LinearMPC.set_state_observer_b(self.jl_mpc, F=F,G=G,Gd=Gd,C=C,Dd=Dd, f_offset=f_offset,h_offset=h_offset, Q=Q,R=R,x0=x0) + def get_state(self): + return LinearMPC.get_state(self.jl_mpc) + def set_state(self,x0) + return LinearMPC.set_state_b(self.jl_mpc,x0) + def correct_state(self,y) + return return LinearMPC.correct_state_b(self.jl_mpc,y) + def predict_state(self,u) + return LinearMPC.predict_state_b(self.jl_mpc,u) + def set_operating_point(self,xo=None,uo=None,relinearize=True): LinearMPC.set_operating_point_b(self.jl_mpc,xo=xo,uo=uo,relinearize=relinearize) From 15ef5085d243f0266b7202d24d3e469d2b97223a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Arnstr=C3=B6m?= Date: Sun, 29 Mar 2026 12:04:58 +0200 Subject: [PATCH 3/4] Add : in defs --- src/lmpc/lmpc.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/lmpc/lmpc.py b/src/lmpc/lmpc.py index aee26cb..2feca86 100644 --- a/src/lmpc/lmpc.py +++ b/src/lmpc/lmpc.py @@ -113,11 +113,11 @@ def set_state_observer(self,F=None,G=None,Gd=None,C=None,Dd=None, Q=Q,R=R,x0=x0) def get_state(self): return LinearMPC.get_state(self.jl_mpc) - def set_state(self,x0) + def set_state(self,x0): return LinearMPC.set_state_b(self.jl_mpc,x0) - def correct_state(self,y) + def correct_state(self,y): return return LinearMPC.correct_state_b(self.jl_mpc,y) - def predict_state(self,u) + def predict_state(self,u): return LinearMPC.predict_state_b(self.jl_mpc,u) From 6285b1c65247e878396eb30269055d4713549e32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Arnstr=C3=B6m?= Date: Sun, 29 Mar 2026 12:12:30 +0200 Subject: [PATCH 4/4] Remove double return --- src/lmpc/lmpc.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lmpc/lmpc.py b/src/lmpc/lmpc.py index 2feca86..76c44aa 100644 --- a/src/lmpc/lmpc.py +++ b/src/lmpc/lmpc.py @@ -116,7 +116,7 @@ def get_state(self): def set_state(self,x0): return LinearMPC.set_state_b(self.jl_mpc,x0) def correct_state(self,y): - return return LinearMPC.correct_state_b(self.jl_mpc,y) + return LinearMPC.correct_state_b(self.jl_mpc,y) def predict_state(self,u): return LinearMPC.predict_state_b(self.jl_mpc,u)