基于CPLEX和C++语言求解优化问题的过程

摘要:CPLEX 是目前世界上顶尖的求解线性规划、整数规划和某些非线性规划的软件包。它可以用 C、C++、JAVA、.NET 等多种计算机语言进行建模,考虑到C++语言的灵活性及其可扩展性,该文首先介绍CPLEX及其求解优化问题的原理,然后重点阐述如何利用CPLEX软件包编写C++程序来求解优化问题,对该问题进行讨论,具有重要的理论和实际价值。

关键词:CPLEX;优化问题

中***分类号:TP311 文献标识码:A 文章编号:1009-3044(2015)23-0049-02

1 概述

CPLEX是一种用于GAMS (一般代数建模系统)的求解器,用户可以将CPLEX 的优化求解器能与GAMS的高水平建模功能结合起来,CPLEX设计的理念是在最小的用户介入下快速的求解大型复杂问题。它可用于求解线性规划(Linear programming)问题、二次规划(quadratic programming)问题、二次约束规划(quadratically constrained programming)问题与混合整数规划(mixed integer programming)问题。可以处理数以百万计的约束(constraint)和变量(variable)的问题,并且由于其灵活性、高性能型和稳定性,一直备受业界人士的青睐。

开发人员只需要通过应用组件调用ILOG CPLEX算法就能实现交互式工作,从而完成数据的读写和优化问题的求解,ILOG CPLEX性能经调整后,我们就可以解决特定的问题。同时ILOG CPLEX算法在PRESOLVE算法的基础上,与它紧密集成,不需要用户整合,将大规模的问题可以转换为小规模的问题,从而缩短求解时间。而且ILOG CPLEX中每个优化器都有许多性能调整的选项,可以根据具体优化问题的需要,对相关性能进行调整。

2 ILOG CPLEX 求解原理

CPLEX求解线性规划和混合整数线性规划问题,能够处理数以百万计的变量和约束条件,开发人员通过组件库从其他编程语言调用CPLEX中的算法即可。常见的组件库包括C、C++、java、matlab和.net接。同时也可以直接使用ILOP CPLEX软件建模语言OPL CPLEX调用算法,CPLEX中的算法包括对偶单纯形算法、原始单纯算法、网络优化求解算法、闸算法和筛选算法。求解ILP问题采用的是CPLEX中的对偶单纯形法。单纯形法指的是从已知问题的可行解中通过迭代算法找出另外一个可行解,一直检查到满足最优化条件的解时为止。而对偶单纯形发指的是在满足对偶条件的前提下,通过迭代逐步找到求解原始问题的最优解。在每次迭代的过程中,始终要保持原始解的对偶可行性。

与其他纯线性规划相比,求解纯整数与混合整数规划问题需要更多的数学计算。就算是求解较少整数规划模型也需要耗费大量的时间来求解。对于只要有整数求解的问题,CPLEX通常采用分枝切割算法,即求解一系列LP子问题,求解MIP问题需要将问题分解为许多子问题,即使小型的MIP问题也需要大量的计算。

在求解线性规划问题时,需要大量的内存空间,即使CPLEX的内存管理非常有效,但是求解规模大的LP问题,内存不足仍然是需要考虑的问题之一。针对内存不足现象,CPLEX提供两种方法来解决,第一种是通过CPLEX自动调整,但是调整后将影响到计算的性能。自动调节是通过对可行解进行松弛,它是指查找器通过不协调约束来识别产生不可行的解,然后通过进一步执行纠正模型,继续运行并得到结果。为了实现这个目的可以采用显式松弛变量和其他模型结构建模型。具体的实现过程是通过FEASOPT选项,CPLEX接收一个不可行模型,并用最小化加权罚函数的方式选择性地松弛边界和约束,实质上是通过最小化的变化来达到结果的可行。另一种方法是增加因子重新分解的频率。

3 ILOG CPLEX优化软件的使用

协调技术(Concert Technology)是一个库函数,它提供应用程序接口(API)使CPLEX的许多优化器可以嵌套在C++、Java和Python程序中。具体的可视***如***1所示。在本文中,使用C++语言来编写应用程序,在C++中的对象通过协调技术与CPLEX对象和内核构建相连来建立与求解优化模型。C++对象可以包括两类:

1)建模对象是用来定义的优化问题。一般应用程序创建多个建模对象(Ilomodel)来表达优化问题。

2)Ilocplex对象是用来定义优化模型对象。一个Ilocplex对象从CPLEX优化器中读取一个模型并提取数据。然后ilocplex对象提取和查询信息解决方案。

协调技术是一个C++类库,协调技术的应用由许多相互作用的C++对象组成,其编程的基本思路如下:

1)搭建环境:通过在C++中定义一个IloEnv对象(env)来构建环境,它提供了优化时的存储器内存管理和性能提升。应用程序调用该对象截止时,需要将IloEnv对象释放。

2)创建模型:CPLEX C++通过IloModel对象来创建模型。创建模型后,应用程序就可以创建很多对象来定义的优化模型。

3)求解模型:通过Ilomodel创建优化模型后,需要定义一个Ilocplex对象,创建该对象时需要使用环境(env)最为参数。Ilocplex对象用于提出和解决模型。提取模型的一个方法是调用cplex.extract(model)。通过调用cplex.solve()方法来解决所定义优化问题,cplex.solve()函数将返回一个布尔变量来提示是否成功的找出一个可行解。

4)查询结果:成功的解决优化问题后,可以通过IloCplex::getValue(IloNumVar var) const方法来查询一个变量或者一组变量的值和通过cplex.getValue()来找出目标函数的值。

5)处理错误:为了增加Cplex C++的鲁棒性,应该在程序中添加避免错误的断言和不可以预见的错误和异常处理。协调技术提供了两种处理错误的防线。第一类包括简单程序错误。这类例子试***用空处理对象或不相容的长度来传递数组函数。第二种是无法避免的程序错误,如内存耗尽。数据需要太多的记忆,即使程序是正确的,这种错误通常在运行时检测。如果发生错误,C++将抛出异常。为了处理这些异常,CPLEX C++采用了一个try/catch层次的异常类,其来自与基类iloexception。

4 总结

本文主要介绍如何利用CPLEX软件包,编写C++程序来建模求解优化问题,为了使读者更加深入的了解CPLEX的求解过程,本文首先介绍CPLEX的求解原理,然后重点阐述C++编写建模程序的具体过程,其编程思路大致分为五步,即搭建环境、创建模型、求解模型、查询结果和处理异常。利用C++编写建模程序的优点是灵活性高,便于程序的扩充。

参考文献:

[1] CPLEX[EB/OL]. http:///link?url=31PBxei42-tsCiiB_9GbOfy3QoktQKFk1C6z-fbNYxoaj0ntcEkiswP6Slc99-_qKF4qIkBg9KHi_R7Ew6of0a.

[2]刘均华,蓝伯雄. 基于CPLEX的原始――对偶嵌套分解算法[J]. 运筹与管理,2008(6):1-5.

[3]孙岚. CPLEX在优化调度中的应用[J]. 福建电脑,2005(11):42-43.

[4] 孙亮亮,刘炜,柴天佑. Tool Sequence Optimization Based on Three Logical Modes of Robot Control via CPLEX Optimization[J]. Journal of Shanghai Jiaotong University(Science),2011(4):436-440.

[5] 王兴,孙晚华. 基于混合整数规划的配送中心选址研究[J]. 价值工程,2012(26):15-17.

转载请注明出处学文网 » 基于CPLEX和C++语言求解优化问题的过程

学习

送给美男老爸的健康提取券

阅读(26)

生活是一条紧绷的弦,中年男作为一个“三明治”人,正处在上有老下有小的夹心阶段。为了自己,为了家,他们不惜以健康为代价,熬夜、加班、应酬、出差……而他们通常都会将压力深藏心底。健康的男人才是巨人,只有身体健康,才能跟他人较量敏捷与智慧

学习

郑传保:君子如玉

阅读(19)

我在北京CBD一家咖啡馆里见到他时,他坐在沙发里,顺着楼梯铺到二楼的阳光在他身后变成了一张明亮的帷幕,他安静地凝视着窗外,望着那个让他欢喜忧愁和渴望未知的花花世界。他是谁?他就是融府文化产业投资机构董事长郑传保,同时也是个翡翠收藏家

学习

马亚楠:快马还需加鞭

阅读(25)

14岁时才正式迈进专业队,仅仅四年之后就人选国家队,马亚楠绝对算得上中国网坛的一匹“快马”。但现在,行将年满20岁的他ATP名仍在1000位开外,马亚楠还需要快“马”加鞭,而那根马鞭就握在他的父亲兼教练马克勤的手中。儿子马亚楠在场上边打球

学习

中华立领:在时尚中回归

阅读(32)

本文为您介绍中华立领:在时尚中回归,内容包括中华立领背后开衩,中华立领定制。在泉州、宁波、温州三大流派中,绝大多数都在顺应外来文化。中国民族文化在服装时尚的词典里已经缺失太久,在重要场合西装仍然是中国男人的不二选择,这是中国服

学习

冬天衣服范文精选

阅读(19)

本文为您介绍冬天衣服范文精选,内容包括冬天服装文案范文,冬天稿件范文。冬天衣服篇1于是,我就自告奋勇的到家拿出大盆子,我先在这大盆子里撒上一些洗衣粉,再放入半盆水,然后拿出搓衣板,最后把窗帘放进这盆子里,我用手搓起窗帘来,这时不是我想

学习

古代“泼妇”新解

阅读(25)

本文为您介绍古代“泼妇”新解,内容包括古代泼妇故事,古代农村泼妇的电视剧。新版三大泼妇故事之一:王熙凤:金钱造就泼妇话说王熙凤在出嫁前是个长相标致、琴棋书画样样精通的女子,自从嫁给生性软弱、不挣钱光花钱的“火巴耳朵”贾琏之后,为

学习

明天,又是新的一天

阅读(19)

本文为您介绍明天,又是新的一天,内容包括明天又是新的一天文案,明天又是新的一天的英文。《飘》是第一本我耐心读完的外国翻译小说,那时正上初中。读完后只觉惊艳,但那种惊艳又实在无法形容,于是只得出一个字的结论――好!即使后来我知道这

学习

浅析大学生恋爱现象

阅读(22)

本文为您介绍浅析大学生恋爱现象,内容包括大学生恋爱现象,关于大学生恋爱观的报告。摘要:随着社会的发展,大学生恋爱的现象越来越普遍,所存在的问题也越来越复杂,本文对大学生恋爱现象普遍存在的原因及恋爱中所存在的一些问题进行了探讨

学习

会计管理

阅读(19)

本文为您介绍会计管理,内容包括管理会计实操,会计管理教材。[摘要]将核心竞争力理论融入战略管理会计的理论中,构建基于核心竞争力的战略管理会计将是管理会计发展的方向。而基于核心竞争力的战略管理会计的目标、基本思想、方法及主要

学习

珍珠养殖技术

阅读(22)

本文为您介绍珍珠养殖技术,内容包括珍珠养殖批发基地,珍珠养殖地在哪里。珍珠养殖的水域类型育珠蚌的生活环境是水域,水域环境条件的好坏直接影响着育珠蚌的生长和珍珠的育成。一般说来,凡能养鱼的水域都可以养殖珍珠。珍珠养殖的水域条件

学习

休闲农业园区的规划设计

阅读(20)

本文为您介绍休闲农业园区的规划设计,内容包括休闲农业产业园规划设计,休闲农业园区规划文字报告。休闲农业园区是顺应时展需求,在传统农业的基础上衍生而来,为人们提供丰富多样休闲体验的农业景观,在帮助人们缓解日常工作生活压力的同时,推

学习

“老带新”自有妙招

阅读(25)

重视“培训”的企业文化拥有四十多年历史的香格里拉酒店集团,始终非常注重对员工的培训,和其它酒店品牌相比,香格里拉在培训方面投入了很大的精力。我们在招聘方面主张“HiringForAttitude,TrainingForSkill”,意思就是“招聘你的态度,培训你

学习

10种食物补心养心

阅读(18)

本文为您介绍10种食物补心养心,内容包括吃什么食物养心补心护心脏,补心养心的中成药有哪些。如今,越来越多的人开始注重养生。而想要养生,首先需要的就是养心,有很多看似普通的食物却有着很好的补心养心功效。下面就介绍10种补心养心的食物

学习

耐腐蚀材料C276焊接工艺浅析

阅读(32)

本文为您介绍耐腐蚀材料C276焊接工艺浅析,内容包括c276焊接需要的焊材,c276焊接工艺。根据哈氏合金材料的金属特性,对其焊接方法以及焊接工艺进行研究,保证其焊接质量。关键词:哈氏合金(HastelloyC-276)、焊接、氩弧焊Abstract:Accordingtoth

学习

机械装配过程自动化

阅读(29)

本文为您介绍机械装配过程自动化,内容包括机械装配自动化,机械装配自动化操作流程。装配是整个生产系统的一个主要组成部分,也是机械制造过程的最后环节。装配对产品的成本和生产效率有着重要影响,研究和发展新的装配技术,大幅度提高装

学习

认识过程质量控制的利器——SPC

阅读(22)

本文为您介绍认识过程质量控制的利器——SPC,内容包括spc质量控制软件哪家好,spc质量控制软件定制。世界上没有永动机,在中国经济增长数字逆势上扬的背后,激烈的全球化市场竞争正在让中国制造腹背受敌。人口红利缩水、生产原料价格上扬、

学习

从“吉觉”仪式过程中看彝族人的信仰

阅读(23)

本文为您介绍从“吉觉”仪式过程中看彝族人的信仰,内容包括彝族信仰为什么是鹰和火,彝族为什么信仰腾。【摘要】“吉觉”仪式是义诺彝族特有的一种季节性仪式,在每年的七八月份举行,目的是遣返祸害,扭转劣势和防止他人咒术攻击。通过对仪式

学习

油井沉没度影响因素分析及优化调整对策

阅读(24)

本文为您介绍油井沉没度影响因素分析及优化调整对策,内容包括油井沉没度为零整改措施,油井动液面和沉没度示意。本文通过对影响油井沉没度的各种因素及沉没度与有杆泵工作状况之间的关系的分析,确定机采油井合理沉没度的范围。结合油田生

学习

熟肉制品加工过程热处理工艺研究现状及分析

阅读(33)

本文为您介绍熟肉制品加工过程热处理工艺研究现状及分析,内容包括熟肉制品加工技术资料选编,熟肉制品国家标准工艺流程。熟肉制品的食用品质决定了消费者的购买趋向,在熟肉制品加工过程中,热处理工艺非常关键。良好的热处理可促进肉的成熟

学习

实验上胶球的产生过程

阅读(22)

本文为您介绍实验上胶球的产生过程,内容包括橡胶膜上的球实验原理,橡皮膜上的球实验分析。【摘要】胶球是胶子通过强相互作用形成的束缚态,是QCD理论的特征性预言。在实验上寻找胶球、在理论上讨论胶球的质量、寿命等各种性质,是粒子物理

学习

施工过程中降水与排水方法简述

阅读(29)

本文为您介绍施工过程中降水与排水方法简述,内容包括基础施工排水降水措施,降水与排水施工工艺流程。建筑施工过程中在开挖基坑或沟槽时,土壤的含水层常被切断,地下水将会不断渗入坑内,雨季施工时,地面水也会流入基坑。施工时如未能妥善处

学习

乔木的形体分类及优化配置模式

阅读(23)

在园林绿化中的植物配置设计,乔木的形体包括色彩构成、立体构成和平面构成。经过分析,可为植物配置设计提供科学依据,提高植物配置的质量,达到良好的景观效果。一、乔木形状分类在生态配置的前提下,不同树形给人以不同的视觉效果,带来不同的心