Cplex安装简介
- 格式:pdf
- 大小:138.17 KB
- 文档页数:1
Matlab是一种强大的科学计算软件,它不仅可以进行数据分析和可视化,还可以进行数值计算和优化问题求解。
而Cplex是一种著名的数学优化软件包,可以用来解决线性规划、整数规划、混合整数规划等问题。
在本文中,我们将介绍如何在Matlab中调用Cplex来求解优化问题,并给出一个简单的例子,帮助读者更好地理解这个过程。
【步骤】1. 安装Matlab和Cplex我们需要在电脑上安装Matlab和Cplex软件。
Matlab全球信息湾上有学术版可以免费下载,而Cplex是商业软件,需要购买授权。
安装完成后,我们需要将Cplex的路径添加到Matlab的搜索路径中,以便Matlab可以找到Cplex的相关函数。
2. 编写Matlab脚本接下来,我们需要编写一个Matlab脚本来调用Cplex求解优化问题。
我们需要定义优化问题的目标函数、约束条件和变量范围。
我们可以使用Cplex的函数来创建优化问题,并设置相应的参数。
我们调用Cplex的求解函数来求解这个优化问题。
以下是一个简单的例子:定义优化问题f = [3; 5; 2]; 目标函数系数A = [1 -1 1; 3 2 4]; 不等式约束系数b = [20; 42]; 不等式约束右端项lb = [0; 0; 0]; 变量下界ub = []; 变量上界创建优化问题problem = cplexoptimset();problem.Display = 'on'; 显示求解过程[x, fval, exitflag, output] = cplexmilp(f, A, b, [], [], [], [], lb, ub, [], problem);显示结果disp(['最优解为:', num2str(x)]);disp(['目标函数值为:', num2str(fval)]);disp(['退出信息为:', output.cplexstatusstring]);```在这个例子中,我们定义了一个线性整数规划问题,目标函数为3x1 + 5x2 + 2x3,约束条件为x1 - x2 + x3 <= 20和3x1 + 2x2 + 4x3 <= 42。
cplex原理宝子!今天咱来唠唠Cplex这个超有趣的东西的原理呀。
Cplex呢,就像是一个超聪明的小管家,专门处理那些优化问题的。
你想啊,在生活里我们经常会碰到各种需要找到最佳方案的事儿,就像你要出门旅行,怎么安排行程能玩最多的景点还花最少的钱,这就是个优化问题,Cplex就擅长干这个。
它的原理呢,有点像在一个超级大的迷宫里找出口。
比如说,我们有好多的约束条件,这就好比迷宫里的墙壁啊、陷阱啥的。
这些约束条件规定了哪些路能走,哪些路不能走。
像在安排生产计划的时候,可能有机器的生产能力限制、原材料的数量限制这些约束,Cplex就得在这些限制里面去寻找那个最优解。
Cplex在这个大迷宫里开始探索的时候,它会运用一些超级厉害的算法。
这算法就像是它的小地图和指南针。
有一种算法就像是从一个点开始,然后慢慢向周围扩展,去看看哪个方向能让目标函数变得更好。
比如说目标是让利润最大化,那它就朝着利润可能增加的方向走。
这就好比你在找宝藏,你知道宝藏在一个方向能让你变得更富有,你就朝着那个方向走呗。
还有哦,Cplex在处理问题的时候,它会把那些复杂的数学模型转化成它能理解的形式。
这就像是把一篇超级难的文言文翻译成大白话一样。
那些数学公式、变量啥的,在它眼里就像是不同的小玩具,它要把这些小玩具按照规则摆弄好,找到那个最完美的组合。
比如说在物流配送问题里,货物的数量、车辆的载重、运输的距离这些变量,Cplex要把它们组合起来,让运输成本最低。
它还有一个很神奇的地方呢,就是它可以处理超级大规模的问题。
你想啊,要是有成千上万个变量和约束条件,这就像一个超级巨大的拼图,每个小块都得放在正确的位置。
Cplex就有这个本事,它不会被这么多的信息给搞晕,而是有条不紊地去分析、去计算。
这就像一个超级有耐心的小朋友在拼一个超级大的拼图,一块一块地试,直到拼出最完美的图案。
而且呀,Cplex在寻找最优解的过程中,它不是盲目地乱找。
它会根据之前的经验来调整自己的搜索策略。
matlab ceplex implies用法Matlab和Cplex在数值计算、优化问题等领域都扮演着重要的角色。
在Matlab软件中,可以通过使用Cplex库来求解线性规划、整数规划、混合整数规划等多种优化问题。
本文将介绍Matlab中Cplex库的基本用法,并以步骤的形式解释如何使用Cplex来解决优化问题。
1. 安装Cplex和Matlab首先,要使用Cplex库,需要安装Cplex软件包。
可以从IBM官网上下载Cplex软件,并按照安装向导进行安装。
安装完成后,需要将Cplex的安装路径添加到Matlab的路径中,以便Matlab可以找到Cplex库。
2. 导入Cplex库在Matlab中,可以使用addpath函数将Cplex库的路径添加到Matlab 的搜索路径中。
为了使用Cplex库的函数和类,需要使用import命令将这些函数和类导入到当前的Matlab会话中。
3. 创建Cplex对象在Matlab中,可以使用Cplex类来创建一个优化器对象。
通过创建Cplex 对象,可以设置求解器的参数、定义优化问题的变量和约束条件,并使用求解器来求解问题。
4. 定义变量通过调用Cplex类的addCols函数,可以添加变量到优化问题中。
需要指定变量的类型(例如连续变量、整数变量),以及变量的上下界。
可以使用变量的下标来引用变量,以便在后续的约束条件和目标函数中使用。
5. 定义约束条件可以使用addRows函数向优化问题中添加约束条件。
约束条件可以是线性等式或线性不等式,且可以包含变量和常数。
需要为每个约束条件指定等号或不等号,并提供约束条件的系数。
6. 定义目标函数使用setObjCoeff函数可以设置优化问题的目标函数。
目标函数可以是线性函数,其中包含问题的变量和常数。
需要为每个变量指定目标函数中的系数,以便在求解过程中得到正确的结果。
7. 设置求解器参数可以使用Cplex对象的setParam函数来设置求解过程的参数。
CPLEX 12目录1. 简介 (3)2. 怎么用Cplex运行模型 (3)3. Cplex概览 (3)3.1线性规划 (3)3.2二次约束规划 (4)3.3混合整数规划 (4)3.4 可行松弛性 (5)3.5 解池:产生和保持多解 (5)4. GAMS选项 (9)5. Cplex选项总结 (10)5.1 预处理和一般选项 (10)5.2 单纯形法选项 (12)5.3 单纯形法的限制选项 (12)5.4 单纯形法的容限选项 (13)5.5 障碍特殊选项 (13)5.6 筛选特殊选项 (13)5.7 混合整数规划选项 (13)5.8 混合整数规划限制选项 (15)5.9 混合整数规划解池选项 (16)5.10 混合整数规划容许度选项 (16)5.11输出选项 (17)5.12 GAMS/Cplex选项文件 (17)6. 特殊备注 (18)6.1 物理内存限制 (18)6.2 使用特殊有序集 (18)6.3 使用半连续半整数变量 (19)6.4为求解MIP问题耗尽内存 (19)6.5 不能证明整数最优 (20)6.6 从混合整数规划的解开始 (20)6.7 使用可行松弛性 (21)7. GAMS/ CPLEX日志文件 (22)8. CPLEX选项的详细说明 (25)GAMS/Cplex是一种用于GAMS (The General Algebraic Modeling System,通用代数建模系统)的求解器,它使得用户可以把GAMS(通用代数建模系统的)的高级建模功能跟Cplex优化器的优势结合起来。
Cplex优化器是为能快速、最少用户干预地解决大型、复杂问题而设计的。
求解线性、二次约束和混合整数规划问题的Cplex算法现在已提供访问(针对恰当的许可证)。
尽管现存有多种求解工具,但是,GAMS/Cplex能自动地为特定问题计算最优值和设置大部分选项。
本文接下来总结了GAMS/Cplex的所有Cplex选项。
cplex安装教程1. 首先,下载适用于您的操作系统的IBM ILOG CPLEX安装程序。
您可以从IBM官方网站或其它可信的软件下载网站获取该软件。
2. 执行安装程序并开始安装。
按照安装向导中的提示进行操作。
3. 在安装过程中,您可以选择安装C++和Java语言绑定,以便在这些语言中使用CPLEX。
根据您的需求选择适当的选项。
4. 在安装完成后,您需要设置环境变量,以便系统能够找到CPLEX的安装路径。
- 对于Windows用户,打开控制面板,并进入“系统和安全”->“系统”->“高级系统设置”。
在弹出的窗口中,选择“高级”选项卡,并点击“环境变量”按钮。
在系统变量中,找到“Path”变量,并将CPLEX的安装路径添加到变量值中。
- 对于Linux用户,在终端中使用文本编辑器打开~/.bashrc文件。
在文件末尾添加以下行,并保存文件。
```exportLD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/cplex/bin/x86-64_linux```5. 环境变量设置完成后,您可以打开终端或命令提示符并输入以下命令来验证CPLEX是否成功安装:```cplex```如果安装成功,您将看到CPLEX的命令行界面。
6. 安装完成后,您可以根据需要编写和运行CPLEX程序。
可以使用C++、Java或其它支持CPLEX的编程语言来编写程序。
- 对于C++,您需要包含适当的头文件并链接CPLEX库文件。
- 对于Java,您需要在您的项目中包含适当的JAR文件,并设置正确的类路径。
- 根据您选择的编程语言和开发环境,参考CPLEX的官方文档以获取更详细的安装和编程说明。
这样,您就可以完成CPLEX的安装并开始使用它来解决优化问题了。
注意,CPLEX是商业软件,您可能需要购买许可证才能使用全部功能。
【CPLEX教程02】配置Cplex的Java环境以及API说明因为⼩编⼀般⽤的C++和Java⽐较多,⽽且现在开发⼤型算法⽤这类⾯向对象的编程语⾔也⽅便得多。
基于上⾯的种种考虑,加上时间和精⼒有限,所以就暂时只做C++和Java的详细教程辣。
关于matlab和python的也许后续会补上的吧。
然后在开始之前,照例先把环境给配置好。
那么就先配置java的环境吧。
CPLEX系列教程可以关注我们的公众号哦!获取更多精彩消息!前⾯已经说了怎么下载和安装cplex了,如图:确保已经安装上这个版本,我们才能开始下⼀步的⼯作。
java⼩编⼀般⽤的ide是eclipse,就配置⼀下关于eclipse的。
其他的开发环境请⼤家⾃⾏设置哈。
新建⼀个⼯程,添加⼀个package,添加⼀个带main函数的类。
代码先别写。
在项⽬右键,选择build path -> Configure Build Path……找到Libraries->Add External JARs……,然后定位到\lib这个⽂件夹,把cplex.jar给添加进去。
到这⼀步还不⾏,还需要把CPLEX的动态运⾏库给添加进去,好让java程序运⾏的时候能够找到,具体做法是:在项⽬右键,选择build path -> Configure Build Path……,找到Libraries,点开JRE System Library,在Native library location那⾥点edit,把cplex下的\bin\x64_win64⽂件夹给添加进去,这⾥⾯有程序运⾏所需要动态库。
⼀个简单的线性规划问题:把下⾯代码复制进main函数⾥⾯:try {IloCplex cplex = new IloCplex(); // creat a modeldouble[] lb = {0.0, 0.0, 0.0};double[] ub = {40.0, Double.MAX_VALUE, Double.MAX_VALUE};IloNumVar[] x = cplex.numVarArray(3, lb, ub);double[] objvals = {1.0, 2.0, 3.0};cplex.addMaximize(cplex.scalProd(x, objvals));double[] coeff1 = {-1.0, 1.0, 1.0};double[] coeff2 = {1.0, -3.0, 1.0};cplex.addLe(cplex.scalProd(x, coeff1), 20.0);cplex.addLe(cplex.scalProd(x, coeff2), 30.0);if (cplex.solve()) {cplex.output().println("Solution status = " + cplex.getStatus());cplex.output().println("Solution value = " + cplex.getObjValue());double[] val = cplex.getValues(x);for (int j = 0; j < val.length; j++)cplex.output().println("x" + (j+1) + " = " + val[j]);}cplex.end();} catch (IloException e) {System.err.println("Concert exception caught: " + e);}点击运⾏,出现下⾯的结果就成功啦:最后,如果提⽰找不到build path ,share libraries什么的,请确保第⼆步配置正确!⾄此,我们已经能愉快使⽤cplex啦。
java cplex调用示例如何在Java中使用CPLEX进行求解使用IBM CPLEX是一种常见的求解线性规划和整数规划问题的方法。
CPLEX是一种高效的数学优化库,它提供了多种求解算法和优化策略。
在本文中,我将带你一步一步了解如何在Java中使用CPLEX进行求解,并提供一些示例代码。
1. 安装CPLEX库首先,你需要将CPLEX库安装到你的计算机上。
CPLEX可以从IBM官网上下载,并根据相应的操作系统进行安装。
安装完成后,你将获得一个包含CPLEX 库文件的文件夹。
2. 配置Java项目在Java项目中使用CPLEX之前,你需要配置相应的构建路径。
这可以通过在Eclipse或IntelliJ等集成开发环境中导入CPLEX库来完成。
你可以选择将CPLEX 库文件直接复制到项目的lib文件夹中,或者通过修改项目的构建路径来引用库文件。
完成后,你可以开始在Java代码中使用CPLEX库。
3. 导入CPLEX库在Java代码文件的顶部,你需要导入CPLEX库。
这可以通过使用Java的import 语句来完成。
例如,在使用CPLEX的线性规划功能之前,你需要导入IloCplex 类。
导入语句如下:javaimport ilog.concert.*;import ilog.cplex.*;4. 创建求解器在使用CPLEX进行求解之前,你需要创建一个求解器对象。
这个对象将提供CPLEX求解算法的接口,并负责加载问题和求解。
你可以使用IloCplex类来创建一个求解器对象。
示例代码如下:javaIloCplex cplex = new IloCplex();5. 定义决策变量在使用CPLEX求解问题之前,你需要定义问题的决策变量。
CPLEX使用IloNumVar类表示决策变量。
你需要指定决策变量的类型、上下界和名称。
示例代码如下:javaint numVars = 3;double[] lb = {0.0, 0.0, 0.0};double[] ub = {40.0, 3.0, Double.MAX_VALUE};IloNumVar[] x = cplex.numVarArray(numVars, lb, ub);在上面的示例中,我们定义了3个决策变量,它们的下界分别为0.0、0.0和0.0,上界分别为40.0、3.0和无穷大。
yalmip调用cplex语句-回复如何使用YALMIP调用CPLEX语句引言:YALMIP是一个用于建模和求解数学优化问题的MATLAB工具箱。
它为用户提供了一个简单而灵活的界面,使得将实际问题转化为优化问题变得非常容易。
而CPLEX是一个强大的商业数学编程语言和求解器,可用于求解各种优化问题。
本文将详细介绍如何使用YALMIP调用CPLEX语句,并提供一些实例以帮助读者更好地理解。
第一步:安装YALMIP和CPLEX首先,确保已在MATLAB中安装了YALMIP工具箱。
可以在YALMIP的官方网站上找到安装指南和教程。
接下来,需要安装CPLEX求解器。
CPLEX 提供了免费的学术许可证,可以在IBM的网站上获得。
安装过程会有一些详细说明,如何将CPLEX与MATLAB集成。
第二步:设置YALMIP调用CPLEX在MATLAB中,首先加载YALMIP工具箱,使用以下命令:addpath(genpath('路径/YALMIP'));然后,加载CPLEX求解器,使用以下命令:addpath('路径/cplex');接下来,调用yalmip('clear')函数来清除YALMIP的内部存储。
这是为了确保模型从头开始构建:yalmip('clear');第三步:定义优化问题接下来,需要在MATLAB中定义一个优化问题。
为此,需要创建一个MATLAB函数,并使用YALMIP中的变量和约束来描述问题。
YALMIP提供了各种变量类型,如实数、整数、二值等。
可以使用类似下面的代码定义一个线性规划问题:x = sdpvar(n, 1); 定义变量Objective = c' * x; 设定目标函数Constraints = [A * x <= b, x >= 0]; 增加线性约束在这个例子中,n是变量的数量,c是目标函数的系数,A和b是线性约束条件。
MCM美国数学建模大赛集训(第一讲:优化建模软件的安装和使用)Yi-Shuai Niu2016 2017目的:学习数学优化建模软件(IBM ILGO CPLEX,Matlab,Yalmip,Gurobi)的安装和使用。
常见的数学优化模型:1.连续型模型:线性规划(Linear Programming)、二次规划(Quadratic Programming)、二次约束规划(Quadratically Constrained Programming)、非线性规划(Nonlinear Program-ming)、多目标规划(Multiobjective Programming)等。
2.离散型模型:整数和混合整型规划(Integer/Mixed Integer Programming)、组合优化(Combinatorialoptimization:图(graphe)、逆阵(matroid))、动态规划(Dynamic Programming)等。
常见的优化建模软件:软件主要功能调用方式CPLEX解决线性规划、二次约束规划、二次锥规划和混合整规划问题C++,Java,Matlab,PythonMatlab Optimization Toolbox:各种线性、二次、非线性规划求解算法MatlabGlobal Optimization Toolbox:遗传算法、模拟退火法等Gurobi和CPLEX类似,综合性能方面略优,特别是求解混合整数规划Python,C++,Java,Matlab Yalmip Matlab上的优化建模语言。
并提供各类优化求解器调用接口Matlab第一章、软件安装篇1、CPLEX1.1、CPLEX简介IBM R ILOG R CPLEX R Optimization Studio是一款强大的数学优化建模和决策分析支持工具箱。
旨在使用数学规划和约束规划快速开发和部署优化模型。
它将集成开发环境(IDE)1/11November-December2016巴院与强大的优化编程语言(OPL)和高性能的ILOG CPLEX优化器求解工具结合,并且与众多编程语言兼容(C/C++,JAVA,EXCEL,Matlab等都有接口)。
python中cplex的用法Cplex是一种商业最优化软件,常用于数学编程。
在Python中使用cplex需要先安装cplex模块。
安装cplex模块:1. 在命令行中执行命令:```conda install -c ibmdecisionoptimization cplex```2. 或者安装whl文件:从IBM官网下载Cplex Python API对应版本的whl文件,然后执行以下命令:```pip install cplex-xxx.whl```其中,xxx表示对应的Cplex Python API版本号。
使用cplex求解线性规划问题:在Python中调用cplex求解线性规划问题的基本步骤如下:```pythonimport cplex#创建一个问题实例problem = cplex.Cplex()#添加变量var_names = ['x1', 'x2']var_obj = [1.0, 2.0]var_lb = [0.0, 0.0]var_ub = [cplex.infinity, cplex.infinity]var_types = ['C', 'C'] #变量类型,C表示连续型变量,B表示0-1型变量problem.variables.add(names=var_names, obj=var_obj, lb=var_lb, ub=var_ub, types=var_types)#添加约束constraint_names = ['c1', 'c2']linear_constraints = [[['x1', 'x2'], [2.0, 1.0]], # c1: 2*x1 + x2 <= 3[['x1', 'x2'], [1.0, 3.0]] # c2: x1 + 3*x2 <= 4]constraint_rhs = [3.0, 4.0]constraint_senses = ['L', 'L'] #约束条件的符号,L表示<=,E表示=,G表示>=problem.linear_constraints.add(lin_expr=linear_constraints, senses=constraint_senses, rhs=constraint_rhs,names=constraint_names)#求解问题problem.solve()print("Solution status = ", problem.solution.get_status())print("Objective value = ",problem.solution.get_objective_value())print("Solution = ", problem.solution.get_values())```其中,Cplex的求解过程与结果都保存在problem对象中,可以通过调用相应的函数来获取结果。
最近建立了一个网络流模型,是一个混合整数线性规划问题(模型中既有连续变量,又有整型变量)。
当要求解此模型的时候,发现matlab优化工具箱竟没有自带的可以求解这类问题的算法(只有bintprog求解器,但是只能求解不含连续变量的二值线性规划问题)。
于是在网上找了一些解决问题的途径,下面说说几种可能的解决方案。
cplex首先想到的是IBM公司大名鼎鼎的cplex。
cplex是IBM公司一款高性能的数学规划问题求解器,可以快速、稳定地求解线性规划、混合整数规划、二次规划等一系列规划问题。
CPLEX 的速度非常快,可以解决现实世界中许多大规模的问题,它能够处理有数百万个约束(constraint) 和变量 (variable) 的问题,而且一直刷新数学规划的最高性能记录。
他的标准版本是一个windows 下的IDE应用软件,但是开发人员能通过组件库从其他程序语言调用CPLEX 算法。
随标准版本一起发布的文件中包含一个名为matlab文件夹,将此文件夹添加到matlab的搜索路径下就可以在matlab下调用cplex高效地求解数学规划问题。
cplex IDE主界面(是不是很熟悉的界面?没错,cplex也是基于eclipse插件机制开发的。
):CPLEX Optimizer中文介绍:/components/detailvi ew.aspx?id=ce16c50e-0059-417b-9806-c8b1d3224084官方网址:/components/detailview.aspx?id=ce16c 50e-0059-417b-9806-c8b1d3224084遗憾的是,cplex是一款商业软件,可以从以上官方网址上下载免费试用版,使用时限是90天,而且试用版对问题规模有限制(我的问题有300个变量,370个约束,结果因为问题规模限制无法用试用版求解)。
如果你要用cpl ex解决问题的话,可能还需要学习特定于cplex的建模语言。
如何在C#中引⼊CPLEX的dll(CPLEX系列-教程⼀)以前写在CSDN上的⽂章。
转到博客园之后,打算把这个教程移过来,顺便完善后⾯的教程。
主要是在+EF6⾥⾯使⽤cplex,完成⼀个最优⽣产计划的决策。
当时在查找如何在C#中引⽤cplex时,找到的⼤多是cplex在VS中的环境配置,⼤都还是以C++为例,⽽且觉得有些复杂。
所以想写⼀篇关于C#引⽤的教程。
关于下载我下载的版本是cplex studio12.8.0,可以去官⽹注册账号并下载试⽤版或者教育版。
其他下载途径⾃⾏百度。
安装下载之后,新建⼀个⽂件夹以备安装使⽤。
可以不⽤安装在C盘当中,安装后的⽂件夹如图所⽰:在这些⽂件夹当中,包含有C#、java、matlab、python等的教程(英⽂版),以及提供的样例。
以C#为例:教程位于~\cplex\dotnet.html当中。
样例在~\cplex\examples\x64_windows_vs2017\stat_mda当中。
双击打开其中的.sln⽂件,其中有很多C#的演⽰程序,可以⽤来学习。
.dll引⼊项⽬1. 打开VS2017,新建⼀个C#控制台应⽤程序,⽤来做配置效果的测试。
2. 点击“项⽬”-“添加引⽤”(或者直接在解决⽅案“引⽤”上,右键添加引⽤)3. 浏览⽂件夹,找到你的安装位置。
打开“~\cplex\bin\x64_win64”⽬录,选择其中的这两个添加⼊你的项⽬当中:4. 可以从样例代码中复制⼀个做测试,⽐如:using ILOG.Concert;using ILOG.CPLEX;public class Blend{internal static int _nbElements = 3;internal static int _nbRaw = 2;internal static int _nbScrap = 2;internal static int _nbIngot = 1;internal static double _alloy = 71.0;internal static double[] _cm = { 22.0, 10.0, 13.0 };internal static double[] _cr = { 6.0, 5.0 };internal static double[] _cs = { 7.0, 8.0 };internal static double[] _ci = { 9.0 };internal static double[] _p = { 0.05, 0.30, 0.60 };internal static double[] _P = { 0.10, 0.40, 0.80 };internal static double[][] _PRaw = {new double[] {0.20, 0.01},new double[] {0.05, 0.00},new double[] {0.05, 0.30}};internal static double[][] _PScrap = {new double[] {0.00, 0.01},new double[] {0.60, 0.00},new double[] {0.40, 0.70}};internal static double[][] _PIngot = {new double[] {0.10},new double[] {0.45},new double[] {0.45}};public static void Main(string[] args){try{Cplex cplex = new Cplex();INumVar[] m = cplex.NumVarArray(_nbElements, 0.0, System.Double.MaxValue); INumVar[] r = cplex.NumVarArray(_nbRaw, 0.0, System.Double.MaxValue);INumVar[] s = cplex.NumVarArray(_nbScrap, 0.0, System.Double.MaxValue);INumVar[] i = cplex.NumVarArray(_nbIngot, 0.0, System.Double.MaxValue);INumVar[] e = new INumVar[_nbElements];// Objective Function: Minimize Costcplex.AddMinimize(cplex.Sum(cplex.ScalProd(_cm, m),cplex.ScalProd(_cr, r),cplex.ScalProd(_cs, s),cplex.ScalProd(_ci, i)));// Min and max quantity of each element in alloyfor (int j = 0; j < _nbElements; j++){e[j] = cplex.NumVar(_p[j] * _alloy, _P[j] * _alloy);}// Constraint: produce requested quantity of alloycplex.AddEq(cplex.Sum(e), _alloy);// Constraints: Satisfy element quantity requirements for alloyfor (int j = 0; j < _nbElements; j++){cplex.AddEq(e[j],cplex.Sum(m[j],cplex.ScalProd(_PRaw[j], r),cplex.ScalProd(_PScrap[j], s),cplex.ScalProd(_PIngot[j], i)));}if (cplex.Solve()){if (cplex.GetStatus().Equals(Cplex.Status.Infeasible)){System.Console.WriteLine("No Solution");return;}double[] mVals = cplex.GetValues(m);double[] rVals = cplex.GetValues(r);double[] sVals = cplex.GetValues(s);double[] iVals = cplex.GetValues(i);double[] eVals = cplex.GetValues(e);// Print resultsSystem.Console.WriteLine("Solution status = " + cplex.GetStatus());System.Console.WriteLine("Cost:" + cplex.ObjValue);System.Console.WriteLine("Pure metal:");for (int j = 0; j < _nbElements; j++)System.Console.WriteLine("(" + j + ") " + mVals[j]);System.Console.WriteLine("Raw material:");for (int j = 0; j < _nbRaw; j++)System.Console.WriteLine("(" + j + ") " + rVals[j]);System.Console.WriteLine("Scrap:");for (int j = 0; j < _nbScrap; j++)System.Console.WriteLine("(" + j + ") " + sVals[j]);System.Console.WriteLine("Ingots : ");for (int j = 0; j < _nbIngot; j++)System.Console.WriteLine("(" + j + ") " + iVals[j]);System.Console.WriteLine("Elements:");for (int j = 0; j < _nbElements; j++)System.Console.WriteLine("(" + j + ") " + eVals[j]);}cplex.End();}catch (ILOG.Concert.Exception exc){System.Console.WriteLine("Concert exception '" + exc + "' caught");}System.Console.ReadKey();}}看了其他教程中,说要将解决⽅案启动配置为Release,但后⾯试了⼀下选为Debug也可以正常使⽤。
Cplex安装简介
最近实验室不少同志来询问Cplex的安装及使用。
虽然有官方的安装说明,但是事无巨细地看起来也麻烦,这里就安装过程写一个简单的说明文档。
1.软件下载
首先从S:\shared\Zechun.HU\CPLEX 12.1中下载安装程序和相关的说明文档,其中CZ3VBEN.exe是安装程序,access.ilm是license,这两个是必须的组件。
2.安装
点击CZ3VBEN.exe安装程序,安装过程很简单(建议不要安装到C盘),和普通软件没有不同。
3.导入license
需要设置环境变量,具体的方法如下:右击“计算机”—选择属性—左边栏选择“高级系统设置”—选择“环境变量”—在“用户变量”中新建变量名:ILOG_LICENSE_FILE,设置变量值为access.ilm的路径(点击属性就可以查到)
4.设置路径
搞定了之后,就转战到matlab中设置路径。
将安装得到的ILOG文件夹放到matlab目录下的toolbox中
进入matlab程序,依次点击file—set Path—Add with subfolders(非常重要!),将刚刚拖到toolbox下的ILOG选中,就OK了。
5.最后,为了验证安装有效性,可以在matlab窗口测试help cplex,如果显示一堆说明文
档,就装成功了。
同时左下角的toolbox中也可以看到IBM ILOG的相关标识。
注:现在实验室的服务器上已经有升级到12.2,安装过程大同小异,若有什么新的注意事项,欢迎更新。
By 丁华杰
2011-4-28。