看论文听讲座,会见到专家们都在用java和c++;看企业招聘公告又说精通java或python,其一即可;网上代码也以java,和matlab居多;小白也会问专家:编代码推荐哪个软件呢?
我其实也会有这个疑问啦:到底哪种好一点呢?本文仅限优化领域,更局限地说是整数规划和混合整数规划领域。
我自己接触过matlab和python,java和c++没用过。不过大概了解一点他们的区别,简单说说自己看法。
主流的,或者说顶尖的,肯定是Java和C++,因为求解速度快。同样一种算法,比python和matlab快10-20倍,甚至听过快100倍的。我们之所以编程求解就是求解得又快又好。那么求解质量差不多的情况下,肯定选最快的。时间对比如下:
语言 | C++ | Java | python |
---|---|---|---|
满意解 | 11060 | 11370 | 11102 |
时间(秒) | 1.0 | 2.0 | 39.4 |
时间(比例) | 1 | 2 | 39 |
对于Java和C++而言,其实C++速度更快。但是和求解器接洽的不好,包也不是很成熟。而Java调用cplex起来很方便,可以弥补时间稍微慢一点的缺陷,也是不错的,甚至略胜一筹。
python处理数据方便;而且有很多第三方库可以调用;最重要的是:和gurobi接洽得很好。gurobi也在不断完善中,求解效果甚至比cplex还要好。再加上,python代码比较简洁直观,数据处理高效,所以选用python也不错。
网上还有一部分代码是matlab的,matlab是数学四大软件之一,功能也很强大,尤其是作图,分析求解。但是matlab有个缺陷,比较致命,和求解器的接洽很一般,比如gurobi,好像需要调用第三方库,导致很多功能用不了。
我以前是用matlab,现在用python,因为简单好上手。当然java和c++,喜欢编程,高效求解的还是建议学一下。因为我们求解的目的是越快越好。换句话说,花出好多时间来设计优化算法效率,还不如换种语言,效率马上提升10倍,立竿见影,成效显著。
更多推荐
优化,选哪种语言好?Python、Java、C++、还是Matlab?
发布评论