Mosel
Xpress-MP提供的编程语言
Mosel是Xpress-MP提供的一种编程语言。Xpress-Mosel使你能够定义你的问题,然后使用适当的求解引擎进行求解,并对结果进行分析,这一切都将使用一种专为此目的设计的全功能的编译型编程语言来实现。
Mosel是Xpress-MP提供的一种编程语言。
Xpress-Mosel使你能够定义你的问题,然后使用适当的求解引擎进行求解,并对结果进行分析,这一切都将使用一种专为此目的设计的全功能的编译型编程语言来实现。Mosel程序是编译型的程序,这使它能够快速运行,并对最终用户隐藏其中的知识产权。这些程序可以交互地运行,或嵌入到应用程序中。
Mosel语言易于学习和使用,这就使用户不需太多花费就可以从无到有开发优化模型,理解并审查别人开发的模型,并在远期对模型进行修改和维护。可视化的开发环境Xpress-IVE使这一过程变得更为简单。
对任意范围,任意索引集,以及稀疏对象的完全支持意味着即使规模最大最复杂的问题也可以进行清晰简练的表达,而且不需要依赖于任何特定的数据实例。
你可以使用Mosel调试器来协助用Mosel语言进行模型开发。这一调试器支持所有典型的调试功能,以对模型的执行进行跟踪和分析。
1.求解器模块和数据处理
Mosel是完全开放的,用户可对其进行扩展。Mosel发行版本包括扩展库(也称为模块),借助于其中的一个扩展库,你只需要在Mosel程序中插入优化语句,就可以直接控制Xpress-Optimizer。其他求解器模块提供了对Xpress-SLP的访问,以定义和求解非线性问题,也提供了对随机规划工具Xpress-SP,以及有约束规划软件Xpress-CP等的访问。
另外有一个模块提供了ODBC数据驱动,它提供了直接访问所有常见的数据库以及电子表格的接口。除了使用ODBC接口之外,数据也可以直接从文本文件,内存,或I/O流中读出或向其中写入。
2.模型嵌入库
为对模型进行部署,通常需要将模型嵌入到公司的信息系统中。借助Mosel库,你可以从编程语言环境(例如,C或Java)中执行和访问Mosel语言开发的模型。这一灵活的接口为诸如在模型和大的应用程序之间交换数据和解的值这样的应用提供了方法。
除了Mosel自己的功能之外,某些模块也提供了从编程语言环境中对其内部函数的直接访问。
3.本地化的接口
通过Mosel的本地化接口,用户可以定义自己的模块或I/O驱动,它们将与Mosel发行版本中的软件组件同等看待。这样用户就可以向Mosel语言加入新的功能(例如,实现针对特定问题的数据处理,或连接到外部的求解器或求解算法),并可以根据自己的需要使Mosel语言不断进化。
4.简单实例
对于如下线性规划:
max z= x1+2*x2
s.t. 3*x1-x2>=5
2*x1+3*x2<=18
其Mosel代码为:
declarations
x1,x2: mpvar !决策变量声明
end-declarations
obj:= x1+2*x2
3*x1-x2>=5
2*x1+3*x2<=18
maximize(obj) !目标最大化
end-model
参考资料
最新修订时间:2023-10-21 18:23
目录
概述
参考资料