CPLEX用来解决拥有大量约束条件的优化问题。致力于帮助企业产生有助于企业生产的最终决策
我们可以选择IBM CPLEX Studio来进行CPLEX的开发。我们可以获得三个月免费试用版,链接为
http://www-03.ibm.com/software/products/en/ibmilogcpleoptistud/
不过需要注册一个IBM id才能下载。安装后在cplex/opl/examples/opl目录下会有许多经典例子,大家可以通过例子来学习CPLEX的基本语法和能解决的问题类型。
在讲解基本语法之前,可以看两个业界使用CPLEX解决问题的例子:
VAG Nuremburg keeps drivers happy with better roster planning
MultiProfil carves out a niche for manufacturing perfection
第二个是关于一家家具制造商的,它需要对家具原材料(木材)、设计切割、叉车运输等进行考虑,使得木材的浪费最少,并降低运输费用,这些都需要与客户的需求进行联系,对木材进行合适的切割,以防剩下的得不到利用。
CPLEX可以用来解决随机优化、线性规划、混合整型规划等规划和优化问题,所以用来我们可以解决这样的问题:
如何避免不确定的风险
如何实现结果最优
一个经典的优化模型应该包括:
目标函数(一般以“maximize” or “minimize”开头,指的是获取最大或最小的收益、花费等等)
决策变量(值是未知的,通过调整它可以影响到最终的结果)
约束(决策变量要符号一定的约束,不如生产中不能超出企业的生产能力)
下面是一个例子:
setof(string) Products = ...; setof(string) Resources = ...;
float consumption[Products][Resources] = ...;
float capacity[Resources] = ...;
float demand[Products] = ...;
float insideCost[Products] = ...; float outsideCost[Products] = ...;
我们可以用CPLEX来轻易的解答四色问题,也就是地图染色问题。
// -------------------------------------------------------------------------- // Licensed Materials - Property of IBM // // 5725-A06 5725-A29 5724-Y48 5724-Y49 5724-Y54 5724-Y55 // Copyright IBM Corporation 1998, 2013. All Rights Reserved. // // Note to U.S. Government Users Restricted Rights: // Use, duplication or disclosure restricted by GSA ADP Schedule // Contract with IBM Corp. // -------------------------------------------------------------------------- /* ------------------------------------------------------------ Problem Description ------------------- The problem involves choosing colors for the countries on a map in such a way that at most four colors (blue, white, yellow, green) are used and no neighboring countries are the same color. In this exercise, you will find a solution for a map coloring problem with six countries: Belgium, Denmark, France, Germany, Luxembourg, and the Netherlands. ------------------------------------------------------------ */ using CP; range r = 0..3; string Names[r] = ["blue", "white", "yellow", "green"]; dvar int Belgium in r; dvar int Denmark in r; dvar int France in r; dvar int Germany in r; dvar int Luxembourg in r; dvar int Netherlands in r; subject to { Belgium != France; Belgium != Germany; Belgium != Netherlands; Belgium != Luxembourg; Denmark != Germany; France != Germany; France != Luxembourg; Germany != Luxembourg; Germany != Netherlands; } execute { writeln("Belgium: ", Names[Belgium]); writeln("Denmark: ", Names[Denmark]); writeln("France: ", Names[France]); writeln("Germany: ", Names[Germany]); writeln("Luxembourg: ", Names[Luxembourg]); writeln("Netherlands: ", Names[Netherlands]); } tuple resultT { string name; string value; }; {resultT} solution = {}; execute{ solution.add("Belgium", Names[Belgium]); solution.add("Denmark", Names[Denmark]); solution.add("France", Names[France]); solution.add("Germany", Names[Germany]); solution.add("Luxembourg", Names[Luxembourg]); solution.add("Netherlands", Names[Netherlands]); writeln(solution); }
SPSS用决策树来进行分类和预测。经典的一个例子就是根据顾客的收入(income)、教育情况(education)和家庭情况(family)来预测顾客的消费行为。
IBM SPSS Modeler 包含多种决策树模型,包括 C5.0、C&R Tree、Quest、CHAID。
C5.0 比较常用,用于多分支决策树,是一个多叉树。
常用的还有
时间空间盒
它用于出租车例子:帮助出租车公司协调一个不同地区的出租车密度来方便人们可以打到车。
SPSS在数学建模中
知道一个城市下各个地方的客运量、货运量,还有GDP,通过SPSS我们可以获得上图的可视化显示,11个地区的客运量、货运量和GDP。然后进一步可以看出哪些变量之间的影响。
那有了Spark来领衔当今大数据分析和企业内部高级分析的潮流,SPSS是不是能继续发挥作用。我们可以从网上(比如微博,新闻,社交网络)获得与企业相关的信息,数据量之大,需要借助Spark来处理,由于Spark集成了众多如机器学习等高级分析算法,我们可以从这些原始的海量信息中,分辨出哪些信息对企业来说是positive,而哪些信息对企业是negative,或者还可以挖据出更多相关信息。在有了这些挖掘信息后,我们还想能不能利用它们来预测一下标准普尔指数,这个时候就需要我们认为的将这个问题进行数学建模,选择合适的模型,进行预测,SPSS来做。
不过SPSS与 InfoSphere BigInsights 的集成可用在数据挖掘流程的所有阶段。
InfoSphere Streams 是一个处理流数据的 IBM 平台。在实时处理需要高级分析时会使用 SPSS 集成。实时应用预测分析的用例的示例包括网络安全、银行和信用卡欺诈检测、预测性维护,以及实时营销产品。
SPSS 平台与 Netezza、InfoSphere BigInsights 和 InfoSphere Streams 的内置集成能够让分析师使用强大的分析工具处理大数据。
Spark integration in SPSS Modeler 17.1
两者一个是通过数据产生业务决策(CPLEX),一个是从原始海量数据中提取出有利于业务决策的信息(SPSS)。如果把这两者集成起来,就完成了从原始海量数据产生业务决策的过程。IBM ILOG CPLEX Optimization Studio 中的 SPSS Connector 就实现了这个想法。
IBM ILOG CPLEX Optimization Studio 与 SPSS 集成