Cplex 安装

1 Cplex是IBM出的一款科学计算软件,从IBM官网可以下到最新版
2 看了一下Cplex的支持软件,最常用的是matlab,所以先从他入手,一步步来。
3 首先要安装matlab和Cplex,最近几年的版本都可以,matlab是破解版没关系。我能从网上下到的是2016a,64位破解版。Cplex是从IBM官网下载的。Y软件包是绿色的,放在计算机任意位置都可以。
4 在matlab中配置Cplex,就是把几个路径放入matlab,让matlab可以找到就行。或者说相当于设置环境变量。


设置路径

把路径添加到MATLAB中去,添加并包含子文件选项

5 测试,matlab+Cplex+Y链接完毕以后要测试
测试文件链接给出 https://pan.baidu.com/s/1dFswTaT 密码xpjv
6 问题发现
报错,怎么办?
找到Y文件夹下的definesolvers.m文件
找到如下字眼

solver(i).subversion = '12.7.0';
solver(i).checkfor= {'cplexqcp.m','cplexlink1270'};

版本号与Cplex版本要一致,就是如果Cplex的版本是12.7.1,那么所有涉及到12.7.0的参数都要改成12.7.1
然后重新测试样例程序,成功


输出正确结果

7 由于Cplex比较难下载,分享可以从这个网址下载
http://pan.baidu.com/s/1pKQYpxp

8 总结一下,matlab+Cplex总的来说就是设置一下环境变量。具体代码怎么写?还是比较简单的。那么下面,有三条路,就依赖matlab,依赖C++,依赖C。下一步,看看怎么和C联系起来。

9 先具体看一下matlab中是怎么用cplex
几个语言要解释一下

x = sdpvar(2, 1, 'full');
Objective = sum(x);
Constraints = [c'*x >=0.6, x>=0];
options = sdpsettings('verbose',1,'solver','cplex');
sol = solvesdp(Constraints,Objective,options);
    if sol.problem == 0
        str = ['The optimal objective value is = ', num2str(double(Objective))];
        display(str);
        
        str = ['The value of x (1) = ', num2str(double(x(1)))];
        display(str);
        str = ['The value of x (2) = ', num2str(double(x(2)))];
        display(str);    
    else
        str = 'Something wrong occurs!';
        display(str);
    end     

10 保存文件的语句是

Paste_Image.png

一开始出错了,后来把文件路径,不是添加路径,然后就可以正常输出了。
更改文件夹

11 C++如何调用Cplex?
我还不知道如何用C调用Cplex,而且网上资料没有,目前还没有找到对口资料。所以,怎么调用还要看官方文档。先看看怎么用C++call
12 通过官网上搜matlab+cplex看看官网是怎么介绍用matlab调cplex
官网说了一些废话,或者说没用的,但是详细。
至于怎么添加路径却没有细说。但是大差不差。也就是说官网上的内容我是可以相信的。
13 安装文件中有example,这可以学学
IBM网站上只介绍了matlab call cplex,VS怎么调Cplex还真不知道。网上也只有很少的几篇文章。难哪。
14 问题还是一是怎么用配置,用vs来配置,然后才是怎么调用。找到一篇文章
https://wenku.baidu.com/view/d60edc93aeaad1f347933f5f.html
安装cplex

  • 添加头文件路径,类似matlab中也要添加路径,matlab是添加完路径(cplex和ymilp路径)之后直接跑程序就行,这样看来vs也应该差不多
    由于安装的cplex版本不同,可能具体路径也太不一样
    均需要添加cplex自身的.h与concert目录下的.h文件所在目录,这个步骤解决的也正是API函数头文件寻找不到的问题。
  • 在你的项目中添加静态库依赖项,这个在matlab中没有,所以,还要到其他地方求证一下
    由于cplex版本不同,或是vs版本不同、需求不同,具体路径不一样,举例说:若你装的是vs2010,那么相应的lib就在D:\StudySoft\CPLEX\concert\lib\x86_windows_vs2010... ;若你需要用的是静态多线程,而非我上文中对应的动态多线程,相应的lib目录就换作D:\StudySoft\CPLEX\cplex\lib\x86_windows_vs2008\stat_mta...,但无论如何,你都得添上三个lib,两个在cplex目录下,一个在concert目录下。
    这个步骤解决的是API函数木有定义的问题。
  • 在C++预处理器中添加IL_STD,在标准库中使点不点h的头文件们相认,这个步骤解决的是你明明 #include <***> ,编译器始终报错cannot find ***.h的问题
  • 将配置选项设为“release”而不是“debug”
  • 在项目属性中将C/C++|代码生成
  • 在项目中添加动态链接库D:\StudySoft\CPLEX\cplex\include\ilcplex\cplex123.dll,这个步骤解决的是编译“找不到cplex101.dll”的问题
  • 另外两个资源
    D:\StudySoft\CPLEX\cplex\c_cpp.html
    http://blog.sina.com.cn/s/blog_50c154510100g81w.html

14.1 看一下官方文档,最权威了
create a C or C++ project and link the target with CPLEX
project在vs里面我们建的是空项目
link a targe是什么意思?
build an example 是什么意思?
CPLEX Optimizers installation folder安装文件,安装目录
Throughout this document,
the CPLEX installation folder is referred to as <CPLEXDIR>
the Concert Technology installation folder is referred to as <CONCERTDIR>
Concert Technology installation folder是什么意思?

For example, 
if CPLEX Studio has been installed in the folder C:\Program Files\IBM\ILOG\CPLEX_Studio1270 references to <CPLEXDIR>\include represent C:\Program Files\IBM\ILOG\CPLEX_Studio1270\cplex\include. 
Concert Technology is located in C:\Program Files\IBM\ILOG\CPLEX_Studio1270\concert.

Libraries
IBM提供了很多mannual, 但是第一步是怎么在vs中设置,让一个小程序能够跑起来,然后再谈怎么编程。
所以,怎么配置的参考资料还是在安装目录下的c_cpp.html
但是这个文档都是英语,而且没有图片,所以,一些中文的参考资料非常必要,下面推荐三篇文章:
http://blog.sina.com.cn/s/blog_50c154510100g81w.html
http://blog.sina.com.cn/s/blog_50c154510100r0nm.html
http://wap.sciencenet.cn/blogview.aspx?id=511626
根据这三篇文章和官方文档,操作步骤如下
Start Microsoft Visual Studio 2015.
From the File menu, choose Open > Project/Solution....
The Open Project dialog box appears.
就是打开VS,然后打开项目,一个范例,在example文件中

  • Select the folder
  • <CPLEXDIR>\examples\x64_windows_vs2013\stat_mda.
    Select the examples.sln file and click Open.
    打开后如图:


    Paste_Image.png

    然后是build其中一个cpp文件,叫blend,找到并选中blend源文件,From the Build menu, choose Build blend.中文意思是在生成选项卡中选择生成blend,如图


    Paste_Image.png

    稍等片刻就得到如下结果
    Paste_Image.png

    下面就是运行这个build完成后生成的exe文件
    打开一个命令提示符
    Paste_Image.png

    我是任选一个,按理应该都可以用的。
    添加路径Type set path=%path%;<CPLEXDIR>\bin\x64_win64 so that cplex1270.dll is on the path.
    运行程序:Type <CPLEXDIR>\examples\x64_windows_vs2013\stat_mda\blend.
    这里遇到一个问题,如果路径是C:\Program Files\IBM\。。。遇到空格会报错。解决方法就是把blend.exe文件考出来,放在c盘根目录下,运行就可以得到结果啦


    Paste_Image.png

15 上面是一个现成的项目,如何做我自己的项目?
这个官方文档也介绍了
Building your own project which links with CPLEX
multi-threaded DLL STL library多线程DLL,STL库,
下面新建的项目的设置很麻烦,其实有个很简单的方法,就是在已经有的例子的example某个例子下面直接复制一份,在该例子的文件里面写上自己的代码即可,省的下面新建的文件需要设置很多参数环境,还挺麻烦的说。
Let's assume that you want to build a target named test.exe and have:
a source file named test.cpp which uses Concert Technology or test.c which uses the C API of the CPLEX Callable Library;
a folder where this file is located and which, for the sake of simplicity, we'll refer to as <MYAPPDIR>.
里面有个关键的话,c文件也能用,但是要用Callable Library中的C API
One way to achieve that goal is to create a project named test.vcxproj as described here. Be aware that the order of instructions is important. 按照他的步骤做
Start Microsoft Visual Studio 2013.
The next step is to create the test.sln solution.
From the File menu, select New > Project....
In the Installed Templates pane, select Visual C++ and Win64.
In the middle pane, select the Win64 Console Application icon.
Fill in the project name (test).
If necessary, correct the location of the project (to <MYAPPDIR>).

15 如何使用c++调用cplex?
关于c++或是其他编程语言API的使用,可参看cplex用户手册
安老师说看example

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,185评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,445评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,684评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,564评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,681评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,874评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,025评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,761评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,217评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,545评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,694评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,351评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,988评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,778评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,007评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,427评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,580评论 2 349

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,633评论 18 139
  • 这篇文字是Kinect v2 Examples with MS-SDK 这个插件的作者编写,笔者觉得非常值得一看,...
    雨落随风阅读 16,277评论 0 18
  • Web前端发展史: 第一个网页诞生于90年代初,早期的网页除了一些小图片和毫无布局可言的标题段落,其全由文字构成...
    二狗的小仙女阅读 517评论 0 0
  • 见他人皆能歌词,余徒有羡鱼之情,呕心沥血,随手写下百字 卷 执笔 伏案犊 宣纸墨字 词词动相思 别离三四时日 相隔...
    诗酒尚趁年华阅读 211评论 1 1
  • 昨天儿子给我说,妈妈,我想要个火精灵在我手上啊,想要真的,哦我的天,好吧,我给你画个,那我还想要个水精灵啊,让他们...
    虚空中的兔子阅读 249评论 4 6