提交 80f299dd 编写于 作者: S stevenj

bug fix in preconditioned CCSA

Ignore-this: fe3491084f60e094c208c260cf908084

darcs-hash:20111116192013-c8de0-b88c5b10cc4ab35d115d18522e1314503bb77e76.gz
上级 c4b864cc
...@@ -173,7 +173,7 @@ static double gfunc(unsigned n, double f, const double *dfdx, ...@@ -173,7 +173,7 @@ static double gfunc(unsigned n, double f, const double *dfdx,
val += 0.5 * dx[j] * Hdx[j]; val += 0.5 * dx[j] * Hdx[j];
if (grad) if (grad)
for (j = 0; j < n; ++j) for (j = 0; j < n; ++j)
grad[j] = Hdx[j]; grad[j] += Hdx[j];
} }
return val; return val;
...@@ -289,13 +289,13 @@ nlopt_result ccsa_quadratic_minimize( ...@@ -289,13 +289,13 @@ nlopt_result ccsa_quadratic_minimize(
no_precond = no_precond && dd.prec[i] == NULL; no_precond = no_precond && dd.prec[i] == NULL;
if (!no_precond) { if (!no_precond) {
dd.scratch = (double*) malloc(sizeof(double) * (2*n)); dd.scratch = (double*) malloc(sizeof(double) * (4*n));
if (!dd.scratch) { if (!dd.scratch) {
free(sigma); free(sigma);
return NLOPT_OUT_OF_MEMORY; return NLOPT_OUT_OF_MEMORY;
} }
pre_lb = dual_lb; pre_lb = dd.scratch + 2*n;
pre_ub = dual_ub; pre_ub = pre_lb + n;
pre_opt = nlopt_create(NLOPT_LD_CCSAQ, n); pre_opt = nlopt_create(NLOPT_LD_CCSAQ, n);
if (!pre_opt) { ret = NLOPT_FAILURE; goto done; } if (!pre_opt) { ret = NLOPT_FAILURE; goto done; }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册