help-octave
[
Top
][
All Lists
]
Advanced
[
Date Prev
][
Date Next
][
Thread Prev
][
Thread Next
][
Date Index
][
Thread Index
]
min L1 norm of P*u -q
From
:
Ether Jones
Subject
:
min L1 norm of P*u -q
Date
:
Sat, 3 May 2014 17:33:05 -0400
Hello.
I have an overdetermined linear system P*u = q + eps,
P is m by n, m > n.
u is n by 1.
q and eps are m by 1.
P and q are known; u and eps are unknown.
I want to find u which minimizes the L1 norm of eps;
in other words I want to minimize ||P*u-q||1
I do *not* want u to be constrained to be >= 0.
It's not clear to me how to solve this in Octave.
The objective is not smooth so that appears to rule out Octave's sqp().
The objective is not linear so that *appears* to rule out Octave's glpk().
However...
According to this web page:
http://cvxopt.org/examples/mlbook/l1.html
... minimizing ||P*u-q||1 is equivalent to the LP problem:
minimize 1'v
subject to
[P, -I; -P, I]*[u; v] <= [q,-q]
with m+n variables and 2m constraints.
And according to the Octave manual,
glpk() can solve problems of the form:
[ min | max ] C'*x
subject to
A*x [ "=" | "<=" | ">=" ] b
x >= LB
x <= UB
So if I create:
I = m by m identity matrix
A = [P, -I; -P, I]
x = [u; v]
b = [q; -q]
c = a vector of 1's of size m
... then I should be able to pass c, A, b, LB=0, UB=0 to glpk():
glpk (c, A, b, lb, ub, ctype, vartype, sense, param)
Does this sound correct so far?
My questions are:
1) Is there a better (more straightforward) way to do this?
2) Do I have to initialize v to something, and if so, what?
3) What should the glpk() arguments ctype, vartype, sense, and param be set to?
Thank you.
reply via email to
[Prev in Thread]
Current Thread
[
Next in Thread
]
min L1 norm of P*u -q
,
Ether Jones
<=
Re: min L1 norm of P*u -q
,
Ether Jones
,
2014/05/03
Re: min L1 norm of P*u -q
,
Ether Jones
,
2014/05/03
Prev by Date:
Why running out of memory here?
Next by Date:
Re: min L1 norm of P*u -q
Previous by thread:
Why running out of memory here?
Next by thread:
Re: min L1 norm of P*u -q
Index(es):
Date
Thread