- 主题:请教:分支定界法目前用啥算法来提高求解效率
自己写了一个经典分支定界法程序,变量多的话运行巨慢,但CPLEX运行起来只需要零点几秒,想请教一下大拿们CPLEX是用啥算法提高效率的?感谢!
--
FROM 14.116.141.*
你求的是精确解,
人家软件是近似解。
我猜的。
【 在 dffg 的大作中提到: 】
: 自己写了一个经典分支定界法程序,变量多的话运行巨慢,但CPLEX运行起来只需要零点几秒,想请教一下大拿们CPLEX是用啥算法提高效率的?感谢!
--
FROM 221.222.21.*
不是,软件那个也是精确解,我比较了好几组数据,真的是科学技术是第一生产力啊
【 在 wangyuanjing 的大作中提到: 】
: 你求的是精确解,
: 人家软件是近似解。
: 我猜的。
--
FROM 111.203.3.*
我觉得是这样的
你自己作的程序,在运行环境下是解释执行的,所以运算速度主要看循环次数
而软件提供的固有函数是经过编译好的,运行是底层程序,不需要按行解释程序命令
实际上,大多数数学软件都是解释执行的,
解释每行命令用的时间比计算exp,sin等等函数的都慢很多
【 在 dffg (dffg) 的大作中提到: 】
: 自己写了一个经典分支定界法程序,变量多的话运行巨慢,但CPLEX运行起来只需要零点几秒,想请教一下大拿们CPLEX是用啥算法提高效率的?感谢!
--
FROM 59.72.54.*
分枝定界,是按阶乘速度增长的,比指数增长还快。
肯定是有其它方面的原因,才导致速度快。
【 在 elmo 的大作中提到: 】
: 我觉得是这样的
: 你自己作的程序,在运行环境下是解释执行的,所以运算速度主要看循环次数
: 而软件提供的固有函数是经过编译好的,运行是底层程序,不需要按行解释程序命令
: ...................
--
FROM 123.150.181.*
你的变量个数是多少?
我用matlab,变量达到13个以后,运行就特别特别慢了。
【 在 dffg 的大作中提到: 】
: 不是,软件那个也是精确解,我比较了好几组数据,真的是科学技术是第一生产力啊
--
FROM 123.150.181.*
48个,用CPLEX不到半秒。
【 在 wangyuanjing 的大作中提到: 】
: 你的变量个数是多少?
: 我用matlab,变量达到13个以后,运行就特别特别慢了。
:
--
FROM 101.241.9.*
你是用什么语言编写的程序?
1. 如果是python或者MATLAB编程序,建议就不比较效率了;
2. 如果是C语言,一些编译参数可能就能影响三五倍,更不用说还有一些深层的优化。我记得一本微分方程数值解的章节后面就直接劝退自己写程序挑战经典程序的尝试(除非是提出新的算法)。
3. 我觉得业余爱好者自己编程序的上限是glpk和lpsolve,而他们和CPLEX还有不小的差距,另外lpsolve不能解整数线性规划。
我以前曾经尝试自己写过分支定界的小函数,效果确实比lingo慢多了,但是某些情况调整参数的顺序也能影响计算速度,比如把变动范围小的放在前面。其次,我觉得可以通过找一个上界来加快计算速度。
【 在 dffg 的大作中提到: 】
: 自己写了一个经典分支定界法程序,变量多的话运行巨慢,但CPLEX运行起来只需要零点几秒,想请教一下大拿们CPLEX是用啥算法提高效率的?感谢!
--
FROM 36.130.176.*