SNOPT是一个求解大规模线性或非线性优化规划问题的软件包,有Philip Gill,Walter Murray和Michael Saunders开发。SNOPT是基于Fortran 77开发的,并以源码形式向外发布。
本文主要针对Microsoft Visual studio 2015环境下SNOPT的安装进行阐述。
1、首先,SNOPT是商业软件,需要付费才能使用。但有幸的是,斯坦福商业软件公司对外发布试用版,适用于学生研究使用。申请者需向开发方申请snopt license,从而获得使用权。值得注意的是,snopt试用版对优化变量个数以及约束条件有一定的限制,要求优化变量个数和约束条件个数分别小于300。Snopt license的有效期也只有6个月。请从下述网站进行申请:http://ccom.ucsd.edu/~optimizers/downloads/,如图所示。
点击Fortran libraries,填写申请单。下面将以win64、SNOPT为例阐述进一步地安装步骤。
2、设置环境变量:在系统中添加环境变量SNOPT_LICENSE.
变量值为:$PATH$\snopt7.lic. 其中$PATH$代表snopt7.lic的存储路径,例如C:\Users\me
3、转入邮件中的网址
该网址随申请者的不同而不同,下载SNOPT库。
点击SNOPT7栏下Shared Libraries的链接,下载SNOPT库。文件如图所示。
选择SNOPT C/C++ Precompiled Libraries栏下所需要的SNOPT C/C++接口程序,例如选择Windows (64-bit) 的C++ library,点击下载。文件如图所示。
4、由于SNOPT是基于Fortran 77开发的,因此需要安装Fortran编译器。推荐安装http://ccom.ucsd.edu/~optimizers/faq/
网页下的Intel Redistributable Libraries forFortran and C++ 2017 Compilers (Update 2)。
SNOPT主要依赖一下动态库:
- libifcoremd.dll
- libmmd.dll
- svml_dispmd.dll
上述文件可参考如下路径寻找(可以将该路径加入PATH环境变量)。
C:\Program Files (x86)\CommonFiles\Intel\Shared Libraries\redist\intel64_win\compiler
5、下载SNOPT示例。
https://github.com/snopt/snopt-interface
6、新建VS2015空项目,在源文件中添加cppexamples中的任意一个.cpp文件。例如sntoya.cpp
配置管理器选择×64;解决方案配置为Debug。
右键点击工程Project1,点击属性-VC++目录。包含目录中添加5中所示文件的include文件路径;库目录分别添加3中所示snopt7.lib和snopt7_cpp.lib两个文件的目录。
点击属性-链接器-输入。附加依赖项中添加snopt7.lib和snopt7_cpp.lib两个文件。
7、在工具栏中点击生成-生成解决方案。
8、将3中所示snopt7.dll和snopt7_cpp.dll文件拷贝至Project1工程所在debug文件夹;将libifcoremd.dll、libmmd.dll、svml_dispmd.dll同样拷贝至该文件夹。
9、运行程序。
尽情享受Snopt软件吧!