首页 > 系统相关 >linux服务器下安装cbc和ipopt求解器【踩坑总结】

linux服务器下安装cbc和ipopt求解器【踩坑总结】

时间:2024-01-10 10:44:35浏览次数:36  
标签:cbc ThirdParty make echo git usr linux cd ipopt

安装CBC求解器

CBC求解器是一个C++库,我们可以通过以下命令在Linux系统中进行安装:

sudo apt-get install coinor-cbc

对于Windows操作系统,可以从CBC官方网站下载。
安装完成后,我们可以使用CBC求解器来解决线性规划问题。
例如用pyomo求解

from pyomo.environ import *
model = ConcreteModel() # 定义模型
model.x = Var(within=NonNegativeReals) # 声明决策变量 x
model.y = Var(within=NonNegativeReals) # 声明决策变量 y
model.obj = Objective(expr=model.x + model.y, sense = minimize) # 声明目标函数为 x+y, minimize 表示极小化
model.constrs = Constraint(expr=model.x + model.y <= 1) # 添加约束 x+y <= 1
model.write('model.lp') # 输出模型文件
model.pprint() # 打印模型信息
opt = SolverFactory('cbc') # 指定Gurobi为求解器
solution = opt.solve(model) # 调用求解器求解

安装ipopt求解器

该方案是手动编译源码来实现。【可能还有其他的办法,目前我只实现了这个】
运行如下脚本来实现,需要预先下载好一些源码文件

#!/bin/bash
echo "Compile ipopt and dependencies:" # echo is used to printf in terminal
echo "dependencies: gcc g++ gfortran git patch wget pkg-config liblapack-dev libmetis-dev libblas-dev"
apt-get update
apt-get -y upgrade
apt install build-essential
apt-get install -y gcc g++ gfortran git patch wget pkg-config liblapack-dev libmetis-dev libblas-dev vim
echo "===========================dependencies: over====================================="
if [ ! -d "/Ipopt_pkg" ]; then
  mkdir /Ipopt_pkg
fi
cd Ipopt_pkg || exit
unzip Ipopt_pkg.zip
echo "===========================make ASL==========================="
if [ ! -d "/ThirdParty-ASL" ]; then
  git clone https://github.com/coin-or-tools/ThirdParty-ASL.git
fi
cd ThirdParty-ASL || exit
./get.ASL
./configure
make
make install
cd ..
echo "===========================make HSL==========================="
if [ ! -d "/ThirdParty-HSL" ]; then
  git clone https://github.com/coin-or-tools/ThirdParty-HSL.git
fi

cp coinhsl.zip ThirdParty-HSL
cd ThirdParty-HSL || exit
unzip coinhsl.zip
./configure
make
make install
cd ..
echo "===========================make Mumps==========================="
if [ ! -d "/ThirdParty-Mumps" ]; then
  git clone https://github.com/coin-or-tools/ThirdParty-Mumps.git
fi
cd ThirdParty-Mumps || exit
./get.Mumps
./configure
make
make install
cd ..
echo "===========================make Ipopt==========================="
if [ ! -d "/Ipopt" ]; then
  git clone https://github.com/coin-or/Ipopt.git
fi
cd Ipopt || exit
mkdir build
cd build || exit
../configure
make
make test
make install
echo "===========================Improve the environment==========================="
cd /usr/local/include || exit
cp coin-or coin -r
ln -s /usr/local/lib/libcoinmumps.so.3 /usr/lib/libcoinmumps.so.3
ln -s /usr/local/lib/libcoinhsl.so.2 /usr/lib/libcoinhsl.so.2
ln -s /usr/local/lib/libipopt.so.3 /usr/lib/libipopt.so.3
echo "Add the/usr/local/lib directory to the configuration file of the shared library"
echo "/usr/local/lib" >> /etc/ld.so.conf
ldconfig
echo "===========================Compile ipopt and dependencies: over!==========================="

标签:cbc,ThirdParty,make,echo,git,usr,linux,cd,ipopt
From: https://www.cnblogs.com/aimoboshu/p/17955987

相关文章

  • 工作三年,还不会Linux配置开机自启动jar包吗
    Linux配置开机自启动jar包方式1:使用systemd服务要在Linux上配置开机自启动Jar包,可以按照以下步骤进行操作:创建一个启动脚本首先,创建一个启动脚本,用于启动你的Jar包。在终端中使用编辑器(如vi或nano)打开一个新文本文件,并添加以下内容:#!/bin/bashjava-jar/path/to/your/......
  • Linux服务Systemd笔记
    Systemd简介从CentOS7.x以后,RedHat系列放弃了一直使用的init启动脚本的方式管理服务,改用systemd这个启动服务管理机制。该机制的好处有:平行处理服务,加速开机流程,systemd可以让所有的服务同时启动。服务依赖性自我检查。对服务依据功能进行分类,将多个服务集合成一个群组。......
  • Linux常用命令分享
    $命令行提示符粗体表示命令斜体表示参数  filename,file1,file2都是文件名。有时文件名有后缀,比如file.zip  command命令名  dir文件夹名  string字符串  username用户名  groupname组名  regex正则表达式  path路径  d......
  • 27个Linux文档编辑命令
    Linuxcol命令Linuxcol命令用于过滤控制字符。在许多UNIX说明文件里,都有RLF控制字符。当我们运用shell特殊字符">"和">>",把说明文件的内容输出成纯文本文件时,控制字符会变成乱码,col指令则能有效滤除这些控制字符。Linuxcolrm命令Linuxcolrm命令用于滤掉指定的行。colrm指令从标......
  • Linux/Oracle-说说我知道的date
    在linux系统中,你可以直接使用命令date查看当前操作系统的时间。例如:--在UOS中,这样显示ywbaoyw@xxx@baoyw-b:~/Desktop$date2024年01月09日星期二11:18:10CSTywbaoyw@xxx@baoyw-b:~/Desktop$--在Linux中,这样显示[root@oracle-baoyw]#dateTueJan911:19:49CTS2024[r......
  • Linux下PCI设备驱动开发详解(八)
    Linux下PCI设备驱动开发详解(八)RIFFA的Linux驱动文件夹下有6个C源码文件,riffa_driver.c、riffa_driver.h、circ_queue.c、circ_queue.h、riffa.c、riffa.h。其中riffa.c和riffa.h不属于驱动源码,它们是系统函数调用驱动封装的一层接口,属于用户态应用程序的一部分。在讲解riffa之前,我......
  • 使用Python的requests库在Linux中进行HTTP通信
    在Linux中,使用Python的requests库进行HTTP通信是一种高效且简洁的方法。requests库为发送HTTP请求提供了丰富的功能,包括GET、POST、PUT、DELETE等常见的HTTP方法,以及处理cookies、会话、参数等高级功能。首先,确保您的Linux系统已经安装了Python和requests库。如果尚未安装,可以使用......
  • 使用bash脚本在Linux中发送HTTP GET请求
    在Linux中,使用bash脚本发送HTTPGET请求是一种常见的自动化任务。下面是一个简单的bash脚本示例,用于发送HTTPGET请求并处理响应:bash复制代码#!/bin/bash#定义URLurl="http://example.com" #发送GET请求并获取响应response=$(curl-s"$url")#检查响应状态码if [$?-eq......
  • 在Linux中设置HTTP代理服务器
    在Linux中设置HTTP代理服务器涉及到几个关键步骤。下面是一个简单的指南,帮助你设置一个基本的HTTP代理服务器:1. 选择代理软件:有许多软件可以用来设置HTTP代理服务器,其中一些流行的选择包括Squid、Privoxy和Polipo。在本指南中,我们将使用Squid作为示例。2. 3. 安装Squid:首先,你需......
  • Linux中虚拟网卡是什么?有何作用?
    网卡是一块用来允许计算机在计算机网络上进行通讯的计算机硬件,它使得用户可以通过电缆或无线相互连接。而在Linux操作系统中,网卡驱动中又内含了很多虚拟网卡,那么Linux中虚拟网卡是什么?有何作用?我们来看看具体内容介绍。在Linux中,虚拟网卡是一种虚拟网络设备,它允许将多个......