首页 > 解决方案 > ojAlog - Kotlin 中的 ConvexSolver:二维数组

问题描述

我正在尝试实现一些示例,因为我计划探索 ojAlgo 以进行优化。我的问题很简单。

在 Java 中,我可以轻松编写:

PrimitiveDenseStore Q = PrimitiveDenseStore.FACTORY.rows(new double[][]{{2.0,0.0}, {0.0, 2.0}});

我尝试做与 kotlin 相同的事情:

val Q: Array<DoubleArray> = arrayOf(DoubleArray(2.0, 0.0), DoubleArray(2.0, 0.0))
var tmpQ = PrimitiveDenseStore.FACTORY.rows(Q)

但似乎 .rows 不能用我给出的论点来调用。

也许我做了一些愚蠢的事情,但我会很感激你的帮助。

谢谢你。

标签: kotlinconvex-optimizationojalgo

解决方案


DoubleArray构造函数将数组大小作为第一个参数,这就是您的构造无效的原因。double[][]Kotlin 中的类似物是Array<DoubleArray>,没错,但它应该是这样构造的:

val Q: Array<DoubleArray> = arrayOf(doubleArrayOf(2.0, 0.0), doubleArrayOf(2.0, 0.0))

更新:

看起来rows函数double[]... source作为参数,所以在 Kotlin 中你可以使用扩展运算符:

val Q: Array<DoubleArray> = arrayOf(doubleArrayOf(2.0, 0.0), doubleArrayOf(2.0, 0.0))
var tmpQ = PrimitiveDenseStore.FACTORY.rows(*Q)

推荐阅读