feat(ml_predict): 启用 ml_log_ideal_attempt 日志函数
将原本被注释掉的 ml_log_ideal_attempt 函数启用,用于记录理想尝试的相关数据。 该函数会将每次尝试的时间戳、次数、范数、迹、核阶数、预测概率及成功标志写入 CSV 文件。 确保在项目根目录下生成 dataset 文件夹,并将日志持久化存储于 ideal_data.csv 中。
This commit is contained in:
@@ -78,47 +78,47 @@ double ml_predict_success(long norm_val, int trace_val, int kernel_order) {
|
|||||||
|
|
||||||
// 日志函数:记录一次理想尝试
|
// 日志函数:记录一次理想尝试
|
||||||
// 记录到 CSV 文件,包含时间戳
|
// 记录到 CSV 文件,包含时间戳
|
||||||
// void ml_log_ideal_attempt(int attempt,
|
void ml_log_ideal_attempt(int attempt,
|
||||||
// const quat_left_ideal_t *lideal_com,
|
const quat_left_ideal_t *lideal_com,
|
||||||
// int kernel_order,
|
int kernel_order,
|
||||||
// int success_flag)
|
int success_flag)
|
||||||
// {
|
{
|
||||||
// const char *dir_path = "./dataset";
|
const char *dir_path = "./dataset";
|
||||||
// struct stat st = {0};
|
struct stat st = {0};
|
||||||
|
|
||||||
// if (stat(dir_path, &st) == -1) {
|
if (stat(dir_path, &st) == -1) {
|
||||||
// mkdir(dir_path, 0755);
|
mkdir(dir_path, 0755);
|
||||||
// }
|
}
|
||||||
|
|
||||||
// // 使用固定文件名,避免频繁创建文件
|
// 使用固定文件名,避免频繁创建文件
|
||||||
// char csv_path[512];
|
char csv_path[512];
|
||||||
// snprintf(csv_path, sizeof(csv_path), "%s/ideal_data.csv", dir_path);
|
snprintf(csv_path, sizeof(csv_path), "%s/ideal_data.csv", dir_path);
|
||||||
|
|
||||||
// // 使用追加模式,避免覆盖
|
// 使用追加模式,避免覆盖
|
||||||
// FILE *logfile = fopen(csv_path, "a+");
|
FILE *logfile = fopen(csv_path, "a+");
|
||||||
// if (!logfile) {
|
if (!logfile) {
|
||||||
// perror("无法打开 ideal_data CSV 文件");
|
perror("无法打开 ideal_data CSV 文件");
|
||||||
// return;
|
return;
|
||||||
// }
|
}
|
||||||
|
|
||||||
// // 如果是第一次写入,添加表头
|
// 如果是第一次写入,添加表头
|
||||||
// if (ftell(logfile) == 0) {
|
if (ftell(logfile) == 0) {
|
||||||
// fprintf(logfile, "Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success\n");
|
fprintf(logfile, "Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success\n");
|
||||||
// }
|
}
|
||||||
|
|
||||||
// // 提取特征和记录
|
// 提取特征和记录
|
||||||
// long norm_val = ibz_to_long_safe(&lideal_com->norm);
|
long norm_val = ibz_to_long_safe(&lideal_com->norm);
|
||||||
// int trace_val = quat_ideal_trace(lideal_com);
|
int trace_val = quat_ideal_trace(lideal_com);
|
||||||
// double prob = ml_predict_success(norm_val, trace_val, kernel_order);
|
double prob = ml_predict_success(norm_val, trace_val, kernel_order);
|
||||||
|
|
||||||
// time_t t = time(NULL);
|
time_t t = time(NULL);
|
||||||
// struct tm tm_info;
|
struct tm tm_info;
|
||||||
// localtime_r(&t, &tm_info);
|
localtime_r(&t, &tm_info);
|
||||||
// char time_str[32];
|
char time_str[32];
|
||||||
// strftime(time_str, sizeof(time_str), "%Y-%m-%d-%H-%M-%S", &tm_info);
|
strftime(time_str, sizeof(time_str), "%Y-%m-%d-%H-%M-%S", &tm_info);
|
||||||
|
|
||||||
// fprintf(logfile, "%s,%d,%ld,%d,%d,%.3f,%d\n",
|
fprintf(logfile, "%s,%d,%ld,%d,%d,%.3f,%d\n",
|
||||||
// time_str, attempt, norm_val, trace_val, kernel_order, prob, success_flag);
|
time_str, attempt, norm_val, trace_val, kernel_order, prob, success_flag);
|
||||||
|
|
||||||
// fclose(logfile);
|
fclose(logfile);
|
||||||
// }
|
}
|
||||||
Reference in New Issue
Block a user