Download presentation
Presentation is loading. Please wait.
1
XpressMP 软件 功能介绍 林森科技 崔承刚
2007.6
2
培训内容 Xpress-MP软件介绍 Xpress-Mosel入门 Xpress-BCL库入门 Xpress-Optimizer优化器入门
Xpress-Kalis入门
3
概述 应用范围 求解器 建模和开发工具 编程接口 适用平台
4
Xpress-MP应用范围 设计优化解决方案 嵌入式开发(ERP,MES,供应链) 大型机构解决自身优化问题
5
求解器(1) Xpress-Optimizer Xpress-SLP
能够求解线性规划问题(LP),混合整数规划问题(MIP),二次规划问题(QP),以及混合整数二次规划问题(MIQP)。 Xpress-SLP 非线性规划问题(NLP)以及混合整数非线性规划问题(MINLP)的求解器。它使用了连续线性逼近方法,这一方法从过程工业的技术中发展而来,能够解决具有数千个变量的大型问题。
6
求解器(2) Xpress-SP Xpress-Kalis
有约束编程(constraint programming)软件,它构建于Artelys的Kalis求解器之上。Xpress-Kalis专用于离散组合问题,这些问题频繁出现于诸如规划和计划制定之类的问题中。
7
建模和开发工具(1) Xpress-Mosel Xpress-BCL
Xpress-Mosel环境包括Mosel语言及其调试器;用于直接访问其他软件组件和外部数据源的模块和I/O驱动;将模型嵌入到应用程序中的链接库;以及一个开放的接口 Xpress-BCL 面向对象的链接库,用于在应用程序中直接构建,求解,以及分析问题。
8
建模和开发工具(2) Xpress-IVE Xpress-Application Developer (XAD)
完整的Windows下的Xpress-Mosel可视化开发环境。它包括一个Mosel程序编辑器,编译器,以及执行环境。 Xpress-Application Developer (XAD) 通过使用一组图形用户界面开发API对Xpress-Mosel进行扩展,使Mosel成为一个能够完成从问题的数学表达到创建用户界面中这一完整的优化应用程序开发过程的建模和编程语言。 ODBC I/O驱动以及mmodbc模块 使用数据库以及电子表格作为外部数据源。
9
编程接口 本地化功能 数据处理 Mosel语言开发模型访问 Xpress-BCL 库调用
用户可以定义自己的模块或I/O驱动 ,对Mosel进行扩展,例如自己设计求解器等。 数据处理 提供开放式数据库连接(ODBC),能够直接访问所有常见的数据库以及电子表格的接口 ,另外数据也可以直接从文本文件,内存,或I/O流中读出或向其中写入 Mosel语言开发模型访问 可以从编程语言环境(例如,C或Java)中执行和访问Mosel语言开发的模型。 Xpress-BCL 库调用 具有C,C++,Java,和VB的接口
10
适用平台 Windows Linux Unix
11
进一步的信息:
12
Xpress-Optimizer简介 Xpress-Optimizer中包含了复杂,鲁棒的算法,以对工业应用中最急需解决的问题进行迅速精确的求解。这一已被证实的优化技术已在世界上大量的商业应用中使用,以对具有数百万个变量以及约束条件的问题提供快速可靠的解答。
13
求解问题 LP——线性规划问题 MIP——混合整数规划问题 QP——二次规划问题 MIQP——混合整数二次规划问题
14
使用方式 命令行 交互式图形用户界面 链接库调用 编程接口C,C++,Java,Fortran,VB6,和.net
工业标准的LP和MPS文件格式完全兼容
15
单纯形求解器 采用原-对偶单纯形算法 集成了数据预处理方法,以降低问题规模和缩短求解时间。
自动设置以达到最佳性能,同时也提供了一组丰富的用户设置参数,以对优化过程进行高级控制。 快速从已有的基解上重新开始。可以对问题进行修改,从而将求解所需时间降低到原先的很小一部分。 不可行性检测和诊断,以发现问题的不可行性。 有效的退化分辨率技术。
16
Barrier(障碍函数法)求解器 采用内点算法求解线性和二次规划问题 集成了数据预处理方法,以降低问题规模和缩短求解时间。
先进的Cholesky分解算法。 快速地原始和对偶的交替求解得到到基解。 紧密列处理。 在特定的平台上对于多处理器计算机提供了并行的Barrier算法。
17
混合整数规划求解器 MIP预求解算法,对问题进行预处理,以减小问题规模和缩短求解时间。
先进的割平面法,以自动提高边界的质量,并减小全局搜索的范围。 二进制,整数,以及半连续变量,和特殊顺序的集合 广度优先,最优优先,深度优先搜索。可自定义的节点以及变量选择策略。用户回调函数使可以对节点和变量选择进行完全控制。 多重LP算法,以初始LP松弛及节点求解。 用户定义的分支优先级以及分支方向命令。 直观推断。 在特定的平台上对于多处理器计算机提供了并行的MIP算法
18
Xpress-Mosel Xpress-Mosel使你能够定义你的问题,然后使用适当的求解引擎进行求解,并对结果进行分析,这一切都将使用一种专为此目的设计的全功能的编译型编程语言来实现。Mosel程序是编译型的程序,这使它能够快速运行,并对最终用户隐藏其中的知识产权。这些程序可以交互地运行,或嵌入到应用程序中。
19
Mosel语言 Mosel语言易于学习和使用 对任意范围,任意索引集,以及稀疏对象的完全支持
20
求解器模块和数据处理 Mosel是完全开放的,用户可对其进行扩展。 提供了ODBC数据驱动 从文本文件,内存,或I/O流中读出或向其中写入
21
本地化的接口 用户可以定义自己的模块或I/O驱动,它们将与Mosel发行版本中的软件组件同等看待。
向Mosel语言加入新的功能(例如,实现针对特定问题的数据处理,或连接到外部的求解器或求解算法),并可以根据自己的需要使Mosel语言不断进化。
22
Xpress-BCL 面向对象的库 用于在应用程序中创建数学规划问题。
它使用按部就班的方法,有加入一个变量,加入一个约束等等这样的函数,作为开发者,你可以在你的程序中调用这些函数,以逐步构建出整个问题。 BCL库具有C,C++,Java,和VB的接口
23
Xpress-IVE 完整的可视化开发环境 用于在Windows环境下进行Xpress-Mosel的开发
用户可以在一个实体树中浏览其模型程序中的对象,这样就可以查看所有优化对象的已有的解的值。 在运行时可以可视化地观察和分析优化器的性能。
24
Xpress-SLP 非线性问题的求解器 采用序列线性化方法 能够解决具有数千个变量的大型问题
可以使用Xpress-Mosel和Xpress-IVE来进行,或使用基于文件的格式,或直接从扩展API中进行。也可以对混合整数非线性问题进行求解。
25
Xpress-Kalis 约束规划求解器 通过Mosel语言定义并求解有约束规划(CP)问题 Mosel环境的所有数据处理功能
26
Xpress-Kalis特点 定义全局约束 特殊的约束处理 枚举策略的灵活定义 约束可以自动生成或者用户显式声明
例如“全不同(all-different)”,“元素(element)”,“同时出现(occurrence)”(cardinality),“相等(equivalence)”,和“蕴涵(implication)” 特殊的约束处理 约束可以自动生成或者用户显式声明 枚举策略的灵活定义 用户可以在若干个不同的分支方案(定义了搜索树的形状)中选择,并通过自己的直观推断来定义内建变量的组合和值选取策略。
27
示例:单机器调度
28
分离表达 分离表达式 约束表达形式
29
Xpress-SP Xpress-SP是一个随机规划工具,用于求解具有不确定性的优化问题。Xpress-SP可以用于建模和解决在供应链管理,能源,财务,运输等等过程中出现的问题,它将不确定性嵌入到优化问题中,以避免了未来的变数。通过将不确定性结合到优化过程中,Xpress-SP使能够对资源进行高效的管理,实现消除保守的计划中的管理费用,减少对未实现的目标的惩罚,并得到更高的服务质量和更多的利润。
30
示例:农场计划 我们对一个农场问题进行建模,农场主在冬季时需要在有限的土地决定种植哪些产品:小麦,玉米,甜菜。这些收益都要等到夏季才能实现而且决定于今年季节的好坏。 农场主需要进行播种,因此必须决定每种产品的种植量,同时还存在甜菜价格还存在定额限制。
31
模型 集合 阶段(冬季,夏季) 产品(小麦,玉米,甜菜) 约束条件 播种的最小量限制 甜菜的定额限制 目标函数:最大化收益
32
变量 xi: 产品i需要的土地面积 wwheat, wcorn:出售的小麦和玉米的量 ywheat, ycorn:购买的小麦和玉米的量 wfavor, wunfavor:甜菜的定额价格和非定额价格
33
供应链管理 我们考虑一个供应链问题。某公司生产裤子和衬衫并且需要通过船运送的不同的目的地:纽约和洛杉矶。公司需要提前做出决策,因为目的地的产品需求产生时,公司需要提前三个周期做出决策。
34
产品和目的地图
35
模型描述 决策 在需求产生前:需要生产多少产品 在需求产生后:每个目的地需要提供多少产品 约束条件 可用的人力资源 需求平衡约束
目标函数:最大化收益(销售收入-销售成本-供应成本-采购成本)
36
需求分布
37
结果:收益分布
38
Xpress-Application Developer
XAD是一个使用Mosel进行图形用户界面开发的API。它由Dash Optimization开发,是对Mosel建模和编程语言的一个扩展。 XAD使用一组简洁但富有表现力的Mosel程序来构建用户界面,例如XADcreatebutton,等等。用户界面事件,例如鼠标移动,按钮按下等,都可以很容易地通过事件回调函数引入到Mosel语言中。使用Mosel语言可以极为容易地将建模,优化,和用户界面函数结合起来。
39
使用XAD的优点 直观的开发用户界面的API。 强大的功能 与Mosel的密切结合 快速的应用程序开发
40
谢谢!
Similar presentations