首页 > 解决方案 > 如何传递求解器工作空间大小

问题描述

我有一个线检测算法,它使用求解器(优化算法)来找到线检测问题的一些解决方案。

class line-detect {
    public:
    (some functions);
    private:
    solver mSolve;
}

class Solver {
    public:
    (Some functions);
    private:
    (some functions);
}

在solver.cpp 中,用于求解器计算的工作区/缓冲区的大小是使用线检测算法变量分配的。

在 Solver.cpp 中,工作空间的大小分配如下:

const uint32_t SIZEOF_WORKSPACE = static_cast<uint32_t>(((2 * NUM_ERRS_MAX) + (5 * NUM_VARS_MAX) + NUM_VARS_MAX * NUM_ERRS_MAX ) * sizeof(float64_t) + (NUM_VARS_MAX * sizeof(int32_t)));

目前求解器在算法本身内,但我想提取求解器并用作单独的实体/模块。我已经提取了求解器,但是这个大小的工作区/缓冲区必须静态分配(即我必须在求解器模块中硬编码线检测算法值)

问题分配工作空间大小而不必在求解器模块中硬编码线检测算法变量的最佳方法是什么?

标签: c++oopdesign-patterns

解决方案


推荐阅读