常见问题
安装和许可配置相关
问: 配置许可时报错
invalid username
是什么原因?答: 此错误表明在申请时username填写错误,使用正确的username重新填表申请即可。关于不同操作系统下如何获取username,请查看 杉数官网求解器COPT申请页 的操作指引,请在申请原因中备注 “用户名填写错误重新申请” ,我们会为您重新发放正确用户名的许可。
问: 下载COPT后,计算机安装的某杀毒软件报告存在病毒,自动将其隔离。
答: 从COPT官方下载链接下载的COPT软件为正式版本,COPT软件开发时未使用任何可疑的病毒行为操作,可以确定是杀毒软件误报,请用户暂时关闭杀毒软件后再下载即可。
问: 验证许可(执行
copt_licgen -v
)后报错:Missing Files
或Invalid Signature
。答: 此类错误表明许可文件配置失败,请参考 安装说明:配置许可文件 检查是否按照许可文件配置的步骤进行,常见原因如下:
当前工作目录下的许可文件和COPT的版本不适配(如:许可文件是4.0版本,而COPT是5.0版本的),请检查
"license.dat"
中的VERSION
和COPT的大版本号是否一致,若不一致请前往 杉数官网求解器COPT申请页 重新申请,我们会为您发放最新的许可。Windows系统中,若COPT软件安装在系统盘(一般为
C
盘)非用户目录下(如:默认安装路径"C:\Program Files\copt70"
,则需要 以管理员权限 打开Windows命令行窗口后,再执行许可获取命令copt_licgen
。
问: 原先已安装了旧版本的COPT Python接口(
coptpy
),现在如何升级到新版本呢?答: 请参考 Python快速入门:升级教程 查看详细步骤。
MacOS系统
问: MacOS系统中调用
coptpy
报错:ImportError: from .coptpywrap import * symbol not found in flat namespace
。答: 在COPT 6.5.12版本之前,可能会出现这种错误。这是因为在MacOS系统中,
coptpy
和Anaconda的架构不匹配。如coptpy
是M芯片 系列(arm64架构),而Anaconda是x86架构的,可以安装支持arm64架构的Anaconda以解决此问题。从COPT 6.5.12开始,针对MacOS系统,我们提供universal 安装包,兼容两种架构,则不会出现上述不匹配情况,通过升级COPT至最新版即可解决此问题。
问: MacOS系统中配置许可时,在终端执行
copt_licgen
命令,报错:command not found: copt_licgen
。答: 这种错误是因为没有配置COPT的相关环境变量,在MacOS系统中,安装COPT后还需配置环境变量,请参考 安装说明:MacOS系统 章节获取详细的安装指引。
问: 在手动配置环境变量时,从文档中直接复制需添加内容至
.zshrc
文件或者.bash_profile
文件中, 导致配置失败。答: 由于文档编码问题,不能直接复制上述环境变量至相应文件中,需要手动输入环境变量的内容。
Windows系统
问: 在Windows系统中,执行
copt_licgen
生成许可文件时,报错无法写入许可文件到硬盘,错误信息如:error opening file
。答: 若COPT软件安装在系统盘(一般为
C
盘)非用户目录下(如:默认安装路径"C:\Program Files\copt65"
,则需要 以管理员权限 打开Windows命令行,再执行许可获取命令copt_licgen
,才能正常写入许可文件到C
盘。 对于用户目录如"C:\Users\shanshu"
下执行许可获取命令,则不需要管理员权限。
问: 在Windows系统中,通过
pip install coptpy
的方式安装COPT Python接口时报错:could not find a version, no matching distribution
,是什么原因?答: 对请勿使用通过Microsoft Store安装的Python,建议从 Anaconda发行版 或者 Python官方发行版 下载Python。
问: 在Windows系统中,通过COPT安装包的方式(
python setup.py install
)安装COPT Python接口, 报错could not create build
。答: 若COPT安装在系统盘(一般为
C
盘)非用户目录下(如:默认安装路径"C:\Program Files\copt70"
,则需要先 以管理员权限 打开命令行窗口后,再执行命令python setup.py install
。
建模求解和功能使用相关
问: 在创建COPT求解环境时,会输出两行版本信息,如果我希望关闭这些信息,应该如何操作呢?
答: 可以在创建求解环境之前,通过在
EnvrConfig
中设置'nobanner'
为'1'
以进行关闭。以Python API为例,具体操作如下:envconfig = coptpy.EnvrConfig() envconfig.set('nobanner', '1') env = coptpy.Envr(envconfig) model = env.createModel()
问: 如何处理模型不可行的情况呢?
答: COPT提供计算IIS和可行化松弛的功能以分析模型不可行的原因:计算IIS会获得最小不可行约束和变量集合,可行化松弛尝试以最小的改动让模型变得可行。详细介绍和用法请查看 不可行模型处理 章节。
问: 使用COPT的矩阵建模方式,在添加矩阵变量时,报错
ValueError: cannot create object arrays from iterator.
是什么原因?答: COPT Python支持的矩阵建模功能有最低版本要求,
NumPy
最低版本要求为1.23,Python
最低版本要求为3.8)。可以通过pip install --upgrade numpy
将NumPy
升级至最新版本。问: 使用Python接口添加模型约束时,如果觉得建模速度慢,有什么建模改进方式吗?
答: COPT python包支持直观地创建线性、二次和半定表达式。对于线性和二次表达式,建议使用
quicksum()
来创建表达式对象; 对于线性 和半定表达式,建议使用psdquicksum()
来创建表达式对象。他们都优化了表达式项的求和,比直接使用加号运算符在建模性能上会好很多。问: 在COPT中创建的变量有默认取值范围吗?
答: 有的,COPT中默认变量下界是0,上界是
COPT.INFINITY
。用户可以通过函数参量 lb 指定变量下界, ub 指定变量上界。
GPU使用相关
问: 启用GPU求解模式对CUDA库的版本有什么要求吗?
答: COPT对CUDA库的最低版本要求是11.7。我们推荐安装CUDA 12.0及以上版本,可以直接使用官方安装包进行安装。如果需要安装CUDA V11版本,最佳实践是分别安装CUDA Driver和CUDA Toolkit:
(1)首先,请单独下载并安装CUDA Driver(针对Linux系统,CUDA Driver最低版本要求是525.60.13;针对Windows系统,CUDA Driver最低版本要求是527.41);
(2)其次,请下载11.7及以上的CUDA官方安装包,在安装时仅安装CUDA Toolkit即可,无需选择CUDA driver。
问: 启用GPU求解模式对GPU架构有什么要求吗?
答: GPU架构至少需要是Maxwell架构及之后的升级版(Maxwell架构是NVIDIA在2014年推出的一种GPU架构,是其先前Kepler架构的升级版)
问: 客户端机器无法正常使用GPU求解模式,常见的报错信息及可能原因有哪些呢?
答: 常见的报错信息及可能原因如下:
(1)求解日志提示
"NO CUDA libraries available"
说明缺失必要的CUDA库函数,可以尝试检查并设置环境变量LD_LIBRARY_PATH
指向CUDA安装目录所在的路径。 (请按照CUDA安装完成后的提示进行配置,Windows系统安装时会自动配置环境变量;Linux系统通常需要手动配置环境变量,目录形如:"/usr/local/cuda/lib64"
);(2)求解报错
"Fail to solve problem"
,通常是由于CUDA Driver的版本过低导致的,请升级Driver版本(Linux系统:525.60.13及以上;Windows系统:527.41及以上)以解决此问题;(3)求解报错
"sparse matrix format CUSPARSE_FORMAT_CSC is not supported"
,通常是由于CUDA Toolkit的版本过低导致的(通常CUDA V11.2至V11.6之间会出现此类报错),请升级CUDA至11.7及以上的版本以解决此问题。问: 我的客户端机器有多个GPU存在,同时设置了参数
GPUDevice
使用指定的GPU编号,为什么在求解时还是只检测到编号为0的GPU呢?答: 请检查环境变量
CUDA_VISIBLE_DEVICES
是否手动设置了指定的GPU设备对CUDA可见,请尝试不要设置该环境变量,以使得COPT求解器能够检测到当前机器上所有可用的GPU。问: 通过Windows系统的WSL(Windows Subsystem for Linux)使用COPT的GPU求解模式,为什么安装了符合版本要求的CUDA库(V12及以上),但还是会报错呢?
答: 请检查CUDA Driver的版本是否符合要求,WSL在安装CUDA时通常会跳过Driver安装,而直接使用Windows里已经安装的Driver,请手动升级CUDA Driver版本,然后重启WSL以解决此问题。