Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion c/examples/bobyqa/bobyqa_example.c
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ int main(int argc, char * argv[])

// Call the solver
prima_result_t result;
const int rc = prima_minimize(PRIMA_BOBYQA, problem, options, &result);
const int rc = prima_minimize(PRIMA_BOBYQA, &problem, &options, &result);

// Print the result
printf("x* = {%g, %g}, rc = %d, msg = '%s', evals = %d\n", result.x[0], result.x[1], rc, result.message, result.nf);
Expand Down
2 changes: 1 addition & 1 deletion c/examples/cobyla/cobyla_example.c
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ int main(int argc, char * argv[])

// Call the solver
prima_result_t result;
const int rc = prima_minimize(PRIMA_COBYLA, problem, options, &result);
const int rc = prima_minimize(PRIMA_COBYLA, &problem, &options, &result);

// Print the result
printf("x* = {%g, %g}, f* = %g, cstrv = %g, nlconstr = {%g}, rc = %d, msg = '%s', evals = %d\n", result.x[0], result.x[1], result.f, result.cstrv, result.nlconstr[0], rc, result.message, result.nf);
Expand Down
2 changes: 1 addition & 1 deletion c/examples/lincoa/lincoa_example.c
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ int main(int argc, char * argv[])

// Call the solver
prima_result_t result;
const int rc = prima_minimize(PRIMA_LINCOA, problem, options, &result);
const int rc = prima_minimize(PRIMA_LINCOA, &problem, &options, &result);

// Print the result
printf("x* = {%g, %g}, f* = %g, cstrv = %g, rc = %d, msg = '%s', evals = %d\n", result.x[0], result.x[1], result.f, result.cstrv, rc, result.message, result.nf);
Expand Down
2 changes: 1 addition & 1 deletion c/examples/newuoa/newuoa_example.c
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ int main(int argc, char * argv[])

// Call the solver
prima_result_t result;
const int rc = prima_minimize(PRIMA_NEWUOA, problem, options, &result);
const int rc = prima_minimize(PRIMA_NEWUOA, &problem, &options, &result);

// Print the result
printf("x* = {%g, %g}, rc = %d, msg = '%s', evals = %d\n", result.x[0], result.x[1], rc, result.message, result.nf);
Expand Down
2 changes: 1 addition & 1 deletion c/examples/uobyqa/uobyqa_example.c
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ int main(int argc, char * argv[])

// Run the solver
prima_result_t result;
const int rc = prima_minimize(PRIMA_UOBYQA, problem, options, &result);
const int rc = prima_minimize(PRIMA_UOBYQA, &problem, &options, &result);

// Print the result
printf("x* = {%g, %g}, rc = %d, msg = '%s', evals = %d\n", result.x[0], result.x[1], rc, result.message, result.nf);
Expand Down
120 changes: 118 additions & 2 deletions c/include/prima/prima.h
Original file line number Diff line number Diff line change
Expand Up @@ -185,7 +185,6 @@ typedef struct {
PRIMAC_API
int prima_init_problem(prima_problem_t *const problem, const int n);


// Structure to hold the options
// In the following, "Default" refers to the value set by `prima_init_options`.
typedef struct {
Expand Down Expand Up @@ -291,8 +290,125 @@ int prima_free_result(prima_result_t *const result);
* return : see prima_rc_t enum for return codes
*/
PRIMAC_API
int prima_minimize(const prima_algorithm_t algorithm, const prima_problem_t problem, const prima_options_t options, prima_result_t *const result);
int prima_minimize(const prima_algorithm_t algorithm, const prima_problem_t *problem, const prima_options_t *options, prima_result_t *const result);


typedef struct {
prima_algorithm_t algorithm;
prima_problem_t problem;
prima_options_t options;
prima_result_t result;
} prima_context_t;

PRIMAC_API
prima_context_t* prima_context_create(const int n);

PRIMAC_API
void prima_context_destroy(prima_context_t* context);

PRIMAC_API
int prima_context_solve(prima_algorithm_t algorithm, prima_context_t* context);

/* Accessors. */

PRIMAC_API
int prima_context_set_callfun(prima_context_t* context, prima_obj_t calfun, void* data);

PRIMAC_API
int prima_context_set_calcfc(prima_context_t* context, prima_objcon_t calcfc, void* data, int m_nlcon);

PRIMAC_API
int prima_context_set_x0(prima_context_t* context, double *x0);

PRIMAC_API
int prima_context_set_bounds(prima_context_t* context, double *xl, double *xu);

PRIMAC_API
int prima_context_set_ineq(prima_context_t* context, int m_ineq, double Aineq[], double *bineq);

PRIMAC_API
int prima_context_set_eq(prima_context_t* context, int m_eq, double Aeq[], double *beq);

PRIMAC_API
int prima_context_set_f0(prima_context_t* context, double f0);

PRIMAC_API
int prima_context_set_nlconstr0(prima_context_t* context, double* nlconstr0);

PRIMAC_API
int prima_context_get_n(const prima_context_t* context);

PRIMAC_API
int prima_context_get_m_ineq(const prima_context_t* context);

PRIMAC_API
int prima_context_get_m_eq(const prima_context_t* context);

PRIMAC_API
int prima_context_get_m_nlcon(const prima_context_t* context);

PRIMAC_API
int prima_context_set_rho(prima_context_t* context, double rhobeg, double rhoend);

PRIMAC_API
double prima_context_get_rhobeg(const prima_context_t* context);

PRIMAC_API
double prima_context_get_rhoend(const prima_context_t* context);

PRIMAC_API
int prima_context_set_maxfun(prima_context_t* context, int maxfun);

PRIMAC_API
int prima_context_get_maxfun(const prima_context_t* context);

PRIMAC_API
int prima_context_set_iprint(prima_context_t* context, int iprint);

PRIMAC_API
int prima_context_get_iprint(const prima_context_t* context);

PRIMAC_API
int prima_context_set_npt(prima_context_t* context, int npt);

PRIMAC_API
int prima_context_get_npt(const prima_context_t* context);

PRIMAC_API
int prima_context_set_ftarget(prima_context_t* context, double ftarget);

PRIMAC_API
double prima_context_get_ftarget(const prima_context_t* context);

PRIMAC_API
int prima_context_set_ctol(prima_context_t* context, double ctol);

PRIMAC_API
double prima_context_get_ctol(const prima_context_t* context);

PRIMAC_API
int prima_context_set_callback(prima_context_t* context, prima_callback_t callback);

PRIMAC_API
double* prima_context_get_x(const prima_context_t* context);

PRIMAC_API
double prima_context_get_f(const prima_context_t* context);

PRIMAC_API
double prima_context_get_cstrv(const prima_context_t* context);

PRIMAC_API
double* prima_context_get_nlconstr(const prima_context_t* context);

PRIMAC_API
int prima_context_get_nf(const prima_context_t* context);

PRIMAC_API
int prima_context_get_status(const prima_context_t* context);

PRIMAC_API
const char* prima_context_get_message(const prima_context_t* context);

#ifdef __cplusplus
}
Expand Down
Loading