2025年chronyc sources显示的结果(chronic obstructive)

chronyc sources显示的结果(chronic obstructive)COIN OR 是 CO mputationalI frastructure for O perations R esearch 的简称 是国际知名的运筹和优化程序包代码开发组织 集结了当今运筹界很多知名的专家学者 这个网站提供的代码完全开源 在遵循 GNU GPL 协议下 只要不涉及商业盈利目的 你可以任意下载使用及修改 有些项目已经开发的相当成熟了 如 CLP CBC

大家好,我是讯享网,很高兴认识大家。



COIN-OR 是( COmputationalINfrastructure for Operations Research) 的简称。是国际知名的运筹和优化程序包代码开发组织。集结了当今运筹界很多知名的专家学者。

这个网站提供的代码完全开源,在遵循GNU GPL协议下,只要不涉及商业盈利目的,你可以任意下载使用及修改。有些项目已经开发的相当成熟了,如CLP, CBC, OSI, BONMIN, 还有IPOPT等,据说已经被一些知名的软件公司(如IBM, ILOG的(CPLEX), GAMS等)采纳,并考虑合作开发。有些人则本身就是这些公司的研究人员,可以说,这里集结了目前最先进的一些开源优化代码。

虽然这些软件的开发者们用心良苦,热情的和大家分享这些科研成果。然而,真正会使用这些代码的人却少之又少。出现这个现象的原因很多。首先,这些软件多数是在UNIX或Linux下开发的,而后移植到Windows平台上。所以在Windows上操作起来可能比较麻烦。另外,要使用这些代码,你必须具备一定的编程开发水平,以及扎实的优化理论知识。如果你是初学者,以前没有使用过其他的优化软件,如CPLEX,XPressMP, MATLAB, LINGO等,那么我建议你还是暂时不要接触这些开源代码,等有一定的经验后再说。

本篇文字其实是我的操作纪录,方便自己以后查阅才写的,如果有志同道合的朋友看了我这篇文章,那么欢迎交流。

本篇重点讲述如何编译COIN-OR的开源代码。

COIN-OR的代码有一个很大的特点,就是继承性。往往一个软件包里可能包含了很多其他的软件。例如:SYMPHONY。 这是一个mixed-integer linear programs (混合整数线性规划问题)的求解器。提供两种模式:callable library 和standalone command。也就是说,你可以写程序在自己的代码中调用,你也可以使用命令行模式直接调用solver求解问题。如果你打开他的源代码就会发现,这个程序包含了好几个COIN-OR的项目,如: CGL, CLP,OSI, CoinUtils,FlopC++,以及一些第三方软件如, f2clib, BLAS, GLPK 还有著名的LAPACK. 很多人看到这些可能已经晕头转向了。而且,往往是UNIX版,MAC版, WINDOWS版代码混合在一起的。即使编程老手看到了估计都会晕一阵子,这很正常。其实,这些软件包的结构的确是复杂了点。不过,如果你耐心察看使用说明,并仔细的琢磨一下,还是能摸索出一些头绪的。

首先来讲讲如何获得代码。Coin-OR 的主页地址是http://www.coin-or.org/

这里要先说说,COIN-OR的代码分享形式。COIN-OR的代码分享主要有三种,Binaries(编译版),source codes(源代码) 以及 Online Services(在线版)。 每个项目都有源代码版,但是Binaries版就不一定了,而且有的可能只提供UNIX的binarie版。至于Online版目前只有Bonmin, CLP和IPOPT. 具体信息察看网页http://www.coin-or.org/download.html。

先进入COIN-OR的主页,按projects进入COIN-OR所有项目的列表。这里我就以IPOPT为例说明。

首先在列表中找到IPOPT. 他在 Optimization deterministic nonlinear中

点击进入IPOPT的项目主页。这里你需要仔细的阅读项目的说明信息。

我们看到IPOPT的说明如下:

Project Description: (项目的描述)

这个软件源代码版的下载地址: http://www.coin-or.org/download/source/Ipopt/

编译版的下载地址: http://www.coin-or.org/download/source/Ipopt/

在线帮助文档: http://www.coin-or.org/Ipopt/documentation/

开发文档doxygen的下载地址: http://www.coin-or.org/download/source/Ipopt/ 。

在线帮助文档还有pdf版本的地址 https://projects.coin-or.org/Ipopt/browser/stable/3.2/Ipopt/doc/documentation.pdf?format=raw

具体安装说明和相关资料的下载,都可以在IPOTP的Home page上找到:https://projects.coin-or.org/Ipopt

大家选择下载一个版本。目前这个软件最新版是3.5.5. 下载地址是: http://www.coin-or.org/download/source/Ipopt/Ipopt-3.5.5.zip

下载软件包ipopt-3.5.5.zip后,接下来我们详细说说如何使用。

首先解压缩。解压后,注意两个文件夹,一个是IPOPT,这里放着软件的源代码和工程文件,以及范例等。

另外一个是ThirdParty,这里放第三方软件。注意,由于第三方软件是开源的,IPOPT并没有包含他的源代码,但是,我们前面说过,有些软件是必须要用到的。 所以,我们需要到这些3party的主页上下载这些软件。这点操作起来有点麻烦,我会在后面详细讲到。

我们先进入Ipopt MSVisualStudio v8 目录,发现这个软件的3.5.5版只提供了VS的v8版工程文件。一些老版本里可能还提供v6,v7版本的工程文件。大家可以根据软件的需要选择合适的VS。我建议就选v8以上的,我用的是VS2008.

双击Ipopt.sln打开工程。里面有2个使用范例,和4个模块工程。

2个范例:

hs071_cpp

IpoptAmplSolver

4个模块:

libCoinBlas


讯享网

libCoinHSL

libCoinLapack

libIpopt

注意: 2个范例需要调用4个模块, 所以编译的顺序是先编译4个模块,再编译两个调用范例

注意 libCoinBlas, libCoinHSL 和 libCoinLapack 都是第三方软件。即BLAS, HSL和LACPACK。

所以,编译前需要先上这些软件的主页下载软件。主页地址在前面IPOPT的第三方软件列表中已经提供,直接点击就可以进入下载。

这些3party模块的编译都差不多,所以,我们就以编译BLAS为例说明一下。具体步骤如下:

1. 上BLAS主页下载BLAS http://www.netlib.org/blas/blas.tgz. (直接下载这个压缩包即可)

注意: BLAS是用Fortran写的。而我们的工程需要的是C版的BLAS, 当然你也可以下载CBLAS(主页上有)。我的建议是,就下原版Fortran的。因为首先Fortran版最新最完整。其次CBLAS里混合了一些Fortran文件,不是完全的C版BLAS。其实,我们可以自己制作完整的C版BLAS,使用f2c.exe这个程序把Fortran版的BLAS转换为C版的。编译的时候加个头文件f2c.h和vcf2c.lib就好了。

2. 调用f2c转换Fortran版为C版

关于f2c这个程序,可以在f2c的主页下载: http://www.netlib.org/f2c/

这里我直接我们需要的文件下载地址:

f2c.exe的地址: http://www.netlib.org/f2c/mswin/f2c.exe.gz

f2c.h的地址: http://www.netlib.org/f2c/f2c.h

vcf2c的源代码地址: http://www.netlib.org/f2c/libf2c.zip

这里需要先把vcf2c.zip解压缩,并且把源代码编译一下,生成vcf2c.lib文件。编译过程很简单,代码中已经有VC的makefile文件。只要输入命令:nmake makefile.vc就可以了。编译好后生成vcf2c.lib文件。

这样,我们就收集到了所需的三个文件:f2c.exe,f2c.h和vcf2c.lib

接下来,我们把下载好的BLAS.tgz解压到一个文件夹里,里面有一个scr文件夹,这个文件夹里面包含了所有需要的BLAS源代码。都是*.f格式的Fortran文件。我们把这些文件全部拷贝到ThirdPartyBlas 文件夹里。然后再把准备好的f2c.h也一起放进去。最后使用f2c.exe程序,通过一条DOS命令:f2c.exe *.f

就可以把所有的Fortan代码转成C代码了。转换完后(如果转换过程没有错误),就可以调用另一条DOS命令: del *.f 把Fortran的代码都删除了。(你想保留也无所谓,不过也没什么用处,图占空间!)。

现在,我们已经手动的制作了一个BLAS的C版源代码程序包了。接下来就是修改libCoinBlas工程,编译BLAS。

3. 编译BLAS生成libCoinBlas.lib

首先,我们要在工程文件中加入vcf2c.lib文件。你可以直接把文件加入到工程中。你也可以在工程的设置里,C/C++选项卡中,把vcf2c.lib所在目录添加到附加包含路径里。然后在解决方案的文件管理器里,把所有的Source Files都删除了(因为默认路径不对。其实也可以把BLAS拷贝到默认路径里),再把BLAS里的所有的文件都加进去。最后,选择这个工程项目编译之。如果你前面的操作步骤都正确,那么就会成功的编译出一个lib文件来,输出地址是 Ipopt MSVisualStudio v8 libCoinBlas Release ,输出文件名是 libCoinBlas.lib。

至此,libCoinBlas.lib就大功告成了。如果你第一次没有成功,那就仔细的检查一下操作步骤。只要认真仔细,成功就在眼前。

接下来,你需要用同样的方法,把 libCoinHSL 和 libCoinLapack编译成libCoinHSL.lib和 libCoinLapack.lib文件。有点麻烦的是,这两个库都需要使用f2c转换。

然后,再编译最后一个库: libIpopt 库, 生成libIpopt.lib。这个编译就比较容易了,不需要任何修改直接编译既可。

确保上面4个库都编译成功后。就可以使用了。

首先我们可以编译一个例子测试一下。

熟悉例子后,大家就可以编写自己的程序。

如果写程序时遇到什么困难,或者要了解IPOPT的库函数,那么请参考库函数的使用说明:

在线帮助文档: http://www.coin-or.org/Ipopt/documentation/

和开发文档: http://www.coin-or.org/download/source/Ipopt/

相信,看过这篇介绍后,大家对如何使用COIN-OR应该有一些了解了。

                                                                                                    kaien

                                                                                                2009/03/03

小讯
上一篇 2025-05-13 07:19
下一篇 2025-05-30 21:49

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/176586.html