AIMMS 开发环境
ww_w__.p__o_m_ine_.__co_m__
AIMMS 为高性能的决策支持和高级计划应用的创建提供一个全方面的开发环境,以优化战略运作。它允许组织机构快速提高运作的质量、服务、收益,和响应能力。AIMMS 开发环境拥有一个高级特性和设计工具的独特组合,例如图形化的模型管理器,它允许你构建维护复杂的决策支持应用程序和高级计划系统,而只花费传统编程工具所需时间的一小部分。
w__w__w._p_o_m__i__n_e_.c__o_m
AIMMS 解决方案的组件构成概述
www_.__p_o_mi_n__e_.c_o_m
AIMMS 为商业应用程序的表现层、商业规则层和数据层提供了一个完整的解决方案,开发者可以选择在特定应用程序中相应的层。图形化用户界面、附带求解器的模型,以及所有数据和数据管理都在 AIMMS 中紧密的结合了起来,但是又可以单独的使用,以配合由可缩放、模块化和容错的应用组件组成的构造。AIMMS 能促进各种数据源的通讯,例如 ODBC 和 OLE DB 兼容的数据库,Excel 和 XML 文档。AIMMS 还能够为模型的外部访问提供 C++/COM API,允许开发者以最符合他们原有的 IT 结构和商业需要的方式来使用 AIMMS。
ww__w_._po_m__in_e_._c__om_
下面的图表给出了 AIMMS 中用于完全这些任务的最上层组件构成的概述。
w__w__w_.po_mi__n_e._c_o_m_
AIMMS 建模语言精选
w_w__w__._pom_i__n_e__.co__m
AIMMS 提供一个拥有大量独特特性的建模语言,这让 AIMMS 从它的竞争者中脱颖而出。下面的列表给出了 AIMMS 建模语言的部分精彩之处。直觉的多维建模语言
w_ww_.p_o_m__ine._c_om_
AIMMS 的多维建模语言提供一个强大的直觉式索引标志法,能令你俘获在真实生活环境下发生的复杂问题。实际上,AIMMS 模型非常容易读懂,这样就能被产业和建模专家所理解,因此他们都同意在特定优化应用程序的功能需求方面将之作为一种常用格式。另外,该语言还允许你以一种紧凑的风格来表述非常复杂的计算,而不需要担心内存管理或者分散数据的存储问题。
ww_w_.p_omi_ne._c_o_m_
模型树
w_w_w._p__om_i__n_e__.__co__m__
除了以简单 ASCII 文件保存模型外,AIMMS 还提供一个图形化的模型管理器。在模型管理器里面,模型的所有标识符声明都会显现为一个模型树的节点。你能把类似分类目录的区间节点加到这个树里面去,并将模型的标识符声明保存到任何一个区间中,而与在模型中标识符的使用次序无关。模型树是一个必要的工具,它可以帮助你将模型内容约束在一个清晰的逻辑结构里面。返过来说,这又可以帮助你降低维护和传输模型的成本。
ww__w.p_om__i_ne.com_
基于属性的声明
w__ww._po_m__i_ne__._c_o__m__
所有标识符声明都是基于属性的,并且能够通过特别的图形化属性窗口进入。基于属性的声明减少了你需要学习的语法的数量,还允许 AIMMS 提供附加的向导来输入合适的属性值。
w__ww__.__po_mine_.com_
过程和定义
w_ww_._p__o_m__i_n_e__._c__om__
AIMMS 为你提供了一个自动更新的多维定义和过程化执行的强大结合体。“多维定义”允许你在模型中的个体间全局性的指定唯一的关系,而不用理会执行的次序。另一方面,“过程”通过使用 AIMMS 广泛的流控制语句集合,让你对特定计算执行的精确次序进行全面的控制,
w_ww.__p_o_min__e.c__o_m_
最优化建模
w_w_w.__p_om__in_e._c_o__m_
AIMMS 的杰出特性之一,就是它对线性、非线性和基于互补约束的混合最优化模型的说明和求解。通过对过程语句使用同样紧凑和丰富的标识,符号约束可以被表示为简单明了的公式。仅仅一个语句,最优化模型就可以被传输到世界级的求解器,比如 CPLEX、XPRESS 或者 CONOPT 等,并被求解。
w__w_w_.p_o_m_ine._c_o__m__
高级语言特性
w_ww_.__p_o_m_in_e._c__o_m__
精选的 AIMMS 高级语言特性包括:
- 一个丰富的数学、统计,和金融方面的函数集;
- 通过日历和地平线支持基于时间的建模;
- 支持计量单位;
- 支持在建模语言中调用外部函数;
- 支持模块和命名空间,以更好的促进多个开发者对一个 AIMMS 模型的开发。
基于时间的建模
w__ww_.p_o__m_i__n_e__._co_m__
AIMMS 通过特殊的日历和地平线集,对基于时间的建模提供广泛的支持。日历表示在实际时间上的固定长度的周期(时间槽),并且对类似时区和夏令时这样的问题提供支持。地平线表示抽象模型周期,这些周期可以连接到日历上的一个或者多个时间槽。通过使用日历和地平线,AIMMS 允许你以一个简单的风格实现附带自动集合体的旋转地平线模型。
w__w_w_.p__om__i_n_e_._com_
计量单位
w_ww_.p_o__m_i_n_e__._c_o_m
在建模语言中对计量单位自始至终保持严格的处理,令 AIMMS 非常独特。AIMMS 同时支持国际单位制和定制的计量单位。AIMMS 允许你对模型中每个标识符都关联一个计量单位。当你为模型提供计量单位时,AIMMS 会对模型中的全部表达式自动执行一个全面的单位一致性分析,以便帮助你在早期发现建模错误。当特定的计量单位包含有比例因子时,AIMMS 能利用这些来提供出色的基于单位比例缩放的求解器。通过单位转换,全球的最终用户可以使用不同的计量单位在同一个模型上工作(比如,公制或者英制)。
w__w__w._po_m__i__ne.c_om_
外部过程和函数
w__w__w.p_o_mi__ne__.co_m_
AIMMS 允许在建模语言中调用外部过程和函数,以便支持那些在 AIMMS 本身中不容易执行的任务的外部实施。外部过程可以从任何 AIMMS 过程中调用,还可以将模型中的多维标识符作为密集序列参数传递过去。你甚至可以从一个非线性最优化模型的约束中调用外部函数,这样要不外部函数提供(精确的)导数信息,或者 AIMMS 可以通过一个数值型的差分格式来预测需要的导数。
w_w__w.__po_m_i_n_e._c_om_
AIMMS 外部近似算法
w__ww.po_m_i_n_e_._c_om_
“外部近似”是用于求解混合整数非线性规划(MINLP)模型的一个众所周知的基本入口。该基础算法其实是两个求解器的相互作用,换句话说,一个是用于求解混合整数线性模型,一个是用于求解非线性模型。即使存在这么一个标准的外部近似算法,作为一个该算法的用户,都有可能想定制独立的算法步骤以便得达到类似如下的目标:
- 获取更好的性能;
- 获取更好的解答;
- 保存该算法找到的多个整数解;
- 能够在算法中使用不同的 NLP/MIP 求解器,以便能够增加获取可行的解答的机会;
- 能够在算法步骤中以特定问题的风格修改子模型。
所以在 AIMMS 中,外部近似求解算法是作为一个开放的过程被提供的 - 因此是可定制的 - 在 AIMMS 建模语言中(一个白匣子求解器)用以替换常用的密封实施(一个黑匣子求解器)。
w_w_w_.__po_m__i_n_e_.c_om__
二阶导数计算
w__w_w_.__p_om_ine_._c_o__m
AIMMS 支持二阶导数函数导数(Hessians)的计算,它可以被 CONOPT 3 用于求解某些特定类型的 NLP 模型,而比单独使用 Jacobian 信息更加有效率。AIMMS 执行 Hessian 计算是非常高效的。
w_ww.p__omi_ne_._c_o__m_
生成的数学规划
w_ww_.__po__m__i_n__e._com_
对于大多数应用来说,一个简单的求解(立刻生成和求解单一的实例)是足够的。但是,对于高级应用而言,你可能需要一个更加详细级别的控制,例如:
- 工作在单一符号数学规划的多个不同实例上;
- 处理一个数学规划实例的单独行、列和系数矩阵,比如高效地执行一个列的生成计划;
- 工作在与一个数学规划实例相关联的解答仓库上,例如,在存储多个起始解时,或在一个求解器的回调中,设置和更新一个混合整数模型的内在集合;
- 为一个数学规划实例启动多个求解器会话,不论是本地还是远程的。
因此,AIMMS 提供了 GMP 库,允许你详细控制一个数学规划实例的生成、操作和解答,以及管理与该数学规划实例相关联的解答和求解器会话集合的一套程序集。在声明为模型一部分的每个数学规划上,GMP 可以让你关联:
- 一个或者多个生成的数学规划实例(GMPs),并且和每个 GMP;
- 一个可以控制的抽象系数矩阵;
- 一个用于存储初期、中期和最终解的仓库;
- 一个本地或远程求解器会话池。
w_w_w_._p_omi_ne__._c_o_m
AIMMS 集成开发环境
w_ww.__po_mi__ne_._c_o__m__
AIMMS 提供一个现代化集成开发环境 (IDE),它拥有 Office XP 风格的菜单和工具栏,并且与 VS.NET 相类似。AIMMS IDE 在模型开发和模型部署中都可以提供图形化的最终用户界面。
AIMMS IDE 提供: - 可停靠窗口,提供到 AIMMS 生产工具的访问
- 不论是普通 MDI 还是标签 MDI 模式,文档窗口都可以显示,用于显示标识符属性窗口、标识符查看窗口、数据页,和最终用户页
显示“模型管理器”和“属性窗口”时的 AIMMS IDE
显示包含多个控件的“最终用户页面”时的 AIMMS IDE
w_w_w.po__mi_n_e_.c__o_m__
集成的 GUI 创建器
w__w__w_.__p__o_min_e_.c_om_
除了建模环境,AIMMS 还提供了一个集成工具用于在决策支持应用程序中构建一个定制的图形化用户界面(GUI)。最终用户界面可以一个简单的点-击风格创建,还可以包含多个与模型中的多维标识符紧密关联的控件。
w_w_w.p_o_m_i_n_e.com_
内建的 AIMMS GUI 控件
www_.po__m__i__n_e_.__c_o__m
用于显示/修改数据,或者浏览应用程序的界面控件:- 多维表格;
- 灵活并且用户可控的数据透视表;
- 2D 和 3D 图表 (饼图、柱形图、连线和区域图、泡泡图、雷达图、极性图、蜡烛图、错口和错口开合图、散点图、组合图、3D 表面和柱形图,以及 3D 散点图等等);
- 甘特图控件,用于时间相位计划和调度应用程序;
- 网络控件,用于视觉化二维地图和流程;
- 按钮;
- 滑动条;
- 浏览应用程序的导航控件;
- 日历和时间控件;
- 文档查看器可在一个 AIMMS 页面中查看多种类型的文档;
- 标签式页面,用于在一个标签控件中显示 AIMMS 页面的子树;
- 索引的页面对象,用于为所有符合索引集的元件以清单或者列表的格式,重复显示另外的页面(该页面包含一个或两个元件参数的多维标识符的数据)
支持 ActiveX 控件的整合
w_ww_.p_o__m__in_e__._c_o_m_
AIMMS 支持将 ActiveX 控件作为第一级的 AIMMS 控件来整合,包括放置控件到页面并且将其属性关联到模型的标识符上这样的“点击”支持。
w_w_w_.__po_m_in_e_.c_om
高级 GUI 支持工具
w_ww_._p_o__m__i__ne__.c_o_m_
为了帮助你快速,并且以可维护的风格,建立完整的最终用户界面,AIMMS 提供如下高级工具:
- 页面管理器允许你指定一个原始的页面顺序,依靠它你可以将特定的页面管理器驱动的导航控件添加到模板或者页面中,以便指引一个最终用户浏览你的应用程序;
- 通过将常用控件(例如页眉、页脚,和导航按钮)放置到分层组织的模板上,而该模板可以被多个页面继承,模板管理器让你可以建立一个统一的外观和感觉;
- 菜单生成器容许你创建定制的最终用户菜单和工具栏,并将之添加到模板和页面中去。
最终用户界面的本地化
w_ww._po__m_in_e__._co_m
每当你被要求将应用程序发布给对你用来开发用户界面的语言不熟悉的最终用户时,AIMMS 提供一个本地化过程,该过程将最终用户界面使用的所有静态字符串自动分离,并将它们存储到模型中字符串参数中。这样就允许你提供一条相对平滑的翻译到最终用户当地语言的途径。
w_ww__._p_o_m_in__e._c_o__m__
AIMMS Unicode 版本
w_ww_.__p__o__mi_ne_._com__
如果你拥有在亚洲市场,需要你的 AIMMS 应用程序的本地版本的客户,而亚洲语言要求使用双字节字符来显示本地字符串,因此仅仅使用 AIMMS 内建的本地化过程是不够的。为了在这种情况下支持你,AIMMS 也提供一个另外的 Unicode 版本。AIMMS Unicode 版本允许你在字符串上使用 Unicode 字符,还可以设置模型和最终用户界面的元件描述,并且支持包含 ASCII 或 Unicode 数据的文件和数据库之间的通讯。
w_w__w.__p_o_m_i_ne_._c__om_
AIMMS 生产工具
w__ww.po_m__in__e_.c_o_m
AIMMS 开发环境包括许多图形化的树型生产工具,以帮助你开发模型以及相应的最终用户界面。所有工具都致力于减少在大型决策支持应用程序的开发和维护中涉及的工作量:
在 AIMMS IDE 中,所有这些工具都是可停靠窗口,默认都停靠在 AIMMS 主窗口的左边。
ww_w_._po_m_in_e_._c_om
模型管理器
w__ww._p__o_m_ine.__co_m
AIMMS 模型管理器提供模型中所有标识符、过程和函数的简单图示。所有相关信息都是保存在一个树状结构中,它可以被再分为用于以类似目录的形式储存部分类似信息的命名区间。模型管理器的模型树例子可以参见下图。
w_w_w_.__po__min_e._c__o__m
模型树的叶节点包括真实的标识符声明,同时过程和函数的声明则组成了你的建模应用程序的核心。
w_w_w_._p_o__mi_n__e._co__m__
双击模型树的一个声明,你会打开它的关联属性窗口,它显示了该标识符的相关属性。
下面是索引变量 ComponentFlow(f,c) 的属性窗口的图示。
w__w__w.__p_o_mi_n_e_._c_o_m__
标识符选择器
对于组织 AIMMS 模型中的所有信息来说,模型管理器是一个非常方便的工具,同时标识符选择器(如下图示)允许你选择并且同时查看模型中共享某个功能外观的多组标识符的属性。通过对重要属性的比较,这样的概述可以帮助你改进编辑模型的结构和内容,或者发现公式的勘漏。
这样的概述例子可参见下图。在图片中,一个特定模型公式的所有约束都被同时显示。通过修改选取标准,这样的概述可以扩展到带有所有唯一定义的决策变量(因此当一个模型生成时,会也会生成一个矩阵发送给一个数值求解器)。
w_w_w_._p_o_m__i__ne_.c_o__m
页面管理器
w_w__w__.__p__o_mi_n__e_.c__om_
页面管理器允许你在一个 AIMMS 应用程序中以一个树状风格,组织所有关联的最终用户窗口(也称作最终用户页面)。在页面树中的页面组织直接定义了最终用户界面的导航结构。一个页面树的例子如下图所示。
在页面树中,与某个页面相关联页面的位置定义了公共关系,比如父页、子页、下一页或者上一页,它能够被连接到例如按钮和菜单这样的导航控件上。当这些控件是某个页面模板的部分时,这个特性时非常有用的。
w__w_w_._p__om_i_ne__.__c_o_m
模板管理器
w_w__w__._po_mi__ne.__co__m
在模板管理器中,你可以确保所有最终用户页面都是一样大小并且保持一致的外观和感觉。你能够通过建立页面模板来定义一组最终用户页面的页面属性和公共对象,随后将所有最终用户页面放置到页面模板树上,这样你就可以完成上述功能了。模板树的例子请看下图。
ww__w._po_min__e_.co_m_
菜单生成器
w__w_w.__p_o_m__i_n_e__.__c__o_m_
运用菜单生成器,你可以生成定制的菜单栏、弹出式菜单和工具栏,并将之连接到应用程序中的模板页面或最终用户页面上。在菜单生成器窗口里,你能以树状结构定义菜单和工具栏,以便标明菜单、子菜单和菜单项的分层顺序。下图是一个菜单树的例子。所有菜单项都能连接到标准菜单动作,或者 AIMMS 应用程序模型树中过程和标识符。另外,让 AIMMS 自动生成基于部分页面树的导航菜单栏是可能的。
w_w_w_.pomin_e_._c__o__m_
数据管理器
w_ww_.p_om_in__e__.__c_om_
AIMMS 通过使用箱体和数据集,为储存模型结果和处理多个方案提供了一个高级系统。利用数据管理器,你可以管理为 AIMMS 应用程序构建的箱体和数据集的整个集合。右边的图片显示了一个箱体和数据集树的例子。除了加载一个单独箱体存放的数据到应用程序以为,你还可以使用数据管理器对箱体集的批量运行进行初始化,或者在最终用户屏幕上同时查看查看多个箱体数据。
w__w_w__.p__o__m_i_ne_.__c__om
数据管理设置
w__ww__._p_o__m_i__ne__._c_om_
数据管理设置工具是一个可以让你创建定制箱体和数据集的类型,以便保存仅仅与你的决策支持应用程序有关的数据。这样一个部分可以帮助你的最终用户仅仅保存对应模型的特定时期需要的信息,或者在数个箱体间共享公用数据。数据管理设置树的例子请看左边的图。一旦你建立了定制的箱体和数据集类型,当你的最终用户在数据管理窗口中执行箱体管理任务时,这些类型就变成可用的了。
ww__w__.__po__min__e_._co_m_
诊断工具
w_w_w_._p__om_i__n_e_._com
在 AIMMS 中开发了(最优化)模型以后,其中很可能包含了没注意到的逻辑或者编程错误。这些错误可能导致你根本不想出现的非可行解或者结果。而且,你可能会发现模型中某些过程的运行时间对于它们的计划用途来说长得难以接受,这通常是由一些低效率的公式语句导致。为了避免和解决这样的问题,AIMMS 提供了一些诊断工具,比如调试器、数据页面、Profile 编辑器、标识符基数工具,和数学规划检查器。
www_.__p_o_m_i__n__e__.co_m
调试器
w_ww_._po__mi_ne._com
为了跟踪在模型的赋值语句或者参数定义时的公式错误造成的错误,AIMMS 提供了源调试器。利用 AIMMS 调试器,你可以:
- 在模型的任何过程和函数中设置有条件或无条件的断点,在集和参数定义中也同样可以;
- 在过程,函数和定义的执行中步进;
- 查看调用当前运行行的过程堆栈;
- 在模型中的数据上,或者通过被观察的定义和过程的提示,又或者通过独立的数据页面,观察独立语句和定义的结果。
数据页面
ww__w_._pomi__n_e.com_
在模型管理器中,数据页面提供所选标识符当前内容的默认视图。在模型开发中,数据页面可以用于检查输入的定义和过程,或在调试过程中,检查特定语句的结果。AIMMS 呈现的数据页面种类,取决于标识符的种类。下面左边显示的数据页面是特定用于一维根集合的,右边的则是适用于二维参数。
w_w_w__.pomi__n_e_.__c__o__m
Profile 编辑器
w__w__w.p_o_m__i_ne_._c_om__
提供一个 Profile 编辑器来帮助你解决有关计算时间的问题。AIMMS profile 编辑器让你能够找出最耗时的:
- 过程和函数;
- 在过程和函数中的独立语句;
- 已定义集和参数;
- 矩阵生成中的约束和已定义变量。
在对模型运行的概括中,你可以获得调用模型中所有过程的数量的即时预览,还可以获得参数、变量和约束定义的评估数量,以及全部和平均执行时间。
w_w__w_.p_o__min_e.c_o_m_
标识符基数工具
w_w_w__.pom_i_n_e_._c_o_m__
另外一个造成性能问题的可能原因是当模型中的标识符缺失或者错误指定的域条件。作为一个结果,AIMMS 可以为这样的标识符保存很多的数据。另外,这些标识符的相关计算会消耗一些不应该的时间。为了找到缺失或错误指定域条件的标识符,AIMMS 提供如下图所示的标识符基数工具,它可以显示模型中每个标识符理论上的最大基数,和以最大基数百分比的形式保存的实际数量。当大部分的多维标识符都是十分稀少时,一个高的百分比就可能表示一个域条件的缺失。
w_w_w_._po_m__i__n_e_.__co_m_
数学规划检查器
w_w__w__.p_o__m_i_n_e_.__c__o__m_
AIMMS 数学规划检查器是一个用于视觉化检查和分析线性数学规划的工具集。使用它,你可以分析造成数学规划不可行、不切实际的结果,以及其他问题的原因。该检查器包括:
- 由生成的数学规划中符号和独立变量组成的树;
- 由生成的数学规划中符号和独立约束组成的树;
- 能够自动用一个大的常数代替无穷的变量边界,以便找到导致无界的原因;
- 能够找到不可恢复以及不可行系统(IIS),以及能够自动引入松弛变量以便找到导致不可行的原因
- 能够基于多种条件在上述的两个树中进行选择,例如人工选择,所有不可行约束、所有无界变量 、IIS、变量/约束状态(基本/非基本...)、所有包含当前未选择变量的约束、所有在当前选择约束中使用的变量...
- 一个图形化的视图,用于显示生成的矩阵子选择(由上述两树中的子选择叉乘积定义)的(块状)结构,并为每个块进行基于系数的着色,以便允许缩放问题的简单检测;
- 当前矩阵子选择的列表视图,它的列包括行/列名称、矩阵系数、级别值,以及变量和约束的旁注级别等等...
- 一个特别的 MIP 搜索树函数提供搜索树的分支信息。目前 CPLEX 9 是 AIMMS 中唯一提供该信息的 MIP 求解器。
集成的数据管理
w_w_w__.__p_omi_ne__.__co_m__
箱体管理在任何决策支持应用程序中,都是一个重要部分,它能让最终用户以改变的方案运行模型。AIMMS 提供了高级的数据管理器,允许你创建拥有相关数据块的数据类别(例如,拓扑数据或者供求方案)。与这些数据类别关联的数据集可以捆绑起来组成一个单独箱体,并且可以被多个箱体共享。另外,为了执行一个大规模的假设分析,你可以选择大量的箱体,并以批量的模式彻夜运行。
www.p_omin_e.__co_m_
数据库连接
ww_w__.__pomin__e._c_om_
因为数据是任何决策支持应用程序的命脉,AIMMS 拥有广泛的工具使用 ODBC 或者 OLEDB 数据连接接口将你的应用程序与商业数据库和电子表格(Oracle, SQL, Sybase, MS Access 等等)连接起来。下图显示的专门向导帮助你将数据表中的字段与 AIMMS 模型中相应的多维标识符关联起来。一旦你创建了这样的关系,你就可以直接读写语句以便与数据库互通数据了。
w__w__w.po__m_i__ne__.__co__m__
Excel 插件和函数库
w__ww__._pomi_n__e._c_om__
当 AIMMS 应用程序的最终用户坚持使用常用的 Excel 电子表格界面用于数据录入或者保存最优化模型的结果时,AIMMS 提供直觉式的 Excel 插件以及一个 AIMMS 函数库用于在 Excel 与 AIMMS 模型之间转换数据。
w__ww_.po_min__e_._c__o__m__
利用该插件,Excel 可以将一个 AIMMS 模型作为一个最优化组件来使用。使用如下图所示的该 Excel 插件配置向导,你能够轻易通过点击将在电子表格内的行列与 AIMMS 模型中的一个标识符连接起来。这个插件接受 Excel 中以多种表格和列表格式包含数据的行列。仅仅点击一个按钮或者调用一个 VB 函数,电子表格中的数据就可以与 AIMMS 模型交互。
w_w__w_.p__o__mi__n__e_._c_om_
使用 AIMMS 中的 Excel 函数库,AIMMS 应用程序可以将一个 Excel 文件作为数据源来检索模型的输入数据或保存模型的输出数据。象上面的 Excel 插件一样,该 Excel 函数库同样支持转换 Excel 中以多种表格和列表格式保存的数据。
ww__w_._p_o__m__in_e.c_o__m_
支持 XML 文件
ww_w_.p_o__m__i_n_e_._c__o_m_
AIMMS 支持对几乎所有格式的 XML 文件进行读写。如下图所示的一个专门的向导帮助你在与指定 XML 文件格式关联的 XML 架构和 AIMMS 模型中的多维标识符之间创建一个映射。一旦映射创建后,AIMMS 就可以依据它来提供一个函数集对 XML 数据进行读写。
w_ww._p__o_m__in_e.__c_o__m__
AIMMS 应用程序的部署
w__w_w__._pom_i_n__e_._c__om_
一旦 AIMMS 模型的开发完成了,它就可以被部署为:
AIMMS 对这些部署方案的每一个都提供支持。
w__w_w__._p_om_i_n_e__.c_o_m__
为最终用户应用程序和控件提供应用程序安全
ww_w_.p_o_mine_.__com_
不论你使用 AIMMS 创建了一个图形化最终用户应用程序还是一个最优化控件,许多安全措施在其中都扮演一个重要角色。
- 你怎样保护在模型中使用的专有知识?
- 你怎样防止应用程序的最终用户修改项目?
- 你怎样控制模型的使用和分发?
- 你怎样在应用程序中分辨多个最终用户以及他们的授权级别?
AIMMS 有几个内建的安全特性用于应付上面的问题。
w__w__w_.p_o_m__ine__.c__o_m_
加密你的模型内容
w_w_w._po_m_i_n__e_._co_m__
既然开发一个专有的决策支持应用程序会导致一个在时间和金钱方面的相当可观的投入,AIMMS 包含了用于防止未授权使用的工具。你模型的源代码会被一个基于你拥有的唯一客户代码的加密系统所保护。
ww_w_.__po_m_i_ne_._c__o__m_
应用程序许可
w_w_w._p_o__m_i_n_e._c_o__m
另外,AIMMS 允许你创造特定应用程序的增值许可,这些许可会被连接到一个或者一些指定的 AIMMS 许可。利用这样一个增值许可,你能限制(并发)用户的数量,或者你的应用程序的生存时间。
w__w_w._p__o_mine.co_m__
用户管理
w__ww_._p__o_m_i_ne_.__c_o__m_
AIMMS 也还有集成的工具用于建立你的最终用户数据库,并且将这个数据库连接到一个或更多基于 AIMMS 的应用程序。这个数据库包含了在一个应用程序中所有最终用户授权级别的信息。通过这些授权级别,你能够指定如下的条目:一个最终用户能否访问箱体数据、查看页面、修改数据,以及执行模型的特定部件。
w_ww.p_o_m_ine_.__c_om
AIMMS 最优化控件
w_w_w__._p_o__m_i__n__e_._co_m
为了将 AIMMS 模型调整为在其他单机版、服务器版或者 Web 应用程序中使用的最优化控件,AIMMS 提供:
使用这些接口,AIMMS 控件可以非常容易的集成到使用例如 C/C++、C#、Visual Basic 或者 Java 这样的编程语言编写的应用程序当中去。
w_w__w_._p__o_m_i_n_e__.c_o_m__
AIMMS 接口
w__w_w_._p__omi_n__e__._co__m
不论 C/C++ API 还是 AIMMS COM 对象,都实现了如下接口:
- 打开和关闭 AIMMS 项目;
- 分配和检索以密集或者松散样式在模型中声明的多维数据;
- 执行在模型中声明的过程。
密集数据以传递数组的方式转换,对一维和二维标识符来说是方便的,而且要传递的数据总量相对也比较小。如果这些条件都不符合松散的、行导向的要求,数据转换对于防止额外的内存需求是一个更好的选择。又或者,所有多维标识符的数据转换都可以使用 AIMMS 数据库连就特性来实现。
ww_w.po_m__i__ne_.__c_om
因为 AIMMS 也具有一个强大而又紧凑的过程化语言,AIMMS 控件不但可以用于求解最优化模型,还可以为调用它的应用程序执行多方面的数据操作。每当这样的数据操作在 AIMMS 中表达比在编写该应用程序的编程语言中表达更加容易时,这是尤其有用的。
w__w__w.__p_o__mine__.__c__o__m__
多代理技术
ww_w_._p_o_m__i_n_e_._c_o_m_
一个代理是为它的用户独立执行一个任务的软件程序。一个多代理系统是使用消息进行通讯的各代理的集合体,以便完成独立或者常见的目标。这些代理有时候被称为只能代理或者决策代理,以反映出它们在集合体中所扮演的决策角色。基于多代理系统的计算范例就是并行计算和非定论计算:代理可以驻留在不同的处理器中,而且执行的顺序并不是预先决定,这正是由于代理间的异步通讯。下面这些类型的问题就允许它们本身被代理分析和求解:
- 由依照一套市场规则来操作的自主招标和市场结算代理控制的自动拍卖。
- 分布式问题的求解,比如:一个复杂的供应链规划模型可以被分为许多不同的决策区段。劳工代理可以为每个决策区段评估可选的参数设置,同时控制代理可以将所有决策区段的答案组合起来以便观察整个解决方案的质量。
- 非常大型问题的大量并行处理。同时使用许多代理,并且让每个代理工作在它们自己所在的处理器上,这样就有可能在以小时计的时间内找到一个或者多个好的可选解决方案。而不用代理求解同样的问题,在达到同样的整体解决方案质量之前,可能要花费数个星期甚至数个月的时间。
AIMMS 提供一个多代理技术,该技术的代理就是执行一个指定 AIMMS 项目实例的 AIMMS 会话。当有多个这样的代理时,它们对应的 AIMMS 会话就被运行在一个局域网里面的一台或者多台电脑中。AIMMS 利用上述概念,提供数种工具用于设计和运行一个多代理系统。设计工具包括两个多方面的对话框:
- 一个用于多代理应用程序的总体设计;
- 一个用于设计拥有特定角色的指定代理。
这些对话框的一个例子请看下图。一旦一个 AIMMS 集合体被设计并实施好,它就可以由一些代理发送消息给其他代理来启动。
ww_w.p_om_i__n_e.__c_om_
AIMMS Web 服务
w_w_w.po_m__i_n__e.__c_o__m__
AIMMS 代理技术通用允许生成特定模型的 Web 服务。一旦一个代理角色被定义好,AIMMS 就可以生成一个 WSDL 文件和一个配置文件,这些文件允许 AIMMS 提供的 Web 服务处理器通过一个指定问题的 Web 服务来调用 AIMMS 代理。
ww__w_._po__min_e__._com_
AIMMS 生成的 Web 服务允许传递多维的输入数据,或者从关联的 AIMMS 代理中检索多维的输出数据。AIMMS Web 服务通用允许利用 Web 服务请求发送附件,例如,与 AIMMS 代理交互客户指定格式的 XML 数据。这样的客户指定 XML 数据可以试用 AIMMS 的 XML 映射特性进行读取。
w_ww_.pom_in_e.c__o_m_
使用该代理技术的高级功能,AIMMS 多代理技术可用于处理进入的请求。AIMMS 允许实现无状态和会话导向的 Web 服务。
ww_w_._po_m__i_n_e_._c_o_m__
求解器列表