Go back to the English version of the documentation在模型中引用导入的数据和定义解决方案输出
在 Decision Optimization 试验中引用模型中的已导入数据
Last updated: 2024年8月12日
对于 Python DOcplex 或 OPL 模型,可以使用以下语法来引用导入的数据。
Python 模型
对于 Python DOcplex 模型,可以从输入字典访问您在 试验 UI 中的 准备数据 视图 中导入的数据。 要访问导入的数据,必须使用以下语法定义每个表
inputs['tablename']
。 例如,在此代码行中, food 是从名为 diet_food
的表中定义的实体:food = inputs['diet_food']
同样,要在 试验 UI 的 Explore 解决方案 视图 中显示表,必须使用语法
outputs['tablename']
指定这些表。 例如outputs['solution'] = solution_df
定义名为 solution
的输出表。 Python 模型中的实体 solution_df
定义此表。您可以在 DO-samples的 Model_Builder 文件夹中找到此 Diet 示例。 要在 experiment UI 中导入并运行(求解)该模型,请参阅 求解并分析 Decision Optimization模型:饮食问题。
OPL 模型
在 OPL 模型中,您必须声明
tupleset
,对于您在准备数据看法并具有相同的名称。 每个元组集的模式必须具有与表相同数量的列并使用相同的字段名称。 例如,如果在 准备数据 视图 中有一个名为 Product
且具有属性 name, demand, insideCost,
和 outsideCost
的输入表,那么 OPL 模型必须包含以下定义:tuple TProduct {
key string name;
float demand;
float insideCost;
float outsideCost;
};
{TProduct} Product = ...;
只使用元组和元组集作为 OPL 输入的限制是为了便于与数据源集成。 例如,可以访问 SQL 数据源并以最小的工作量进行数据流;NoSQL数据源可以被访问,数据可以自动转换为表格。 如有必要,优化模型开发者可以在优化期间重新规划数据以填充其他数据结构,但此处理不得影响输入或输出数据。
类似地,如果你想在探索解决方案看法,你必须定义一个
tupleset
用于 OPL 模型中的此输出表。 例如,此代码生成解决方案中包含 3 列的输出表。/// solution
tuple TPlannedProduction {
key string productId;
float insideProduction;
float outsideProduction;
}
{TPlannedProduction} plan = {<p.name, Inside[p], Outside[p]> | p in Products};
您可以在 DO-samples 的 Model_Builder 文件夹中找到这个面食生产问题的 OPL 模型示例。 您可下载并解压缩所有样本。 选择相应的产品和版本子文件夹。
了解更多信息
- 有关创建 Python DOcplex 模型的教程,请参阅 解决和分析 Decision Optimization模型:饮食问题。
- 有关 OPL 模型的更多信息,请参阅 Decision Optimization OPL 模型。