常见问题

安装和许可配置相关

  • 问: 配置许可时报错 invalid username 是什么原因?

    答: 此错误表明在申请时username填写错误,使用正确的username重新填表申请即可。关于不同操作系统下如何获取username,请查看 杉数官网求解器COPT申请页 的操作指引,请在申请原因中备注 “用户名填写错误重新申请” ,我们会为您重新发放正确用户名的许可。

  • 问: 下载COPT后,计算机安装的某杀毒软件报告存在病毒,自动将其隔离。

    答: 从COPT官方下载链接下载的COPT软件为正式版本,COPT软件开发时未使用任何可疑的病毒行为操作,可以确定是杀毒软件误报,请用户暂时关闭杀毒软件后再下载即可。

  • 问: 验证许可(执行 copt_licgen -v )后报错: Missing FilesInvalid Signature

    答: 此类错误表明许可文件配置失败,请参考 安装说明:配置许可文件 检查是否按照许可文件配置的步骤进行,常见原因如下:

    1. 当前工作目录下的许可文件和COPT的版本不适配(如:许可文件是4.0版本,而COPT是5.0版本的),请检查 "license.dat" 中的 VERSION 和COPT的大版本号是否一致,若不一致请前往 杉数官网求解器COPT申请页 重新申请,我们会为您发放最新的许可。

    2. 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 numpyNumPy 升级至最新版本。

  • 问: 使用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以解决此问题。