实时 Integer/Binary 编程(微秒计算时间)

Real time Integer/Binary programming (microSecond compute time)

我的二进制编程问题是:

max: (a1 * x1) + (a2 * x2) + ..... + (an * xn)

受制于:

(c1 * x1) + (c2 * x2) + ..... + (cn * xn) < C

n = 10

a1, ... an, c1, ... cn, C are known

x1, ... xn are binary

这是一个流程任务分配问题。就我而言,解决 binary/integer 编程问题的开销需要非常小(< 1 毫秒)。当我 运行 使用 CBC 求解器/lpsolve 时,它​​报告的时间为 2 毫秒 - 7 毫秒。我没有 SCIP/Gurobi。有没有办法在不到一毫秒的时间内解决这个问题?期望在不到一毫秒内解决这个问题似乎合理吗?

(我确实在 CBC 中禁用了 printf。但我不确定是否有任何其他系统操作被卡住......它正在写入的任何日志文件)

这是标准的背包问题,可以使用动态规划高效地求解。 knapsack wiki (and also in mutiple stack overflow posts e.g. here DP algo for knapsack and here recursive knapsack)

中对此进行了很好的讨论

C++ 实现在我的核心 i7 @3Ghz 上测量了 ~20us