最近使用了Gurobi,在安装过程中遇到了很多问题,官方网站上倒是有大量的资料介绍,但是一来各种资料的位置不太容易发现,二来英语毕竟没有母语亲切,所以在此写下一些在安装使用过程中遇到的问题。
安装过程自然不用多说,很简单的注册、下载、安装,实在是没什么可说的,为避免出错,我是安装在了默认目录,一路NEXT下去了。
这一步很关键,没有License你就用不了,License一定是要钱的,然而我们可以用academic license,校园用户可用,可使用一年,过期可再次申请。
Academic License只在注册License时验证是否为校园用户,也就是说,我们在校园网网络环境(或VPN)下注册,以后就可以在任何环境下使用了。
(Gubobi的官网页面改版后,文章也做了相应的修改)
登录后点击网页顶部的“Downloads & Licenses”下的“Download Center”,之后的界面样式有变化,但选项和之前的一致。
点击下面的“Academic License”,打开页面后选择“Request License”,生成一个grbgetkey指令(例如:grbgetkey 253e22f3-...),可以在Windows的搜索框运行,也打开命令提示符。
我是在VPN环境下注册的,此时网速很重要。
我先后在两个网络环境下注册。同样的操作,不同的网速,不同的结果。如果因为网速造成注册License失败,很影响心情啊。
前一个网络环境下,打开VPN后注册,提示“Unable to contact key server”,安装失败;
回到住处后,再次操作,这次一直没有进一步提示,也没有提示“Unable to contact key server”,就放在那一直运行;
第二天唤醒电脑休眠状态后,发现还是昨天的界面,但再次执行相同的命令后发现执行成功,下载好的License大概是1KB。
License也不大,不大可能是一晚上下载好,然后等我提示保存位置的,我也只能归咎于网速了,或者,玄学?
为了让Gurobi查找到License的位置,必须设置一个环境变量GRB_LICENSE_FILE。
设置环境变量的方法不用再说,注意要设置在系统环境变量,而不是用户环境变量。
变量值写你保存Gurobi License的位置,这里我是保存在Gurobi的安装目录下。
官方网站上也有一个安装使用的指导文档,说的更加清晰,这篇文章里的大多数内容都是翻译自官方文档。如果遇到什么问题,Windows用户请参考这里:
http://www.gurobi.com/documentation/7.5/quickstart_windows/quickstart_windows.html
照此文档,一步一步来即可。其他系统的用户可在官方安装使用指导文档中自行查找相关使用说明,网址见文末。
如果你之前已经安装好了Gurobi,也可在安装目录下的docs文件夹里查找相应的安装使用文档
下面的内容是参考官方FAQS里的回答,可按照安装版本及VS版本酌情修改。
问题:如何在VS2015中使用Gurobi?
官方回答(截取部分):
Right-click on the project name in the Solution Explorer panel, then select Properties.
For 32-bit Gurobi libraries:
·Set Platform to Win32 (if not already selected)
·Under C/C++ / General / Additional Include Directories, add: c:\gurobi751\win32\include
·Under Linker / General / Additional Library Directories, add: c:\gurobi751\win32\lib
For 64-bit Gurobi libraries:
·Set Platform to x64 (if not already selected)
·Under C/C++ / General / Additional Include Directories, add: c:\gurobi751\win64\include
·Under Linker / General / Additional Library Directories, add: c:\gurobi751\win64\lib
Under C/C++ / Precompiled Headers / Precompiled Header, select Not Using Precompiled Headers
Under Linker / Input / Additional Dependencies, add gurobi75.lib and gurobi_c++mdd2015.lib
选取项目工程“属性”。
在“C/C++ / 常规 / 附加包含目录”中添加:c:\gurobi751\win32\include(即Gurobi安装目录下的include文件夹的路径);
在“链接器 /常规/附加库目录”中添加:c:\gurobi751\win32\lib(即Gurobi安装目录下的lib文件夹的路径);
在“链接器 /输入/附加依赖项”中添加gurobi75.lib(根据Gurobi版本选取,在Gurobi安装目录下的lib文件夹里有一个gurobi**.lib,版本不同,**也就不同,例如Gurobi 7.0.2版本,里面的就是gurobi70.lib)和gurobi_c++mdd2015.lib(根据你的VS版本选取,同样可在lib文件夹下找到;中间的mdd代表运行库:多线程(\MT)、多线程调试(/MTD)、多线程DLL(/MD)、多线程调试DLL(\MDD),和项目中的配置相对应;后面的2015可根据你的VS版本修改)。
注意:上文中,蓝色部分根据Gurobi的版本自行修改,红色部分根据VS的版本自行修改,绿色部分根据项目的运行库修改。
在安装目录下的docs文件夹下有安装使用说明,及相应的案例解析;
在安装目录下的examples文件夹下有各种语言的程序文件(一案例一文件),可直接执行,其中build目录下保存的是工程文件。
附:
官方安装使用指导文档:http://www.gurobi.com/resources/getting-started/starting-with-gurobi
官方FAQS:http://www.gurobi.com/support/faqs
官方文档:http://www.gurobi.com/documentation
距离上一次注册License已经过去一年半,可以使用一年的License已经过期了半年,期间由于种种原因没能再次注册License,所以近半年并未能使用Gurobi。
然而近日承蒙高人指点,我又能使用Gurobi了,仅仅是因为我把系统的时间改成了一年前。我真的没有想到,Gurobi的加密手段居然如此的简单……
总结一下最近关于License的认知:License与时间和版本有关。
最后,Gurobi只支持最近的几个版本的VS,比如7.0.2版本支持vs2010~vs2015,7.5.1版本和8.1.0版本就只支持vs2015和vs2017了。所以要想用最新的Gurobi,开发工具也得用最新的。
至于在脱离VS的情况下使用Gurobi,我暂时还没有试过。使用VS最主要的原因是DEBUG纠错方便,以我的水平,脱离VS,写程序的时间估计要几倍、十几倍地延长了,所以我也只能升级VS来适应Gurobi的更新换代了。