📄 asa.c
字号:
sprintf (asa_save_comm, "asa_save");
ptr_save = fopen (asa_save_comm, "r");
fread (number_parameters, sizeof (ALLOC_INT), 1, ptr_save);
fread (xnumber_parameters, sizeof (double), 1, ptr_save);
fread (parameter_minimum, sizeof (double),
*number_parameters, ptr_save);
fread (parameter_maximum, sizeof (double),
*number_parameters, ptr_save);
fread (tangents, sizeof (double), *number_parameters, ptr_save);
fread (current_user_parameter_temp, sizeof (double),
*number_parameters, ptr_save);
fread (initial_user_parameter_temp, sizeof (double),
*number_parameters, ptr_save);
fread (temperature_scale_parameters, sizeof (double),
*number_parameters, ptr_save);
fread (parameter_type, sizeof (int), *number_parameters, ptr_save);
fread (&index_cost_repeat, sizeof (int), 1, ptr_save);
fread (&asa_open, sizeof (int), 1, ptr_save);
fread (&number_asa_open, sizeof (int), 1, ptr_save);
fread (&recursive_asa_open, sizeof (int), 1, ptr_save);
fread (current_cost_temperature, sizeof (double), 1, ptr_save);
fread (initial_cost_temperature, sizeof (double), 1, ptr_save);
fread (temperature_scale_cost, sizeof (double), 1, ptr_save);
fread (accepted_to_generated_ratio, sizeof (double), 1, ptr_save);
fread (curvature_flag, sizeof (int), 1, ptr_save);
fread (seed, sizeof (LONG_INT), 1, ptr_save);
fread (number_generated, sizeof (LONG_INT), 1, ptr_save);
fread (number_accepted, sizeof (LONG_INT), 1, ptr_save);
fread (number_acceptances_saved, sizeof (LONG_INT), 1, ptr_save);
fread (recent_number_acceptances, sizeof (LONG_INT), 1, ptr_save);
fread (recent_number_generated, sizeof (LONG_INT), 1, ptr_save);
fread (number_invalid_generated_states, sizeof (LONG_INT), 1, ptr_save);
fread (index_cost_acceptances, sizeof (LONG_INT), 1, ptr_save);
fread (best_number_generated_saved, sizeof (LONG_INT), 1, ptr_save);
fread (best_number_accepted_saved, sizeof (LONG_INT), 1, ptr_save);
fread (index_parameter_generations, sizeof (LONG_INT),
*number_parameters, ptr_save);
fread (current_generated_state->parameter,
sizeof (double), *number_parameters, ptr_save);
fread (last_saved_state->parameter,
sizeof (double), *number_parameters, ptr_save);
fread (best_generated_state->parameter,
sizeof (double), *number_parameters, ptr_save);
fread (&(current_generated_state->cost), sizeof (double), 1, ptr_save);
fread (&(last_saved_state->cost), sizeof (double), 1, ptr_save);
fread (&(best_generated_state->cost), sizeof (double), 1, ptr_save);
fread (&(OPTIONS->Limit_Acceptances), sizeof (LONG_INT), 1, ptr_save);
fread (&(OPTIONS->Limit_Generated), sizeof (LONG_INT), 1, ptr_save);
fread (&(OPTIONS->Limit_Invalid_Generated_States), sizeof (int),
1, ptr_save);
fread (&(OPTIONS->Accepted_To_Generated_Ratio), sizeof (double),
1, ptr_save);
fread (&(OPTIONS->Cost_Precision), sizeof (double), 1, ptr_save);
fread (&(OPTIONS->Maximum_Cost_Repeat), sizeof (int), 1, ptr_save);
fread (&(OPTIONS->Number_Cost_Samples), sizeof (int), 1, ptr_save);
fread (&(OPTIONS->Temperature_Ratio_Scale), sizeof (double),
1, ptr_save);
fread (&(OPTIONS->Cost_Parameter_Scale_Ratio), sizeof (double),
1, ptr_save);
fread (&(OPTIONS->Temperature_Anneal_Scale), sizeof (double),
1, ptr_save);
fread (&(OPTIONS->Include_Integer_Parameters), sizeof (int),
1, ptr_save);
fread (&(OPTIONS->User_Initial_Parameters), sizeof (int), 1, ptr_save);
fread (&(OPTIONS->Sequential_Parameters), sizeof (ALLOC_INT), 1,
ptr_save);
fread (&(OPTIONS->Initial_Parameter_Temperature), sizeof (double), 1,
ptr_save);
fread (&(OPTIONS->Acceptance_Frequency_Modulus), sizeof (int), 1,
ptr_save);
fread (&(OPTIONS->Generated_Frequency_Modulus), sizeof (int), 1,
ptr_save);
fread (&(OPTIONS->Reanneal_Cost), sizeof (int), 1, ptr_save);
fread (&(OPTIONS->Reanneal_Parameters), sizeof (int), 1, ptr_save);
fread (&(OPTIONS->Delta_X), sizeof (double), 1, ptr_save);
fread (&(OPTIONS->User_Tangents), sizeof (int), 1, ptr_save);
#if USER_INITIAL_COST_TEMP
fread (&(OPTIONS->User_Cost_Temperature), sizeof (double), 1, ptr_save);
#endif
#if RATIO_TEMPERATURE_SCALES
fread (OPTIONS->User_Temperature_Ratio, sizeof (double),
*number_parameters, ptr_save);
#endif
#if USER_INITIAL_PARAMETERS_TEMPS
fread (OPTIONS->User_Parameter_Temperature, sizeof (double),
*number_parameters, ptr_save);
#endif
#if DELTA_PARAMETERS
fread (OPTIONS->User_Delta_Parameter, sizeof (double),
*number_parameters, ptr_save);
#endif
#if QUENCH_PARAMETERS
fread (OPTIONS->User_Quench_Param_Scale, sizeof (double),
*number_parameters, ptr_save);
#endif
#if QUENCH_COST
fread (OPTIONS->User_Quench_Cost_Scale, sizeof (double), 1, ptr_save);
#endif
fread (&(OPTIONS->N_Accepted), sizeof (LONG_INT), 1, ptr_save);
fread (&(OPTIONS->N_Generated), sizeof (LONG_INT), 1, ptr_save);
fread (&(OPTIONS->Locate_Cost), sizeof (int), 1, ptr_save);
fread (&(OPTIONS->Immediate_Exit), sizeof (int), 1, ptr_save);
#if OPTIONAL_DATA_DBL
fread (&(OPTIONS->Asa_Data_Dim_Dbl), sizeof (ALLOC_INT), 1, ptr_save);
fread (OPTIONS->Asa_Data_Dbl, sizeof (double),
OPTIONS->Asa_Data_Dim_Dbl, ptr_save);
#endif
fread (&(OPTIONS->Random_Array_Dim), sizeof (ALLOC_INT), 1, ptr_save);
fread (OPTIONS->Random_Array, sizeof (double),
OPTIONS->Random_Array_Dim, ptr_save);
fread (&(OPTIONS->Asa_Recursive_Level), sizeof (int), 1, ptr_save);
#if OPTIONAL_DATA_INT
fread (&(OPTIONS->Asa_Data_Dim_Int), sizeof (ALLOC_INT), 1, ptr_save);
fread (OPTIONS->Asa_Data_Int, sizeof (LONG_INT),
OPTIONS->Asa_Data_Dim_Int, ptr_save);
#endif
#if OPTIONAL_DATA_PTR
fread (&(OPTIONS->Asa_Data_Dim_Ptr), sizeof (ALLOC_INT), 1, ptr_save);
if (OPTIONS->Asa_Recursive_Level == 0)
fread (OPTIONS->Asa_Data_Ptr, sizeof (OPTIONAL_PTR_TYPE),
OPTIONS->Asa_Data_Dim_Ptr, ptr_save);
#if ASA_TEMPLATE_SELFOPT
if (OPTIONS->Asa_Recursive_Level == 1)
fread (OPTIONS->Asa_Data_Ptr, sizeof (RECUR_OPTIONAL_PTR_TYPE),
OPTIONS->Asa_Data_Dim_Ptr, ptr_save);
#endif
#endif
#if USER_ASA_OUT
fread (OPTIONS->Asa_Out_File, sizeof (char), 1, ptr_save);
#endif
#if USER_COST_SCHEDULE
fread (&(OPTIONS->Cost_Schedule), sizeof (char), 1, ptr_save);
#endif
#if USER_ACCEPT_ASYMP_EXP
fread (&(OPTIONS->Asymp_Exp_Param), sizeof (double), 1, ptr_save);
#endif
#if USER_ACCEPTANCE_TEST
fread (&(OPTIONS->Acceptance_Test), sizeof (char), 1, ptr_save);
fread (&(OPTIONS->User_Acceptance_Flag), sizeof (int), 1, ptr_save);
fread (&(OPTIONS->Cost_Acceptance_Flag), sizeof (int), 1, ptr_save);
fread (&(OPTIONS->Cost_Temp_Curr), sizeof (double), 1, ptr_save);
fread (&(OPTIONS->Cost_Temp_Init), sizeof (double), 1, ptr_save);
fread (&(OPTIONS->Cost_Temp_Scale), sizeof (double), 1, ptr_save);
#endif
#if USER_GENERATING_FUNCTION
fread (&(OPTIONS->Generating_Distrib), sizeof (char), 1, ptr_save);
#endif
#if USER_REANNEAL_COST
fread (&(OPTIONS->Reanneal_Cost_Function), sizeof (char), 1, ptr_save);
#endif
#if USER_REANNEAL_PARAMETERS
fread (&(OPTIONS->Reanneal_Params_Function), sizeof (char),
1, ptr_save);
#endif
#if ASA_SAMPLE
fread (&(OPTIONS->Bias_Acceptance), sizeof (double), 1, ptr_save);
fread (OPTIONS->Bias_Generated, sizeof (double),
*number_parameters, ptr_save);
fread (&(OPTIONS->Average_Weights), sizeof (double), 1, ptr_save);
fread (&(OPTIONS->Limit_Weights), sizeof (double), 1, ptr_save);
#endif
#if ASA_QUEUE
fread (save_queue, sizeof (LONG_INT), 1, ptr_save);
fread (save_queue_indx, sizeof (LONG_INT), 1, ptr_save);
fread (&(OPTIONS->Queue_Size), sizeof (ALLOC_INT), 1, ptr_save);
fread (save_queue_flag, sizeof (int), save_queue, ptr_save);
fread (save_queue_cost, sizeof (double), save_queue, ptr_save);
fread (save_queue_param, sizeof (double),
(*number_parameters) * (OPTIONS->Queue_Size), ptr_save);
#if ASA_RESOLUTION
#else
fread (OPTIONS->Queue_Resolution, sizeof (double),
*number_parameters, ptr_save);
#endif
#endif
#if ASA_RESOLUTION
fread (OPTIONS->Coarse_Resolution, sizeof (double),
*number_parameters, ptr_save);
#endif
#if FITLOC
fread (&(OPTIONS->Fit_Local), sizeof (int), 1, ptr_save);
fread (&(OPTIONS->Iter_Max), sizeof (int), 1, ptr_save);
fread (&(OPTIONS->Penalty), sizeof (double), 1, ptr_save);
#endif
#if MULTI_MIN
fread (OPTIONS->Multi_Number, sizeof (int), 1, ptr_save);
fread (OPTIONS->Multi_Grid,
sizeof (double), *number_parameters, ptr_save);
fread (&(OPTIONS->Multi_Specify), sizeof (int), 1, ptr_save);
for (multi_index = 0; multi_index < OPTIONS->Multi_Number;
++multi_index) {
fread (&(OPTIONS->Multi_Cost[multi_index]), sizeof (double), 1,
ptr_save);
fread (&(OPTIONS->Multi_Params[multi_index]), sizeof (double),
*number_parameters, ptr_save);
}
#endif
#if ASA_PARALLEL
fread (¶llel_generated, sizeof (LONG_INT), 1, ptr_save);
fread (¶llel_block_max, sizeof (LONG_INT), 1, ptr_save);
for (index_parallel = 0; index_parallel < parallel_block_max;
++index_parallel) {
fread (gener_block_state[index_parallel].parameter,
sizeof (double), *number_parameters, ptr_save);
fread (&(gener_block_state[index_parallel].cost),
sizeof (double), 1, ptr_save);
#if USER_ACCEPTANCE_TEST
fread (&
(gener_block_state[index_parallel].par_user_accept_flag),
sizeof (int), 1, ptr_save);
fread (&
(gener_block_state[index_parallel].par_cost_accept_flag),
sizeof (int), 1, ptr_save);
#endif
}
fread (&(OPTIONS->Gener_Mov_Avr), sizeof (int), 1, ptr_save);
fread (&(OPTIONS->Gener_Block), sizeof (LONG_INT), 1, ptr_save);
fread (&(OPTIONS->Gener_Block_Max), sizeof (LONG_INT), 1, ptr_save);
#endif
fclose (ptr_save);
asa_read = FALSE;
#if ASA_PRINT
print_state (parameter_minimum,
parameter_maximum,
tangents,
curvature,
current_cost_temperature,
current_user_parameter_temp,
accepted_to_generated_ratio,
number_parameters,
curvature_flag,
number_accepted,
index_cost_acceptances,
number_generated,
number_invalid_generated_states,
last_saved_state,
best_generated_state, ptr_asa_out, OPTIONS);
#endif /* ASA_PRINT */
#include "asa_opt"
#if ASA_SAVE_OPT
if ((ptr_save_opt = fopen ("asa_save_opt", "r")) == NULL) {
#if INCL_STDOUT
printf ("\n\n*** WARNING fopen asa_save_opt failed *** \n\n");
#endif /* INCL_STDOUT */
#if ASA_PRINT
fprintf (ptr_asa_out,
"\n\n*** WARNING fopen asa_save_opt failed *** \n\n");
fflush (ptr_asa_out);
#endif
} else {
fscanf (ptr_save_opt, "%s%s%s%s%s",
read_if, read_FALSE, read_comm1, read_ASA_SAVE, read_comm2);
if (strcmp (read_if, "#if") || strcmp (read_FALSE, "FALSE")
|| strcmp (read_comm1, "/*")
|| strcmp (read_ASA_SAVE, "ASA_SAVE")
|| strcmp (read_comm2, "*/")) {
#if INCL_STDOUT
printf ("\n\n*** EXIT not asa_save_opt for this version *** \n\n");
#endif /* INCL_STDOUT */
#if ASA_PRINT
fprintf (ptr_asa_out,
"\n\n*** not asa_save_opt for this version *** \n\n");
fflush (ptr_asa_out);
#endif
*exit_status = INVALID_USER_INPUT;
goto EXIT_ASA;
}
#if INT_LONG
fscanf (ptr_save_opt, "%s", read_option);
fscanf (ptr_save_opt, "%ld", &read_long);
OPTIONS->Limit_Acceptances = read_long;
fscanf (ptr_save_opt, "%s", read_option);
fscanf (ptr_save_opt, "%ld", &read_long);
OPTIONS->Limit_Generated = read_long;
#else
fscanf (ptr_save_opt, "%s", read_option);
fscanf (ptr_save_opt, "%d", &read_int);
OPTIONS->Limit_Acceptances = read_int;
fscanf (ptr_save_opt, "%s", read_option);
fscanf (ptr_save_opt, "%d", &read_int);
OPTIONS->Limit_Generated = read_int;
#endif
fscanf (ptr_save_opt, "%s", read_option);
fscanf (ptr_save_opt, "%d", &read_int);
OPTIONS->Limit_Invalid_Generated_States = read_int;
fscanf (ptr_save_opt, "%s", read_option);
fscanf (ptr_save_opt, "%lf", &read_double);
OPTIONS->Accepted_To_Generated_Ratio = read_double;
fscanf (ptr_save_opt, "%s", read_option);
fscanf (ptr_save_opt, "%lf", &read_double);
OPTIONS->Cost_Precision = read_double;
fscanf (ptr_save_opt, "%s", read_option);
fscanf (ptr_save_opt, "%d", &read_int);
OPTIONS->Maximum_Cost_Repeat = read_int;
fscanf (ptr_save_opt, "%s", read_option);
fscanf (ptr_save_opt, "%d", &read_int);
OPTIONS->Number_Cost_Samples = read_int;
fscanf (ptr_save_opt, "%s", read_option);
fscanf (ptr_save_opt, "%lf", &read_double);
OPTIONS->Temperature_Ratio_Scale = read_double;
fscanf (ptr_save_opt, "%s", read_option);
fscanf (ptr_save_opt, "%lf", &read_double);
OPTIONS->Cost_Parameter_Scale_Ratio = read_double;
fscanf (ptr_save_opt, "%s", read_option);
fscanf (ptr_save_opt, "%lf", &read_double);
OPTIONS->Temperature_Anneal_Scale = read_double;
fscanf (ptr_save_opt, "%s", read_option);
fscanf (ptr_save_opt, "%d", &read_int);
OPTIONS->Include_Integer_Parameters = read_int;
fscanf (ptr_save_opt, "%s", read_option);
fscanf (ptr_save_opt, "%d", &read_int);
OPTIONS->User_Initial_Parameters = read_int;
#if INT_ALLOC
fscanf (ptr_save_opt, "%s", read_option);
fscanf (ptr_save_opt, "%d", &read_int);
OPTIONS->Sequential_Parameters = read_int;
#else
#if INT_LONG
fscanf (ptr_save_opt, "%s", read_option);
fscanf (ptr_save_opt, "%ld", &read_long);
OPTIONS->Sequential_Parameters = read_long;
#else
fscanf (ptr_save_opt, "%s", read_option);
fscanf (ptr_save_opt, "%d", &read_int);
OPTIONS->Sequential_Parameters = read_int;
#endif
#endif
fscanf (ptr_save_opt, "%s", read_option);
fscanf (ptr_save_opt, "%lf", &read_double);
OPTIONS->Initial_Parameter_Temperature = read_double;
fscanf (ptr_save_opt, "%s", read_option);
fscanf (ptr_save_opt, "%d", &read_int);
OPTIONS->Acceptance_Frequency_Modulus = read_int;
fscanf (ptr_save_opt, "%s", read_option);
fscanf (ptr_save_opt, "%d", &read_int);
OPTIONS->Generated_Frequency_Modulus = read_int;
fscanf (ptr_save_opt, "%s", read_option);
fscanf (ptr_save_opt, "%d", &read_int);
OPTIONS->Reanneal_Cost = read_int;
fscanf (ptr_save_opt, "%s", read_option);
fscanf (ptr_save_opt, "%d", &read_int);
OPTIONS->Reanneal_Parameters = read_int;
fscanf (ptr_save_opt, "%s", read_option);
fscanf (ptr_save_opt, "%lf", &read_double);
OPTIONS->Delta_X = read_double;
fscanf (ptr_save_opt, "%s", read_option);
fscanf (ptr_save_opt, "%d", &read_int);
OPTIONS->User_Tangents = read_int;
fscanf (ptr_save_opt, "%s
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -