一、最优控制软件包PSOPT安装方法

一、PSOPT软件包介绍

二、预备知识介绍

  1. gcc:GNU Compiler Collection(GNU 编译器集合),是一套用于编译和链接C、C++、Objective-C、Fortran和其他编程语言的开源编译器。
  2. g++:GNU C++ Compiler(GNU C++编译器),是GCC中用于编译和链接C++程序的部分。
  3. gfortran:GNU Fortran Compiler(GNU Fortran 编译器),是GCC中用于编译和链接Fortran程序的部分。
  4. git:是一个版本控制系统,用于跟踪文件的修改、协同开发和管理项目。
  5. patch:是一个应用补丁文件(patch file)的工具,用于将补丁应用到源代码中。
  6. wget:是一个用于从网上下载文件的命令行工具。
  7. pkg-config:是一个用于获取编译时和链接时所需库的信息的工具。
  8. liblapack-dev:是一个提供了线性代数运算功能的数学库,liblapack-dev是其开发包。
  9. libmetis-dev:是一个用于解决大规模稀疏矩阵的集群分割和分组的库,libmetis-dev是其开发包。
  10. ./get.ASL:是一个运行名为"get.ASL"的脚本或可执行文件。
  11. ./configure:是一个用于源代码配置的脚本,用于检测系统环境和设置编译选项。
  12. make:是一个用于自动化编译和构建软件的工具,根据Makefile文件中的规则进行编译。
  13. sudo make install:是使用超级用户权限安装编译好的软件。
  14. ThirdParty:可能是指第三方软件、库或模块,具体上下文有待确认。
  15. autoreconf -vif:是一个用于自动生成configure脚本和Makefile的工具。
  16. sudo ldconfig:是使用超级用户权限更新动态链接器的缓存,用于在系统中引入新的共享库。

三、配置过程

PSOPT的配置需要安装IPOPT、ASL、HSL、ADOL-C、Eigen3、gnuplot等依赖库,具体配置过程如下:

1.IPOPT

IPOPT(Interior Point OPTimizer)是一种开源非线性优化工具,用于求解大规模非线性优化问题。Ipopt的设计目标是解决具有无限约束的大规模优化问题,包括连续和离散变量。它采用内点法(Interior Point Method),这是一种在内部搜索方便解的方法,以逼近全局最优解。
参考链接: ubuntu20.04 安装Ipopt

(1)安装依赖项目

sudo apt-get install gcc g++ gfortran git patch wget pkg-config liblapack-dev libmetis-dev

(2)安装ASL

ASL(Ampl Solver Library):ASL是一个用于与AMPL(A Mathematical Programming Language)建模语言配合使用的求解器库。AMPL是一种广泛用于数学规划和优化问题建模的高级语言。ASL提供了与AMPL交互的接口,可以将AMPL模型与IPOPT求解器集成起来。ASL负责处理AMPL模型的解析、转换和传递给IPOPT进行求解。

git clone https://github.com/coin-or-tools/ThirdParty-ASL.git
cd ThirdParty-ASL
./get.ASL
./configure
make
sudo make install

./get.ASL:这个命令是运行名为get.ASL的脚本文件,通常用于获取ASL(Ampl Solver Library)软件包的源代码。该脚本可能负责下载、解压缩和准备ASL软件包的源代码。

./configure:这个命令是运行名为configure的脚本文件,通常用于配置软件包的构建过程。在执行此命令后,脚本将检查系统环境、依赖项和选项,并生成适合当前系统的构建配置。

make:这个命令用于执行Makefile文件,它是一个包含构建和编译指令的脚本文件。通过运行make命令,系统将根据Makefile中的指令,自动执行编译、链接等操作,生成可执行文件或库文件。

sudo make install:这个命令用于将编译好的软件包或库安装到系统中。make install命令会将生成的可执行文件、库文件和相关资源文件复制到相应的目录,并执行必要的配置和安装步骤。sudo是在命令前加上超级用户权限,以确保具有足够的权限进行安装操作。

配置完成后出现如下结果:
在这里插入图片描述

(3)安装HSL

HSL(Harwell Subroutine Library):HSL是一个数值计算和优化问题求解的软件库集合。它包含了一系列高性能的数值算法和子程序,用于解决线性代数、最优化、稀疏矩阵操作等问题。IPOPT可以利用HSL库中的一些算法和子程序来提高求解效率和稳定性,特别是在处理大规模、稀疏的优化问题时。

首先需要进入官网申请个人版本 http://hsl.rl.ac.uk/ipopt, 建议用学校邮箱,申请后等待几个小时官方会发送下载链接,然后下载安装包,解压,再将解压后的文件命名为coinhsl,然后下载ThirdParty-HSL:

git clone https://github.com/coin-or-tools/ThirdParty-HSL.git
cd ThirdParty-HSL

接着将coninhsl移动到ThirdPary-HSL的文件夹之下:

mv  ../coinhsl ThirdParty-HSL

最后

./configure
make
sudo make install

运行成功后会出现如下信息:

在这里插入图片描述

(4)安装Ipopt

git clone https://github.com/coin-or/Ipopt.git
cd Ipopt
mkdir build
cd build
../configure
make
make test

出现如下命令说明安装成功:
在这里插入图片描述

2.ADOL-C

ADOL-C(Automatic Differentiation by Overloading in C/C++)是一个开源的自动微分工具,用于计算数值函数的导数。它提供了一种方便而高效的方式来计算函数的一阶和高阶导数,以及雅可比矩阵和Hessian矩阵。

ADOL-C的设计目标是为了解决在科学计算、优化和数值模拟等领域中遇到的自动微分需求。自动微分是一种计算导数的技术,与数值微分和符号微分相比具有更高的精度ADOL-C通过函数重载技术,将自动微分的计算过程嵌入到用户所编写的C/C++代码中,从而实现了对函数导数的自动计算。

ColPack 作为 ADOL-C 的一个组件,为 ADOL-C 提供了图算法和稀疏矩阵操作的支持。它扩展了 ADOL-C 的功能,使得自动微分技术可以更好地处理与图结构和稀疏矩阵相关的问题。通过 ColPack,ADOL-C 可以更方便地处理具有图结构的优化问题,并提供更准确的导数信息和数值计算能力。

wget --continue www.coin-or.org/download/source/ADOL-C/ADOL-C-2.6.3.tgz
tar zxvf ADOL-C-2.6.3.tgz
cd ADOL-C-2.6.3
mkdir ./ThirdParty
cd ./ThirdParty
wget --continue http://archive.ubuntu.com/ubuntu/pool/universe/c/colpack/colpack_1.0.10.orig.tar.gz
tar zxvf colpack_1.0.10.orig.tar.gz
mv ColPack-1.0.10 ColPack
cd ColPack
autoreconf -vif
./configure --prefix=/usr/local
make
sudo make install
cd $HOME/ADOL-C-2.6.3
sudo ./configure --prefix=/usr/local --enable-sparse --with-colpack=/usr/local
make
sudo make install

autoreconf -vif:这个命令用于自动生成配置脚本和相关的构建文件。autoreconf 是一个工具集,用于根据源代码目录中的模板文件生成配置脚本(如 configure)、Makefile 和其他构建文件。-vif 是 autoreconf 命令的选项,其中 -v 表示显示详细的输出信息,-i 表示进行必要的初始化操作,-f 表示强制重新生成文件。
–enable-sparse:这个选项是一个配置选项,用于启用稀疏矩阵支持。它告诉配置脚本要包含支持稀疏矩阵的相关功能和库。
–with-colpack=/usr/local:这个选项指定了 ColPack 库的安装路径为 /usr/local。它告诉配置脚本要使用指定路径下的 ColPack 库进行构建和链接,以支持与 ColPack 相关的功能。

3.eigen3

Eigen库支持线性代数,矩阵和矢量运算,数值分析及其相关的算法。

wget --continue https://gitlab.com/libeigen/eigen/-/archive/3.3.7/eigen-3.3.7.tar.gz
tar zxvf eigen-3.3.7.tar.gz
cd eigen-3.3.7
mkdir build
cd build
cmake ..
sudo make install

4.gnuplot

Gnuplot是一款命令行绘图工具,用于开源可视化二维和三维数据。它可以生成高质量的科学图形,包括曲线图、散点图、柱状图、高线图等。Gnuplot支持多种输出格式,如图片文件(PNG、JPEG等)和矢量(PDF、SVG等),可以方便地嵌入到文档和报告中。

wget --continue https://fossies.org/linux/misc/old/PDFlib-Lite-7.0.5p3.tar.gz
tar zxvf PDFlib-Lite-7.0.5p3.tar.gz
cd PDFlib-Lite-7.0.5p3
./configure
make
sudo make install
sudo ldconfig
cd ../..    #desktop
wget --continue https://sourceforge.net/projects/gnuplot/files/gnuplot/4.4.0/gnuplot-4.4.0.tar.gz/download
mv download gnuplot-4.4.0.tar.gz
tar zxvf gnuplot-4.4.0.tar.gz
sudo apt-get -y install libx11-dev libxt-dev libreadline6-dev libgd-dev
cd gnuplot-4.4.0
./configure -with-readline=gnu -without-tutorial
make
sudo make install

ldconfig 命令的作用是更新系统中的共享库缓存以便让系统能够正确找到并加载共享库。当你安装或更新了一个共享库时,你需要运行 ldconfig 命令来更新系统的共享库缓存,以便系统能够感知到新的共享库。

5.配置

cd /usr/local/lib/pkgconfig

(1) ipopt.pc

ipopt.pc 的 pkg-config 文件,用于描述关于 IPOPT(COIN-OR Interior Point Optimizer)库的信息。pkg-config 是一个用于管理和检索库的编译和链接参数的工具。

prefix=/usr/local                        #库文件所在的根目录
#prefix=${pcfiledir}/../..
exec_prefix=${prefix}                 #指定了可执行文件的安装前缀,通常与 prefix 相同
libdir=${exec_prefix}/lib             #库文件所在的目录路径
includedir=${prefix}/include/coin-or  #头文件所在的目录路径
Name: IPOPT                           #库的名称
Description: Interior Point Optimizer #对库的简短描述
URL: https://github.com/coin-or/Ipopt #库的相关URL
Version: 3.13.2
Cflags: -I${includedir}               #指定了编译时需要包含的头文件路径
Libs: -L${libdir} -lipopt             #指定了链接时需要使用的库文件路径和库名称
Requires.private: coinhsl coinmumps   #指定了在链接时需要的私有库

(2) ColPack.pc

prefix=/usr/local
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include/ColPack
Name: ColPack
Version: 1.0.10
Description: Graph Coloring Library
Requires:
Libs: -L${libdir} -lColPack -Wl,-rpath,${libdir}
-L/usr/local/lib -Wl,-rpath,/usr/local/lib
Cflags: -I${includedir}

(3)adolc.pc

prefix=/usr/local
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include
Name: adolc
Version: 2.6.3
Description: Algorithmic Differentiation Library for C/C++
Requires:
Libs: -L${libdir} -ladolc -Wl,-rpath,${libdir}
-L/usr/local/lib -lColPack -Wl,-rpath,/usr/local/lib
Cflags: -I${includedir}

(4)eigen3.pc

prefix=/usr/local
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include
Name: Eigen3
Version: 3.3.77
Description: Numerical linear algebra library for C++
Requires:
Libs: -Wl,-rpath,${libdir} -L/usr/local/lib
Cflags: -I${includedir} -std=c++11

(5)snopt7.pc

prefix=/usr/local
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include/snopt7
Name: SNOPT7
Version: 7
Description: SNOPT NONLINEAR PROGRAMMING LIBRARY
Requires:
Libs: -L${libdir} -lsnopt7_cpp -Wl,-rpath,${libdir}
-L/usr/local/lib -Wl,-rpath,/usr/local/lib
Cflags: -I${includedir}

6.安装

sudo apt-get install git
sudo apt-get install cmake
sudo apt-get install gfortran
sudo apt-get install g++
sudo apt-get install libboost-dev
sudo apt-get install libboost-system-dev
sudo apt-get install coinor-libipopt-dev
sudo apt-get install libcolpack-dev
sudo apt-get install libadolc-dev
sudo apt-get install gnuplot
sudo apt-get install libeigen3-dev
sudo apt-get install libblas-dev
sudo apt-get install liblapack-dev

7.配置PSOPT

git clone https://github.com/PSOPT/psopt.git
cd psopt; mkdir build; cd build
cmake -DBUILD_EXAMPLES=ON ..
make
sudo make install
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值