【发布时间】:2016-09-05 02:49:59
【问题描述】:
考虑以下目标:
创建一个程序来解决:minimize f(x) 作为输入提供的任意 f 和 x。
如何设计一个可以接收f 和x 的描述并有效处理它的C++ 程序?
如果程序实际上是一个 C++ 库,那么可以显式地为f 和x 编写代码(可能从f 的某个基函数类和x 的状态类继承)。
但是,如果程序是例如服务,并且用户正在以某种高级表示形式发送f 和x 的描述,例如,应该怎么办? JSON 对象?
想到的想法
1- 将f 转换为内部函数表示(例如基本操作列表)。每当评估 f 时应用这些。
问题:效率低下,除非每个操作都是批处理操作(例如,如果我们正在使用大型向量/矩阵进行向量或矩阵运算)。
2- 以某种方式生成 C++ 代码并编译代码以表示 x 和计算 f。有没有办法限制编译,只需要编译该代码,但其余代码已经“预编译”?
【问题讨论】:
-
使用嵌入式 JIT 编译器,例如 luajit?
-
他们是怎么做的,我不知道,但它是在 Acado 工具包的 C++ 版本中完成的。 acado.github.io
标签: c++ optimization mathematical-optimization