問題タブ [ojalgo]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
165 参照

java - ojAlgo ライブラリ: データ不一致のバグ?

最近、ojAlgo ライブラリを使い始めました。詳細はhttp://ojalgo.org/index.htmlから入手できます。

しかし、それを使おうとすると問題が発生します。ヤフーファイナンスから株価データを取得したいのですが、入荷日と株価が一致しません。

以下は、Java コード スニペットです。

返された結果は

5 月 28 日水曜日 17:00:00 PDT 1986 2.89

しかし、私は結果が

5 月 29 日木曜日 17:00:00 PDT 1986 2.89

ご覧のとおり、日付にはオフセットがあります。この問題は、ypriceSeries の結果全体に影響します。対応する株価の日付が1日遅れています。

在庫データ全体が正しくありません。誰にもアイデアがありますか?

バグか何かですか?ありがとう。

0 投票する
2 に答える
2840 参照

java - Javaで二次計画法(QP)を解くためにojAlgoを使用するにはどうすればよいですか?

Java で解決したい 2 次計画問題 (線形制約、整数変数を使用した 2 次目的関数) があります。ojAlgo はこれができるようです。残念ながら、それを使用する方法に関するドキュメントや例は見つかりません。誰か助けてくれませんか?

ojAlgo 以外のツールを使用して Java で QP を解決するための提案も歓迎します。

0 投票する
1 に答える
1614 参照

java - ojalgo の使用: 配列から行列を作成する

Javaで線形代数の問題を解決するためにojAlgoを使用しようとしています。既存の配列を使用してマトリックスを作成する「賢い」方法があるかどうかを尋ねています。

これは私の素朴なアプローチです:

これは機能しますが、毎回行うのは面倒です。まさにそれを行うクラスを作成し、それを実行するたびに呼び出すことができますが、もっと簡単なアプローチがあるのではないかと思います。

より簡単なアプローチはありますか?

0 投票する
1 に答える
325 参照

java - Ojalgo: 特異行列の処理

私は ojalgo を使用して (NxN) Ax = b システムを Java で解決しています。A が特異行列になる可能性があるため、コードに何らかの方法でこれを認識させたいと思います。方法はありますか?(ドキュメントには、問題が不十分であり、メソッドが例外をスローしないsolve()場合に、メソッドが可能な解決策を 1 つ返すと記載されています)。invert()

どんな助けでも大歓迎です。前もって感謝します。

0 投票する
1 に答える
83 参照

java - Ojalgo: Java で行列が安定しているかどうかを定義する

Ojalgo を使用して M (NxN) 線形システム (Ax = B、B = [b1、b2、... bM]) を解こうとしています。apeteの助言のおかげで、A (A、B は PrimitiveMatrix 型のオブジェクト) が特異であるかどうかを確認することに成功しましたが、不安定な場合もあるようです..この行列が安定しているかどうかを判断することは、私にとって本当に役に立ちますか否か。

どんな助けでも大歓迎です。ありがとうございました!

0 投票する
1 に答える
167 参照

java - デバッグ: Java、ojalgo を使用した線形代数計算での異常な実行時間

Ax = b解決したい適度に大きな問題があります。マトリックス A は600x600です。

私のコードは問題を解決しますが、そうするのに非常に長い時間がかかります。System.currentTimeMillis()そこで、コードがどこで遅くなるかを(で) チェックしようとし ました。

A の計算中に、コマンド を実行することがわかりましたA = L1 * A0 * L1.transpose()。プロセスは、この行で合計時間のほぼ 100% を消費します。

奇妙なことに、L1 は600x600単位行列です (つまりA[i,j] = 1、 の場合i == j0の場合)。したがって、この行の実行にはそれほど時間がかかりません。この問題では簡単にバイパスできるはずです

ただし、その行をコメントアウトして に置き換えてバイパスしようとすると、さらに奇妙なことが起こりA = A0ます。次に、コードの実行に時間がかかりすぎます(元の時間を10倍にした後)。また、CPU 使用率が 100% に達します。

確認したところ、AL1 * A0 * L1.transpose()が同一であることがわかりました。

要約すると、私の Java コードの一部を使用して (私はライブラリ ojalgo を使用して行列を処理します):

このプロセス全体には約 69 秒かかり、そのうちの 65 秒は些細な計算で消費されますが、私はそれを回避できませんでした。小さい行列 (60x60) では、同じ手順が過去に正常に実行されています。

デバッグの試みをどのように進めればよいかよくわかりません。どんな助けでも大歓迎です。

問題は、私が最初に見積もっていたよりも少し深いところにあるようです。それらのマトリックスをアップロードするために印刷しようとしましたが、別の問題が発生しました。を初めて実行したときにコードがクラッシュすることがわかりましたSystem.out.println(A0.get(aRow,aColumn));A0次元を持つゼロ行列のすべての位置に double 型の数値を追加することによって作成されました600x600。さらに、次のメッセージが表示されます。

繰り返しますが、これらの行列が の場合、同じプロセスが正常に実行されることを強調したいと思います60x60