文章目录

  • 一、涉及软件
  • 二、配置效果
  • 三、配置步骤
    • 1、首先选择代码运行的环境
    • 2、打开项目的属性项
    • 3、修改C/C++附加包含目录
    • 4、修改C/C++预处理器中的预处理器定义项
    • 5、修改C/C++代码生成中的运行库
    • 6、修改链接器常规项中的“附加库目录项”
    • 7、修改链接器输入中的“附加依赖项”
    • 8、 点击确定,点击应用,大功告成!
  • 四、运行测试代码
    • 1、下面给出CPLEX官方测试文档中的`cutstock`代码进行测试
    • 2、首先编译代码,出现下面截图说明配置成功辽
    • 4、运行结果如下:
  • THE END
  • 谢谢观看,欢迎批评指正

一、涉及软件

Visual Studio 2017、Visual Studio 2019
CPLEX 12.9.0

二、配置效果

1、可以实现C++调用CPLEX求解线性规划,混合整数规划等;
2、可以在debug和release两种模式下进行调试或者运行代码

三、配置步骤

1、首先选择代码运行的环境


(1)、将平台设置为x64或者(活动)x64,此处一定需要修改!不能使用x32平台模式
(2)、配置的设置可以根据需要自行选择release模式或者debug模式(作者建议两种都进行配置一下,方便后续使用)

2、打开项目的属性项

3、修改C/C++附加包含目录


这里找到CPLEX的安装目录(根据自己的安装目录进行修改),如本人的是:
(注:下述若不做特殊说明,均需要将目录替换为自己的目录,若安装时没进行修改,从IBM/ILOG/…的目录同下述目录应该相同)

//CPLEX安装目录
D:\Program Files\IBM\ILOG\CPLEX_Studio129\concert\include
D:\Program Files\IBM\ILOG\CPLEX_Studio129\cplex\include

将上述两项加入到附加目录之中,点击确定,效果如下:

4、修改C/C++预处理器中的预处理器定义项


添加下述命令到预处理器定义中(此处无需进行修改,直接复制粘贴就好):

NDEBUG
_CONSOLE
IL_STD

5、修改C/C++代码生成中的运行库


将此处的改为多线程DLL(/MD)或者多线程调试DLL(/MDd)

6、修改链接器常规项中的“附加库目录项”


将下述两个目录添加到“附加库目录项”中,目录地址同上述CPLEX安装目录相同

D:\Program Files\IBM\ILOG\CPLEX_Studio129\concert\lib\x64_windows_vs2017\stat_mda
D:\Program Files\IBM\ILOG\CPLEX_Studio129\cplex\lib\x64_windows_vs2017\stat_mda

7、修改链接器输入中的“附加依赖项”


将下述两个目录添加到“附加库目录项”中,目录地址同上述CPLEX安装目录相同

D:\Program Files\IBM\ILOG\CPLEX_Studio129\concert\lib\x64_windows_vs2017\stat_mda\concert.lib
D:\Program Files\IBM\ILOG\CPLEX_Studio129\cplex\lib\x64_windows_vs2017\stat_mda\cplex1290.lib
D:\Program Files\IBM\ILOG\CPLEX_Studio129\cplex\lib\x64_windows_vs2017\stat_mda\ilocplex.lib

8、 点击确定,点击应用,大功告成!

四、运行测试代码

1、下面给出CPLEX官方测试文档中的cutstock代码进行测试

#include <ilcplex/ilocplex.h>ILOSTLBEGIN#define RC_EPS 1.0e-6static void readData(const char* filename, IloNum& rollWidth,IloNumArray& size, IloNumArray& amount);
static void report1(IloCplex& cutSolver, IloNumVarArray Cut,IloRangeArray Fill);
static void report2(IloAlgorithm& patSolver,IloNumVarArray Use,IloObjective obj);
static void report3(IloCplex& cutSolver, IloNumVarArray Cut);/// MAIN PROGRAM ///int main(int argc, char **argv)
{IloEnv env;try {IloInt  i, j;IloNum      rollWidth;IloNumArray amount(env);IloNumArray size(env);if (argc > 1)readData(argv[1], rollWidth, size, amount);elsereadData("cutstock.dat",rollWidth, size, amount);/// CUTTING-OPTIMIZATION PROBLEM ///IloModel cutOpt(env);IloObjective   RollsUsed = IloAdd(cutOpt, IloMinimize(env));IloRangeArray  Fill = IloAdd(cutOpt,IloRangeArray(env, amount, IloInfinity));IloNumVarArray Cut(env);IloInt nWdth = size.getSize();for (j = 0; j < nWdth; j++) {Cut.add(IloNumVar(RollsUsed(1) + Fill[j](int(rollWidth / size[j]))));}IloCplex cutSolver(cutOpt);/// PATTERN-GENERATION PROBLEM ///IloModel patGen(env);IloObjective ReducedCost = IloAdd(patGen, IloMinimize(env, 1));IloNumVarArray Use(env, nWdth, 0.0, IloInfinity, ILOINT);patGen.add(IloScalProd(size, Use) <= rollWidth);IloCplex patSolver(patGen);/// COLUMN-GENERATION PROCEDURE ///IloNumArray price(env, nWdth);IloNumArray newPatt(env, nWdth);/// COLUMN-GENERATION PROCEDURE ///for (;;) {/// OPTIMIZE OVER CURRENT PATTERNS ///cutSolver.solve();report1(cutSolver, Cut, Fill);/// FIND AND ADD A NEW PATTERN ///for (i = 0; i < nWdth; i++) {price[i] = -cutSolver.getDual(Fill[i]);}ReducedCost.setLinearCoefs(Use, price);patSolver.solve();report2(patSolver, Use, ReducedCost);if (patSolver.getValue(ReducedCost) > -RC_EPS) break;patSolver.getValues(newPatt, Use);Cut.add(IloNumVar(RollsUsed(1) + Fill(newPatt)));}cutOpt.add(IloConversion(env, Cut, ILOINT));cutSolver.solve();cout << "Solution status: " << cutSolver.getStatus() << endl;report3(cutSolver, Cut);}catch (IloException& ex) {cerr << "Error: " << ex << endl;}catch (...) {cerr << "Error" << endl;}env.end();return 0;
}static void readData(const char* filename, IloNum& rollWidth,IloNumArray& size, IloNumArray& amount)
{ifstream in(filename);if (in) {in >> rollWidth;in >> size;in >> amount;}else {cerr << "No such file: " << filename << endl;throw(1);}
}static void report1(IloCplex& cutSolver, IloNumVarArray Cut,IloRangeArray Fill)
{cout << endl;cout << "Using " << cutSolver.getObjValue() << " rolls" << endl;cout << endl;for (IloInt j = 0; j < Cut.getSize(); j++) {cout << "  Cut" << j << " = " << cutSolver.getValue(Cut[j]) << endl;}cout << endl;for (IloInt i = 0; i < Fill.getSize(); i++) {cout << "  Fill" << i << " = " << cutSolver.getDual(Fill[i]) << endl;}cout << endl;
}static void report2(IloAlgorithm& patSolver, IloNumVarArray Use,IloObjective obj)
{cout << endl;cout << "Reduced cost is " << patSolver.getValue(obj) << endl;cout << endl;if (patSolver.getValue(obj) <= -RC_EPS) {for (IloInt i = 0; i < Use.getSize(); i++) {cout << "  Use" << i << " = " << patSolver.getValue(Use[i]) << endl;}cout << endl;}
}static void report3(IloCplex& cutSolver, IloNumVarArray Cut)
{cout << endl;cout << "Best integer solution uses "<< cutSolver.getObjValue() << " rolls" << endl;cout << endl;for (IloInt j = 0; j < Cut.getSize(); j++) {cout << "  Cut" << j << " = " << cutSolver.getValue(Cut[j]) << endl;}
}

2、首先编译代码,出现下面截图说明配置成功辽

3、给出输入文件信息如下:

115
[25, 40, 50, 55, 70]
[50, 36, 24, 8, 30]

4、运行结果如下:

THE END

谢谢观看,欢迎批评指正

Visual Studio(VS2017/VS2019) C++ 配置 CPLEX 教程相关推荐

  1. 【官档整理】Visual Studio vs2017 vs2019 中文离线安装包下载,替代ISO镜像

    官档地址 创建脱机安装 - Visual Studio (Windows) | Microsoft Docs 2017企业版:NJVYC-BMHX2-G77MM-4XJMR-6Q8QF 2017专业版 ...

  2. OpenGL 开发环境配置(Windows) - Visual Studio 2017 + GLFW + GLAD 详细图文教程

    OpenGL 开发环境配置(Windows) - Visual Studio 2017 + GLFW + GLAD 详细图文教程 大部分 OpenGL 是直接面向设备商的,如果开发者需要使用 Open ...

  3. vs2015html5环境配置,visual studio 2015 PreView环境搭建图文教程

    2014年11月13日,微软发布了Visual Studio 2015 Preview,跟随者Visual Studio 2015 而来的是,.net 开源,C#支持wp,ios,android三大系 ...

  4. Visual Studio 2022 Professional、Enterprise安装教程

    Visual Studio 2022 Professional.Enterprise安装教程 下载安装包 安装 我是电脑已经有VS2019,现在加装一个VS2022. 下载安装包 首先下载安装包,进入 ...

  5. Visual Studio 2017下载地址和安装教程(图解版)

    Visual Studio 2017下载地址和安装教程(图解版) Visual Studio 2017不仅支持C#.C++.Python.Visual Basic.Node.js.HTML.JavaS ...

  6. IDE之VS:利用 Visual Studio中的IDE配置python语言进行编程

    IDE之VS:利用 Visual Studio中的IDE配置python语言进行编程 目录 第一步,先安装python环境 第二步,加载本地已有的python 第一步,先安装python环境

  7. IDE之VS:利用 Visual Studio中的IDE配置C++语言进行编程

    IDE之VS:利用 Visual Studio中的IDE配置C++语言进行编程 目录 C++编译器之VS2015 1.新建项目,VisualC++,空项目,确定 2.右键项目文件夹,添加,新建 3.添 ...

  8. Visual Studio Code Go插件配置选项

    Visual Studio Code Go插件配置选项 go get命令和go install命令的区别 go get 命令的作用 从远程下载需要用到的包 下载完之后,执行go install go ...

  9. [Tesseract]Tesseract 在 Visual Studio 2012 中的配置及调用

    一.Tesseract简介 Tesseract是一个开源的OCR(Optical Character Recognition,光学字符识别)引擎,可以识别多种格式的图像文件并将其转换成文本,目前已支持 ...

  10. Visual Studio 2019安装与配置

    在Visual Studio中安装C和C ++支持 如果尚未下载并安装Visual Studio和Microsoft C / C ++工具,请按以下步骤开始. Visual Studio 2019安装 ...

最新文章

  1. MySQL事务与存储过程
  2. css实现提示信息,单纯使用CSS实现动态提示信息
  3. 如何得到iterator的当前元素_Java中迭代器Iterator详解
  4. 打印两个有序链表的公共部分
  5. Python-OpenCV--USB摄像头采集图像并保存到指定文件夹
  6. discord linux_如何在Discord中应用文本格式
  7. python 类继承和组合_python类与对象的组合与继承
  8. python制作桌面小程序_微信小程序在线制作:快速生成一个餐饮小程序
  9. EXCEL VBA数组使用的一些技巧和总结
  10. maven项目在eclipse中debug
  11. Android学习资料整理
  12. Win10下安装GrADS
  13. 用扫码枪收款钱到哪里_为何微信设置了密码,超市也能用扫码枪能将钱扫走?真要注意...
  14. 在Windows11的虚拟机安装WindowsServer2016并测试DNS功能
  15. maven报错The JAVA_HOME environment variable is not defined correctly
  16. 一个小型企业网络方案设计龙腾
  17. 分辨率自动调节html,如何让网页自适应手机屏幕分辨率_html/css_WEB-ITnose
  18. 博士毕业论文的最后一章,我感谢了还活着的自己
  19. CCS软件的基本使用(以MSP430为)
  20. C语言 人事管理系统练习

热门文章

  1. Google搜索从入门到精通 v4.0
  2. 计算机编码,二进制编码数字
  3. 《Unity3D脚本编程——使用C#语言开发跨平台游戏》通读笔记
  4. wincc怎么做数据库_wincc7.4 数据库的建立与查询
  5. binwalk和foremost的使用。
  6. 最简单的Qt配置opencv教程
  7. 镜像miracast投屏软件_miracast投屏软件下载
  8. dlna和miracast可以共存吗_关于无线显示技术,AirPlay,DLNA,Miracast,WiDi 等有何异同?...
  9. 360搭建windows补丁服务器
  10. STM32入门(一)Keil5软件安装以及使用