在我的anylogic项目中,我从内部数据库查询数据集。我要查询的表具有以下结构:
df['Total Score'] = df[['Second','Third']].dot([1,3])
我能找到的唯一示例使用Tuple类,如下所示。它可以工作,但是我不得不从项目中手动提取所需的值,这感觉很笨拙。
Name: product_innovation_level
--------------------------------
ID|level_customer|level_employee|
--|--------------|--------------|
1| 10| 14|
是否有更好的方法将值直接选择到模型类中?我正在寻找这样的东西:
Tuple innovationLevel = selectFrom(product_innovation_level).
where(product_innovation_level.id.eq(1)).
firstResult(product_innovation_level.level_customer, product_innovation_level.level_employee);
double ngEmployee = innovationLevel.get(product_innovation_level.level_employee);
double ngCustomer = innovationLevel.get(product_innovation_level.level_customer);
我应该为xxx使用哪个班级?我找到了一个自动创建的类Qproduct_innovation_level,但没有找到访问此数据集值的方法。
xxx innovationLevel = selectFrom(product_innovation_level).
where(product_innovation_level.id.eq(1)).
firstResult(xxx);
我试图自己编写一个模型类,但是在这里我遇到类型不匹配的错误(无法从Qproduct_innovation_level转换为InnovationLevelModel)。
答案 0 :(得分:0)
好吧,我的回答可能有点荒谬,但这也许正是您想要的...
使用以下构造函数和变量创建一个类:
public class MyClass implements Serializable {
public double ngEmployee;
public double ngCustomer;
/**
* Default constructor
*/
public MyClass(Tuple innovationLevel) {
this.ngEmployee = innovationLevel.get(product_innovation_level.level_employee);
this.ngCustomer = innovationLevel.get(product_innovation_level.level_customer);
}
}
然后您可以创建该类的实例,如下所示:
MyClass mc=new MyClass(selectFrom(product_innovation_level).
where(product_innovation_level.id.eq(1)).
firstResult(product_innovation_level.level_customer, product_innovation_level.level_employee));
魔术...现在您可以使用mc.ngEmployee
和mc.ngCustomer
答案 1 :(得分:0)
在这里,您可以从数据库表中使用AnyLogic可视化定义的代理填充自动创建功能(包括代理类型定义)。
使用Agent
向导(位于代理面板的顶部):通过使用数据库表创建新类型的填充,AnyLogic将
因此,在您的情况下,您可能有innovationLevels
个代理类型为InnovationLevel
的种群,其中该代理具有参数
id
(类型int
)levelCustomer
(类型int
)levelEmployee
(类型int
)(该向导将自动定义此代理类型及其在数据库表驱动的填充中的使用)。
请参见 AnyLogic帮助>基于代理的建模>基于数据库数据创建新的代理填充。
如果您的ID是顺序的(例如1,2,3,...),则还可以通过列表中的位置访问给定的创新级别(例如,列表中的第二个innovationLevels(1)
)可能是ID 2)。如果您希望能够按ID“随机访问”创新级别(如果ID不是连续的),还可以执行诸如创建ID(到集合)到InnovationLevel
的映射这样的操作。
其他代理可以根据需要包括对InnovationLevel
实例的引用。