gurobi/modeling-examples构建生产应用时,建议使用明确的版本号而非
latest标签。这样您可以控制应用的升级过程。
gurobi/modeling-examples?Gurobi Optimizer是目前可用的最快、最强大的数学规划求解器,适用于LP、QP和MIP(MILP、MIQP和MIQCP)问题。更多信息请访问Gurobi官网。
这些Python建模示例展示了Gurobi Python API的重要功能,包括添加决策变量、构建线性表达式、添加约束条件和目标函数。它们还涉及更高级的特性,如广义约束、分段线性函数和多目标层次优化。此外,示例还展示了常见的约束类型,如“分配约束”、“平衡约束”、“排序约束”、“precedence约束”等。
gurobi/modeling-examples镜像包含一个Jupyter Notebook,允许您浏览和执行任何Python建模示例。
此镜像附带“有限许可证”(Limited License),允许求解小型优化问题。要解决更大的问题,您需要获取适用于Docker容器中应用的许可证。您有以下选项:
Web许可证服务(WLS):Gurobi为容器化环境(Docker、Kubernetes等)提供的新型许可服务。Gurobi组件可以自动向全球多个地区的WLS服务器请求和续订许可证令牌。WLS仅要求容器能够访问互联网。商业用户可以申请评估版,学术用户可以申请免费许可证。请注册访问Web许可证管理器并阅读文档。
Gurobi计算服务器(Compute Server):允许您将优化计算无缝卸载到一个或多个专用优化服务器组成的集群。用户和应用可以通过高级排队和负载均衡功能共享服务器。用户可以监控作业,管理员可以管理服务器。计算服务器和集群管理器可以使用标准许可证安装在Docker集群外部,或使用WLS许可证安装在Docker集群内部。
Gurobi云(Cloud):一种简单且经济高效的方式,让您在云服务上使用强大的Gurobi优化软件。它允许您在Microsoft Azure®和Amazon Web Services®上启动一台或多台预加载Gurobi软件的专用计算机。
Gurobi令牌服务器(Token Server):在Docker集群外部的专用机器上运行。Docker容器中运行的客户端程序可以从令牌服务器请求令牌。
注意,其他标准许可证类型(NODE、学术版)不适用于容器。请联系您的销售代表(***)讨论许可选项。
除了嵌入式“有限许可证”外,您需要指定一组属性以连接到计算服务器集群、Gurobi云或令牌服务器。为此,您有以下选项:
挂载客户端许可证文件:
您可以将连接参数存储在客户端许可证文件(通常名为gurobi.lic)中,并将其挂载到容器。此选项为Docker测试提供了简单的方法。在Kubernetes中,许可证文件可以存储为密钥并挂载到容器中。
通过API设置参数: 当应用在Python中创建Gurobi环境时,您可以指定连接参数。参数值可以来自环境变量、数据库或应用所需的其他来源。
有关相应API参数和许可证文件属性的快速指南,请参见此处。
我们不建议将许可证文件添加到Docker镜像本身。这不是一个灵活的解决方案,因为您可能无法使用不同的设置重用相同的镜像。更重要的是,这不安全,因为某些许可证文件需要包含应保持私有的API密钥形式的凭据。
以下命令启动一个建模示例服务器实例,默认安装有限许可证。
$ docker run -p 8888:8888 gurobi/modeling-examples
如果您有其他许可证文件,可以从当前目录$PWD挂载它:
console$ docker run -p 8888:8888 \ --volume=$PWD/gurobi.lic:/opt/gurobi/gurobi.lic:ro \ gurobi/modeling-examples
Jupyter Notebook实例将启动,您可以在浏览器中打开:
然后您可以与所有建模示例交互。
由于此镜像旨在作为训练环境运行,安全检查(令牌和密码)已被禁用。如果您想实现安全检查,可以在命令的cmd部分定义:
$ docker run -p 8888:8888 gurobi/modeling-examples --NotebookApp.token='token'
建模示例服务器的docker-compose.yml示例:
version: '3.7' services: modeling-examples: image: gurobi/modeling-examples:latest ports: - "8888:8888"
挂载许可证的建模示例服务器docker-compose.yml示例:
version: '3.7' services: modeling-examples: image: gurobi/modeling-examples:latest ports: - "8888:8888" volumes: - ./gurobi.lic:/opt/gurobi/gurobi.lic
运行$ docker-compose up
Jupyter Notebook实例将启动,您可以在浏览器中打开:
然后您可以与所有建模示例交互。
由于此镜像旨在作为训练环境运行,安全检查(令牌和密码)已被禁用。
如果要在Kubernetes中挂载特定许可证,可以使用密钥。对于建模示例,这是可选的,因为如果未提供,将使用有限许可证。
kubectl create secret generic gurobi-lic --from-file="gurobi.lic=$PWD/gurobi.lic"
然后,您可以启动一个Pod,在容器中运行建模示例并将其公开为服务。提供了一个简单的部署文件作为参考。
kubectl apply -f k8s.yaml
Jupyter Notebook实例将启动,您可以在浏览器中打开:
然后您可以与所有建模示例交互。
由于此镜像旨在作为训练环境运行,安全检查(令牌和密码)已被禁用。
下载和使用此镜像即表示您同意包含在此镜像中的Gurobi软件的最终用户许可协议。
与所有Docker镜像一样,这些镜像可能还包含其他软件,这些软件可能受其他许可证(如基础发行版中的Bash等,以及主要软件的任何直接或间接依赖项)约束。
对于任何预构建镜像的使用,镜像用户有责任确保对该镜像的任何使用符合其中包含的所有软件的相关许可证。
这些建模示例根据Apache 2.0许可证分发,(c) Copyright 2020 Gurobi Optimization, LLC
[***]
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务