What is it?
The coptgsl project is an amateur attempt to provide a C library
of convex optimizers, which can be used for general purpose
programming. Most convex optimization packages available are either
built using LINPACK or MATLAB or other specialized packages and
typically focus on one specific form of convex optimizers, for
example QCQP. I chose to write a C library using the GNU Scientific
Library as the baseline package for standard BLAS and Linear Algebra
routines. The GSL is widely portable and directly usable in
real-time by software applications.
The software provided here is not optimized for performance; the
purpose of writing it is to make very powerful techniques
easily understandable and accessible to engineering professionals.
As of now, very little structure of the input matrices are used; as
far as possible we have used very generic techniques (for example,
linear programs are always solved using SVD).
Algorithms
As of now, we are focussing on the following four problems
a) Linear programming using the Affine scaling variant of
Narendra Karmarkar's Interior Point Algorithm [addref]
b) The gradient projection algorithm
c) Second Order Cone Programming problem, using a primal dual
potential reducing algorithm
d) Semi-definite programming, using a primal dual potential
reducing algorithm.
|