windows下cplex20.1.0的下载、安装、IDE编程及相关问题解决

news2024/11/18 20:43:14

其他文章:

通过0-1背包问题看穷举法、贪心算法、启发式算法(JAVA)

模拟退火(SA)算法实例介绍(JAVA)

遗传算法(GA)实例介绍(JAVA)

CPLEX求解器入门案例

java集成Cplex:Cplex下载、IDEA环境搭建、docker部署

windows下cplex12.6.3的下载、安装、IDE编程及相关问题解决

windows下cplex20.1.0启动报错: ilog.odms.ide.opllang.IloOplLangPlugin

Cplex20.1版本bin包Linux安装过程


参考B站视频:cplex入门到精通

一、下载

进入官网:https://www.ibm.com/cn-zh/analytics/cplex-optimizer

在右上角搜索框中输入“cplex”,并点击搜索。

搜索的结果:

image-20210915003212033

找到下载页面,其中学术版可以免费使用,但是需要使用学校邮箱注册。学术版的cplex的求解规模和约束变量是有限的。也可以花钱买,功能更强大。白瞟学术版即可。这里就不详细说了

如果有需要可以关注我的公众号[诸葛小猿],输入关键字“cplex”(注意:前后不能有空格),即可获得下载地址。

二、安装

获取软件包后:

image-20230525174516670

双击安装:

image-20230525180944634 image-20230525181141429

选择简体中文,并点击确定:

image-20230525181218860

点击下一步:

image-20230525181257247

选择接受协议后,点击下一步:

image-20230525181621905

自定义安装目录(建议不要放在系统C盘),点击下一步:

image-20230525181754914

选择副本目录,选择下一步:

image-20230525181835881

选择关联相关文件(一定要选),选择下一步:

image-20230525181907243

选择更新PATH变量(一定要选),选择下一步:

image-20230525182011131

这里展示了安装的目录(要记住自己安装的这两个目录,后续相关的文件需要到这两个目录里找),选择安装:

image-20230525182057786

安装进度条提醒cplex依赖jre,所以需要提前在电脑上安装java环境,参考JDK安装。

image-20230525182455843

这里提醒了重要信息:Cplex依赖Microsoft Visual C++ 2015 Redistributable Package (x64)。 暂时先忽略,下面继续遇到问题再处理这个问题。

image-20230525182741807

看到上面的界面基本就安装完成了。

上面勾选了“Readme file”时,点击下一步会自动在浏览器中显示readme文件内容,建议勾选,简单读一下readme文件。

上面勾选了“CPLEX Opeimization Studio IDE”时,点击下一步会自动打开编程窗口,建议勾选。

点击下一步:

image-20230525182901301

如果你愿意让IBM收集你使用cplex过程的相关信息,就选是,这里我选择否。点击下一步:

image-20230525192229205

这里可以看到,如果使用Python编程调用CPLEX,请执行一下上面的python安装命令。点击下一步:

image-20230525192411018

点击完成,即完成整个安装过程。

点击完成后,由于勾选了“Readme file”,这里可以看到相关内容。注意浏览器中readme文件的位置,就是我们的安装位置。

image-20230525192529013

点击完成后,由于之前选择了“CPLEX Opeimization Studio IDE”,所以这里会自动打开上面IDE编辑器,并且弹框询问工作空间放在哪里,所谓的工作空间就是后续我们使用ide编辑器写代码时,我们的代码文件保存的目录,这个目录很重要,后续可以在这里找到自己之前写过的代码。建议定义好这个目录。左下角有个选项“将此值作为缺省值并且不再询问”,建议勾选,如果不勾选,以后每次打开IDE编辑器时都会弹框询问。

image-20230525192745189

点击启动后报错了

image-20230525192832595

查看详细信息:

image-20230525192958647

启动报错:Error: “Prepare OPL runtime.” ilog.odms.ide.opllang.IloOplLangPlugin

“准备 OPL 运行时”期间发生了内部错误。“

这个错误的原因就是上面安装时提示的重要信息:Cplex依赖Microsoft Visual C++ 2015 Redistributable Package (x64)。我们的电脑没有安装这个C++的环境。

下载后,双击安装一下64位的软件就好了:

image-20230525193440903

查看安装结果:

image-20230525193606868

这里需要注意的是,不同版本的cplex依赖不同版本的Microsoft Visual C++ ,一般可以向下兼容。

关闭cplex后,从window左下角“开始”中再次重启CPLEX Studio IDE 20.1.0:

image-20230525194005777

即可打开下面的IED代码编辑器:

image-20230525194154658

上面的欢迎窗口中间有四个功能:概述、教程、样本、新增内容,可以学习一下相关使用。

关闭欢迎页面,现在就可以在编辑器中建模求解了。

image-20210915002138085

三、IDE的使用

安装完成后,在电脑的左下角开始按钮中可以看到:

image-20230525194502062

这里有相关的使用说明,前两个是说明,有需要的可以自己读(如下);第三个是IDE的启动按钮;第四个是交互式的约束规划引擎启动按钮;第五个是交互式的数学规划启动按钮。

image-20230525195004668

四、编程测试

4.1.创建项目

  • 创建OPL项目

image-20210915231444895

  • 选择项目位置

image-20210915231729367

  • 编程窗口

    image-20230525195326318

4.2.不使用集合语言编程(简单编程)

模型比较简单、变量约束比较少的情况,可以直接编程,比较简单。

  • 模型:
 min z = 2x + 3y
 s.t.    2x + 3y >= 20 
         x + y >= 10
         x,y>=0且为整数
  • 代码:
 // 1.定义决策变量          x,y>=0且为整数
 dvar int+ x;
 dvar int+ y;
 
 // 2.定义目标函数  min z = 2x + 3y
 minimize 2*x + 3*y;
 
 // 3.定义约束条件
 subject to {
 	 2*x + 3*y >= 20;
 	  x + y >= 10;
 }
  • 运行方式一:

image-20230525195528481

运行后看到“问题”窗口报错了,具体错误原因出现了乱码,问题类型:OPL标记问题。原因出在项目中“运行配置”文件夹下的文件是中文的原因。右键这个“配置1(缺省值)”,重命名为config1,修改英文名后右键运行。最终的结果在“解”这个对话框中。

image-20230525195702947

  • 运行方式二

或者直接使用命令运行:oplrun -p <路径\项目名>

这里我这个项目的路径是D:\IBM\workspace\firstModelTest

打开命令行窗口运行命令:

image-20210915234702097

4.3.使用集合语言编程

模型比较复杂时可以使用这个方式。

4.3.1.背包问题

比如一个背包问题的模型如下(假如n、p、w、C是三个已知量):

image-20210916221953261

代码:

// 1.定义已知量
int n=4;
int C=13;
int p[1..4]=[12,11,9,8];
int w[1..4]=[8,6,4,3];

// 2.定义决策变量
dvar boolean x[1..n];

// 3.目标函数
maximize sum(j in 1..n) p[j] * x[j];

// 4.约束条件
subject to{
	sum(j in 1..n) w[j] *x[j] <= C;
}

运行结果:

image-20230525200142521

4.3.2.指派问题

模型:

image-20210916225708810

代码:

// 1.定义已知量
int n = 5;
int c[1..5][1..5] = 
[
[3,8,2,10,3],
[8,7,2,9,7],
[6,4,2,7,5],
[8,4,2,3,5],
[9,10,6,9,10]
];

// 2.定义决策变量
dvar boolean x[1..n][1..n];

// 3.目标函数
minimize sum(i in 1..n) sum(j in 1..n) c[i][j] * x[i][j];

// 4.约束条件
subject to {
  forall(j in 1..n) sum(i in 1..n) x[i][j] == 1;
  forall(i in 1..n) sum(j in 1..n) x[i][j] == 1;
}

运行结果:

image-20230525200342526

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/569554.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

css面试复习

目录 css常用网址: css三种书写样式 css属性 color(如字体颜色) text-decoration(如下划线) text-align(文字对齐) 字体属性 font-size font-family(字体名称) font-weight(字体粗细) font-style(斜体) line-height font缩写属性 css常见选择器 通用选择器 简单…

小黑子—MySQL数据库:第一章 -基础篇

MySQL数据库入门1.0 MySQL基础篇1. MySQL概述1.1 MySQL相关概念1.2 MySQL的安装及启动1.3 数据模型 2. SQL2.1 SQL的通用语法2.2 SQL语句的分类2.3 DDL语句2.3.1 DDL - 数据库操作2.3.2 DDL - 表操作 - 查询2.3.3 DDL - 表操作 - 创建2.3.4 DDL - 表操作 - 数据类型2.3.5 DDL -…

搭建stm32电机控制代码框架(三)——Stm32CubeMx配置ADC采样

电机控制另一个关键的模块就是ADC采样&#xff0c;这个模块配置的好坏决定了采样电流和电压的精准度&#xff0c;因此有必要对其进行深入学习。 简介&#xff1a; STM32 在片上集成的ADC 外设非常强大。STM32F103xC、STM32F103xD 和STM32F103xE增强型产品内嵌3个12位的ADC&am…

JDK8-JDK17中的新特性(var类型推断、模式匹配、Record、密封类)

文章目录 1. 新语法结构1.1 Java的REPL工具&#xff1a; jShell命令1.2 异常处理之try-catch资源关闭1.3 局部变量类型推断1.4 instanceof的模式匹配1.5 switch表达式1.6 文本块1.7 Record1.8 密封类 2. API的变化2.1 Optional类2.2 String存储结构和API变更2.3 JDK17&#xff…

vue-element-admin实践系列(二)初始化系统的页面元素

vue-element-admin实践系列 vue-element-admin实践系列(一)代码部署及运行demovue-element-admin实践系列(二)初始化系统的页面元素 文章目录 vue-element-admin实践系列1、修改默认参数1.1 修改启动端口1.2 修改网页title1.3 修改网站 ico1.4 效果如下 2、自定义左侧导航栏2.…

Fourier分析入门——第9章——Fourier系数的假设检测

目录 第9章 Fourier系数的假设检验 9.1 引言 9.2 回归分析(Regression analysis) 9.3 带限信号(Band-limited signals) 9.4 可信区间(Confidence intervals) 9.5 Fourier系数的多元(或多变量)统计分析(Mulitvariate statistical analysis of Fourier coefficients) 第9章 …

Three.js--》实现3d球形机器人模型展示

目录 项目搭建 初始化three.js基础代码 设置环境纹理 加载机器人模型 添加光阵 今天简单实现一个three.js的小Demo&#xff0c;加强自己对three知识的掌握与学习&#xff0c;只有在项目中才能灵活将所学知识运用起来&#xff0c;话不多说直接开始。 项目搭建 本案例还是…

(学习日记)AD学习 #4

写在前面&#xff1a; 由于时间的不足与学习的碎片化&#xff0c;写博客变得有些奢侈。 但是对于记录学习&#xff08;忘了以后能快速复习&#xff09;的渴望一天天变得强烈。 既然如此 不如以天为单位&#xff0c;以时间为顺序&#xff0c;仅仅将博客当做一个知识学习的目录&a…

C4D R26 渲染学习笔记 建模篇(0):建模常识

往期文章 C4D R26 渲染学习笔记&#xff08;1&#xff09;&#xff1a;C4D版本选择和初始UI框介绍 C4D R26 渲染学习笔记&#xff08;2&#xff09;&#xff1a;渲染流程介绍 C4D R26 渲染学习笔记&#xff08;3&#xff09;&#xff1a;物体基本操作快捷键 C4D如何建模 默认…

TiDB安装简介

文章目录 一、TiDB概述1、简介2、OLAP和OLTP3、与MySQL兼容性 二、架构三、安装1、本地版安装2、单机版集群安装2.1 概述2.2 安装2.3 访问集群 3、配置文件地址 四、使用方式1、基础SQL2、历史数据查询 一、TiDB概述 官网地址 https://docs.pingcap.com/zh/tidb/stable/quick…

(浙大陈越版)数据结构 第三章 树(上) 3.2 二叉树及存储结构

目录 3.2.1 二叉树的定义及性质 定义: 二叉树五种基本形态&#xff1a; 特殊二叉树 二叉树的几个重要性质 二叉树的抽象数据类型定义 操作集&#xff1a; 常用遍历&#xff1a; 3.2.2 二叉树的存储结构 顺序存储结构 数组实现 链表实现 3.2.1 二叉树的定义及性质 …

RK3588平台开发系列讲解(项目篇)YOLOv5部署测试

平台内核版本安卓版本RK3588Linux 5.10Android 12文章目录 一、YOLOv5环境安装二、YOLOv5简单使用2.1、获取预训练权重文2.2、YOLOv5简单测试2.3、转换为rknn模型2.4、部署到 RK 板卡三、airockchip/yolov5简单测试3.1、转换成rknn模型并部署到板卡沉淀、分享、成长,让自己和他…

PyTorch-Transforms

目录 1. 基本知识 2. 常见的Transforms 2.1 ToTensor的使用 2.2 Normalize的使用 2.3 Resize的使用 2.4 Compose的使用 2.5 RandomCrop的使用 1. 基本知识 图片引用来自b站up主&#xff1a;我是土堆 tf.py&#xff08;如何使用transforms里面的工具&#xff09; 具体…

1 echarts与map相遇

echarts与map 版本 "echarts": "^5.1.2","echarts-gl": "^2.0.9",效果 基本方法 echarts中地图大多是以地理坐标为主&#xff0c;数据格式使用geojson数据格式。geojson是GIS数据格式中第二常用格式&#xff0c;使用GIS软件都能实现…

英文论文(sci)解读复现【NO.11】一种先进的基于深度学习模型的植物病害检测:近期研究综述

此前出了目标检测算法改进专栏&#xff0c;但是对于应用于什么场景&#xff0c;需要什么改进方法对应与自己的应用场景有效果&#xff0c;并且多少改进点能发什么水平的文章&#xff0c;为解决大家的困惑&#xff0c;此系列文章旨在给大家解读发表高水平学术期刊中的 SCI论文&a…

简单个人电话号码查询系统

系列文章 任务19 简单个人电话号码查询系统 文章目录 系列文章一、实践目的与要求1、目的2、要求 二、课题任务三、总体设计1.存储结构及数据类型定义2.程序结构3.所实现的功能函数 四、小组成员及分工五、 测试文件读取添加联系人删除联系人修改联系人查询联系人退出 六、源代…

(三) PID控制中的噪声过滤

在前面的章节里&#xff0c;我们谈到了积分环节由于执行器的物理限制导致的积分项Wind-up&#xff0c;通过设置饱和限幅器&#xff0c;选择性关闭积分环节来完成Wind-up问题。 今天我们要解决的问题就是微分环节可能存在的问题。通过传感器我们可以观测出一个被控量的大小&…

奇偶校验位

原理 奇偶校验位有两种类型&#xff1a;偶校验位与奇校验位。 以偶校验位来说&#xff0c;如果一组给定数据位中1的个数是奇数&#xff0c;补一个bit为1&#xff0c;使得总的1的个数是偶数。例&#xff1a;0000001, 补一个bit为1, 00000011。 以奇校验位来说&#xff0c;如果给…

电子科技大学编译原理复习笔记(二):数据类型

目录 前言 重点一览 引言 内部类型 内部类型的特点 内部类型的优越性 用户定义类型 ⭐超重点&#xff1a;六种数据类型聚合方式 ⭐抽象数据类型&#xff08;重点、考点&#xff09; 类型操作 类型检查 类型转换 类型等价 实现模型 本章小结 前言 本复习笔记基于…

Spark 3:Spark Core RDD持久化

RDD 的数据是过程数据 RDD 的缓存 # coding:utf8 import timefrom pyspark import SparkConf, SparkContext from pyspark.storagelevel import StorageLevelif __name__ __main__:conf SparkConf().setAppName("test").setMaster("local[*]")sc SparkC…