Removed the unused code.
git-svn-id: file:///home/svnrepos/software/liblbfgs/trunk@47 ecf4c44f-38d1-4fa4-9757-a0b4dd0349fc
This commit is contained in:
parent
25e895b4e5
commit
83a802b87c
139
lib/lbfgs.c
139
lib/lbfgs.c
@ -196,23 +196,6 @@ static lbfgsfloatval_t owlqn_x1norm(
|
||||
const int n
|
||||
);
|
||||
|
||||
static lbfgsfloatval_t owlqn_g2norm(
|
||||
const lbfgsfloatval_t* x,
|
||||
const lbfgsfloatval_t* g,
|
||||
const lbfgsfloatval_t c,
|
||||
const int start,
|
||||
const int n
|
||||
);
|
||||
|
||||
static void owlqn_direction(
|
||||
lbfgsfloatval_t* d,
|
||||
const lbfgsfloatval_t* x,
|
||||
const lbfgsfloatval_t* g,
|
||||
const lbfgsfloatval_t c,
|
||||
const int start,
|
||||
const int n
|
||||
);
|
||||
|
||||
static void owlqn_pseudo_gradient(
|
||||
lbfgsfloatval_t* pg,
|
||||
const lbfgsfloatval_t* x,
|
||||
@ -223,15 +206,6 @@ static void owlqn_pseudo_gradient(
|
||||
const int end
|
||||
);
|
||||
|
||||
static lbfgsfloatval_t owlqn_direction_line(
|
||||
const lbfgsfloatval_t* x,
|
||||
const lbfgsfloatval_t* g,
|
||||
const lbfgsfloatval_t* s,
|
||||
const lbfgsfloatval_t c,
|
||||
const int start,
|
||||
const int n
|
||||
);
|
||||
|
||||
static void owlqn_project(
|
||||
lbfgsfloatval_t* d,
|
||||
const lbfgsfloatval_t* sign,
|
||||
@ -1306,74 +1280,6 @@ static lbfgsfloatval_t owlqn_x1norm(
|
||||
return norm;
|
||||
}
|
||||
|
||||
static lbfgsfloatval_t owlqn_g2norm(
|
||||
const lbfgsfloatval_t* x,
|
||||
const lbfgsfloatval_t* g,
|
||||
const lbfgsfloatval_t c,
|
||||
const int start,
|
||||
const int n
|
||||
)
|
||||
{
|
||||
int i;
|
||||
lbfgsfloatval_t d = 0.;
|
||||
lbfgsfloatval_t norm = 0.;
|
||||
|
||||
for (i = 0;i < start;++i) {
|
||||
norm += g[i] * g[i];
|
||||
}
|
||||
|
||||
for (i = start;i < n;++i) {
|
||||
d = g[i];
|
||||
if (x[i] < 0.) {
|
||||
d -= c;
|
||||
} else if (0. < x[i]) {
|
||||
d += c;
|
||||
}
|
||||
norm += d * d;
|
||||
}
|
||||
|
||||
return sqrt(norm);
|
||||
}
|
||||
|
||||
static void owlqn_direction(
|
||||
lbfgsfloatval_t* d,
|
||||
const lbfgsfloatval_t* x,
|
||||
const lbfgsfloatval_t* g,
|
||||
const lbfgsfloatval_t c,
|
||||
const int start,
|
||||
const int n
|
||||
)
|
||||
{
|
||||
int i;
|
||||
|
||||
/* Compute the negative of gradients. */
|
||||
for (i = 0;i < start;++i) {
|
||||
d[i] = -g[i];
|
||||
}
|
||||
|
||||
/* Compute the negative of psuedo-gradients. */
|
||||
for (i = start;i < n;++i) {
|
||||
if (x[i] < 0.) {
|
||||
/* Differentiable. */
|
||||
d[i] = -g[i] + c;
|
||||
} else if (0. < x[i]) {
|
||||
/* Differentiable. */
|
||||
d[i] = -g[i] - c;
|
||||
} else {
|
||||
if (g[i] < -c) {
|
||||
/* Take the right partial derivative. */
|
||||
d[i] = -g[i] - c;
|
||||
} else if (c < g[i]) {
|
||||
/* Take the left partial derivative. */
|
||||
d[i] = -g[i] + c;
|
||||
} else {
|
||||
/* The gradient is in the range of [-C, C]. */
|
||||
d[i] = 0.;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void owlqn_pseudo_gradient(
|
||||
lbfgsfloatval_t* pg,
|
||||
const lbfgsfloatval_t* x,
|
||||
@ -1417,51 +1323,6 @@ static void owlqn_pseudo_gradient(
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static lbfgsfloatval_t owlqn_direction_line(
|
||||
const lbfgsfloatval_t* x,
|
||||
const lbfgsfloatval_t* g,
|
||||
const lbfgsfloatval_t* s,
|
||||
const lbfgsfloatval_t c,
|
||||
const int start,
|
||||
const int n
|
||||
)
|
||||
{
|
||||
int i;
|
||||
lbfgsfloatval_t d = 0.;
|
||||
|
||||
/* Compute the negative of gradients. */
|
||||
for (i = 0;i < start;++i) {
|
||||
d += s[i] * g[i];
|
||||
}
|
||||
|
||||
/* Use psuedo-gradients for orthant-wise updates. */
|
||||
for (i = start;i < n;++i) {
|
||||
/* Notice that:
|
||||
(-s[i] < 0) <==> (g[i] < -param->orthantwise_c)
|
||||
(-s[i] > 0) <==> (param->orthantwise_c < g[i])
|
||||
as the result of the lbfgs() function for orthant-wise updates.
|
||||
*/
|
||||
if (s[i] != 0.) {
|
||||
if (x[i] < 0.) {
|
||||
/* Differentiable. */
|
||||
d += s[i] * (g[i] - c);
|
||||
} else if (0. < x[i]) {
|
||||
/* Differentiable. */
|
||||
d += s[i] * (g[i] + c);
|
||||
} else if (s[i] < 0.) {
|
||||
/* Take the left partial derivative. */
|
||||
d += s[i] * (g[i] - c);
|
||||
} else if (0. < s[i]) {
|
||||
/* Take the right partial derivative. */
|
||||
d += s[i] * (g[i] + c);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return d;
|
||||
}
|
||||
|
||||
static void owlqn_project(
|
||||
lbfgsfloatval_t* d,
|
||||
const lbfgsfloatval_t* sign,
|
||||
|
@ -64,8 +64,8 @@ int main(int argc, char *argv)
|
||||
|
||||
/* Initialize the parameters for the L-BFGS optimization. */
|
||||
lbfgs_parameter_init(¶m);
|
||||
param.orthantwise_c = 1;
|
||||
/* param.linesearch = LBFGS_LINESEARCH_BACKTRACKING_STRONG; */
|
||||
//param.orthantwise_c = 1;
|
||||
param.linesearch = LBFGS_LINESEARCH_BACKTRACKING_STRONG;
|
||||
|
||||
/*
|
||||
Start the L-BFGS optimization; this will invoke the callback functions
|
||||
|
Loading…
Reference in New Issue
Block a user