📄 glpmpl.h
字号:
};#define check_elem_set _glp_mpl_check_elem_setvoid check_elem_set( MPL *mpl, SET *set, /* not changed */ TUPLE *tuple, /* not changed */ ELEMSET *refer /* not changed */);/* check elemental set assigned to set member */#define take_member_set _glp_mpl_take_member_setELEMSET *take_member_set /* returns reference, not value */( MPL *mpl, SET *set, /* not changed */ TUPLE *tuple /* not changed */);/* obtain elemental set assigned to set member */#define eval_member_set _glp_mpl_eval_member_setELEMSET *eval_member_set /* returns reference, not value */( MPL *mpl, SET *set, /* not changed */ TUPLE *tuple /* not changed */);/* evaluate elemental set assigned to set member */#define eval_whole_set _glp_mpl_eval_whole_setvoid eval_whole_set(MPL *mpl, SET *set);/* evaluate model set over entire domain */#define clean_set _glp_mpl_clean_setvoid clean_set(MPL *mpl, SET *set);/* clean model set *//**********************************************************************//* * * MODEL PARAMETERS * * *//**********************************************************************/struct PARAMETER{ /* model parameter */ char *name; /* symbolic name; cannot be NULL */ char *alias; /* alias; NULL means alias is not specified */ int dim; /* aka arity */ /* dimension (number of subscripts); dim = 0 means 0-dimensional (unsubscripted) parameter */ DOMAIN *domain; /* subscript domain; NULL for 0-dimensional parameter */ int type; /* parameter type: A_NUMERIC - numeric A_INTEGER - integer A_BINARY - binary A_SYMBOLIC - symbolic */ CONDITION *cond; /* list of conditions, which restrict each parameter member to satisfy to every condition from this list; this list is used only for numeric parameters and can be empty */ WITHIN *in; /* list of supersets, which restrict each parameter member to be in every superset from this list; this list is used only for symbolic parameters and can be empty */ CODE *assign; /* pseudo-code for computing assigned value; can be NULL */ CODE *option; /* pseudo-code for computing default value; can be NULL */ int data; /* data status flag: 0 - no data are provided in the data section 1 - data are provided, but not checked yet 2 - data are provided and have been checked */ SYMBOL *defval; /* default value provided in the data section; can be NULL */ ARRAY *array; /* array of members, which are assigned numbers or symbols */};struct CONDITION{ /* restricting condition list entry */ int rho; /* flag that specifies the form of the condition: O_LT - less than O_LE - less than or equal to O_EQ - equal to O_GE - greater than or equal to O_GT - greater than O_NE - not equal to */ CODE *code; /* pseudo-code for computing the reference value */ CONDITION *next; /* the next entry for the same parameter */};#define check_value_num _glp_mpl_check_value_numvoid check_value_num( MPL *mpl, PARAMETER *par, /* not changed */ TUPLE *tuple, /* not changed */ double value);/* check numeric value assigned to parameter member */#define take_member_num _glp_mpl_take_member_numdouble take_member_num( MPL *mpl, PARAMETER *par, /* not changed */ TUPLE *tuple /* not changed */);/* obtain numeric value assigned to parameter member */#define eval_member_num _glp_mpl_eval_member_numdouble eval_member_num( MPL *mpl, PARAMETER *par, /* not changed */ TUPLE *tuple /* not changed */);/* evaluate numeric value assigned to parameter member */#define check_value_sym _glp_mpl_check_value_symvoid check_value_sym( MPL *mpl, PARAMETER *par, /* not changed */ TUPLE *tuple, /* not changed */ SYMBOL *value /* not changed */);/* check symbolic value assigned to parameter member */#define take_member_sym _glp_mpl_take_member_symSYMBOL *take_member_sym /* returns value, not reference */( MPL *mpl, PARAMETER *par, /* not changed */ TUPLE *tuple /* not changed */);/* obtain symbolic value assigned to parameter member */#define eval_member_sym _glp_mpl_eval_member_symSYMBOL *eval_member_sym /* returns value, not reference */( MPL *mpl, PARAMETER *par, /* not changed */ TUPLE *tuple /* not changed */);/* evaluate symbolic value assigned to parameter member */#define eval_whole_par _glp_mpl_eval_whole_parvoid eval_whole_par(MPL *mpl, PARAMETER *par);/* evaluate model parameter over entire domain */#define clean_parameter _glp_mpl_clean_parametervoid clean_parameter(MPL *mpl, PARAMETER *par);/* clean model parameter *//**********************************************************************//* * * MODEL VARIABLES * * *//**********************************************************************/struct VARIABLE{ /* model variable */ char *name; /* symbolic name; cannot be NULL */ char *alias; /* alias; NULL means alias is not specified */ int dim; /* aka arity */ /* dimension (number of subscripts); dim = 0 means 0-dimensional (unsubscripted) variable */ DOMAIN *domain; /* subscript domain; NULL for 0-dimensional variable */ int type; /* variable type: A_NUMERIC - continuous A_INTEGER - integer A_BINARY - binary */ CODE *lbnd; /* pseudo-code for computing lower bound; NULL means lower bound is not specified */ CODE *ubnd; /* pseudo-code for computing upper bound; NULL means upper bound is not specified */ /* if both the pointers lbnd and ubnd refer to the same code, the variable is fixed at the corresponding value */ ARRAY *array; /* array of members, which are assigned elemental variables */};#define take_member_var _glp_mpl_take_member_varELEMVAR *take_member_var /* returns reference */( MPL *mpl, VARIABLE *var, /* not changed */ TUPLE *tuple /* not changed */);/* obtain reference to elemental variable */#define eval_member_var _glp_mpl_eval_member_varELEMVAR *eval_member_var /* returns reference */( MPL *mpl, VARIABLE *var, /* not changed */ TUPLE *tuple /* not changed */);/* evaluate reference to elemental variable */#define eval_whole_var _glp_mpl_eval_whole_varvoid eval_whole_var(MPL *mpl, VARIABLE *var);/* evaluate model variable over entire domain */#define clean_variable _glp_mpl_clean_variablevoid clean_variable(MPL *mpl, VARIABLE *var);/* clean model variable *//**********************************************************************//* * * MODEL CONSTRAINTS AND OBJECTIVES * * *//**********************************************************************/struct CONSTRAINT{ /* model constraint or objective */ char *name; /* symbolic name; cannot be NULL */ char *alias; /* alias; NULL means alias is not specified */ int dim; /* aka arity */ /* dimension (number of subscripts); dim = 0 means 0-dimensional (unsubscripted) constraint */ DOMAIN *domain; /* subscript domain; NULL for 0-dimensional constraint */ int type; /* constraint type: A_CONSTRAINT - constraint A_MINIMIZE - objective (minimization) A_MAXIMIZE - objective (maximization) */ CODE *code; /* pseudo-code for computing main linear form; cannot be NULL */ CODE *lbnd; /* pseudo-code for computing lower bound; NULL means lower bound is not specified */ CODE *ubnd; /* pseudo-code for computing upper bound; NULL means upper bound is not specified */ /* if both the pointers lbnd and ubnd refer to the same code, the constraint has the form of equation */ ARRAY *array; /* array of members, which are assigned elemental constraints */};#define take_member_con _glp_mpl_take_member_conELEMCON *take_member_con /* returns reference */( MPL *mpl, CONSTRAINT *con, /* not changed */ TUPLE *tuple /* not changed */);/* obtain reference to elemental constraint */#define eval_member_con _glp_mpl_eval_member_conELEMCON *eval_member_con /* returns reference */( MPL *mpl, CONSTRAINT *con, /* not changed */ TUPLE *tuple /* not changed */);/* evaluate reference to elemental constraint */#define eval_whole_con _glp_mpl_eval_whole_convoid eval_whole_con(MPL *mpl, CONSTRAINT *con);/* evaluate model constraint over entire domain */#define clean_constraint _glp_mpl_clean_constraintvoid clean_constraint(MPL *mpl, CONSTRAINT *con);/* clean model constraint *//**********************************************************************//* * * DATA TABLES * * *//**********************************************************************/struct TABLE{ /* data table */ char *name; /* symbolic name; cannot be NULL */ char *alias; /* alias; NULL means alias is not specified */ int type; /* table type: A_INPUT - input table A_OUTPUT - output table */ TABARG *arg; /* argument list; cannot be empty */ union { struct { SET *set; /* input set; NULL means the set is not specified */ TABFLD *fld; /* field list; cannot be empty */ TABIN *list; /* input list; can be empty */ } in; struct { DOMAIN *domain; /* subscript domain; cannot be NULL */ TABOUT *list; /* output list; cannot be empty */ } out; } u;};struct TABARG{ /* table argument list entry */ CODE *code; /* pseudo-code for computing the argument */ TABARG *next; /* next entry for the same table */};struct TABFLD{ /* table field list entry */ char *name; /* field name; cannot be NULL */ TABFLD *next; /* next entry for the same table */};struct TABIN{ /* table input list entry */ PARAMETER *par; /* parameter to be read; cannot be NULL */ char *name; /* column name; cannot be NULL */ TABIN *next; /* next entry for the same table */};struct TABOUT{ /* table output list entry */ CODE *code; /* pseudo-code for computing the value to be written */ char *name; /* column name; cannot be NULL */ TABOUT *next; /* next entry for the same table */};struct TABDCA{ /* table driver communication area */ int id; /* driver identifier (set by mpl_tab_drv_open) */ void *link; /* driver link pointer (set by mpl_tab_drv_open) */ int na; /* number of arguments */ char **arg; /* char *arg[1+ns]; */ /* arg[k], 1 <= k <= ns, is pointer to k-th argument */ int nf; /* number of fields */ char **name; /* char *name[1+nc]; */ /* name[k], 1 <= k <= nc, is name of k-th field */ int *type; /* int type[1+nc]; */ /* type[k], 1 <= k <= nc, is type of k-th field: '?' - value not assigned 'N' - number 'S' - character string */ double *num; /* double num[1+nc]; */ /* num[k], 1 <= k <= nc, is numeric value of k-th field */ char **str; /* str[k], 1 <= k <= nc, is string value of k-th field */};#define mpl_tab_num_args _glp_mpl_tab_num_argsint mpl_tab_num_args(TABDCA *dca);#define mpl_tab_get_arg _glp_mpl_tab_get_argconst char *mpl_tab_get_arg(TABDCA *dca, int k);#define mpl_tab_num_flds _glp_mpl_tab_num_fldsint mpl_tab_num_flds(TABDCA *dca);#define mpl_tab_get_name _glp_mpl_tab_get_nameconst char *mpl_tab_get_name(TABDCA *dca, int k);#define mpl_tab_get_type _glp_mpl_tab_get_typeint mpl_tab_get_type(TABDCA *dca, int k);#define mpl_tab_get_num _glp_mpl_tab_get_numdouble mpl_tab_get_num(TABDCA *dca, int k);#define mpl_tab_get_str _glp_mpl_tab_get_strconst char *mpl_tab_get_str(TABDCA *dca, int k);#define mpl_tab_set_num _glp_mpl_tab_set_numvoid mpl_tab_set_num(TABDCA *dca, int k, double num);#define mpl_tab_set_str _glp_mpl_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -