問題タブ [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.
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日遅れています。
在庫データ全体が正しくありません。誰にもアイデアがありますか?
バグか何かですか?ありがとう。
java - Javaで二次計画法(QP)を解くためにojAlgoを使用するにはどうすればよいですか?
Java で解決したい 2 次計画問題 (線形制約、整数変数を使用した 2 次目的関数) があります。ojAlgo はこれができるようです。残念ながら、それを使用する方法に関するドキュメントや例は見つかりません。誰か助けてくれませんか?
ojAlgo 以外のツールを使用して Java で QP を解決するための提案も歓迎します。
java - ojalgo の使用: 配列から行列を作成する
Javaで線形代数の問題を解決するためにojAlgoを使用しようとしています。既存の配列を使用してマトリックスを作成する「賢い」方法があるかどうかを尋ねています。
これは私の素朴なアプローチです:
これは機能しますが、毎回行うのは面倒です。まさにそれを行うクラスを作成し、それを実行するたびに呼び出すことができますが、もっと簡単なアプローチがあるのではないかと思います。
より簡単なアプローチはありますか?
java - Ojalgo: 特異行列の処理
私は ojalgo を使用して (NxN) Ax = b システムを Java で解決しています。A が特異行列になる可能性があるため、コードに何らかの方法でこれを認識させたいと思います。方法はありますか?(ドキュメントには、問題が不十分であり、メソッドが例外をスローしないsolve()
場合に、メソッドが可能な解決策を 1 つ返すと記載されています)。invert()
どんな助けでも大歓迎です。前もって感謝します。
java - Ojalgo: Java で行列が安定しているかどうかを定義する
Ojalgo を使用して M (NxN) 線形システム (Ax = B、B = [b1、b2、... bM]) を解こうとしています。apeteの助言のおかげで、A (A、B は PrimitiveMatrix 型のオブジェクト) が特異であるかどうかを確認することに成功しましたが、不安定な場合もあるようです..この行列が安定しているかどうかを判断することは、私にとって本当に役に立ちますか否か。
どんな助けでも大歓迎です。ありがとうございました!
java - デバッグ: Java、ojalgo を使用した線形代数計算での異常な実行時間
Ax = b
解決したい適度に大きな問題があります。マトリックス A は600x600
です。
私のコードは問題を解決しますが、そうするのに非常に長い時間がかかります。System.currentTimeMillis()
そこで、コードがどこで遅くなるかを(で) チェックしようとし ました。
A の計算中に、コマンド を実行することがわかりましたA = L1 * A0 * L1.transpose()
。プロセスは、この行で合計時間のほぼ 100% を消費します。
奇妙なことに、L1 は600x600
単位行列です (つまりA[i,j] = 1
、 の場合i == j
と0
の場合)。したがって、この行の実行にはそれほど時間がかかりません。この問題では簡単にバイパスできるはずです
ただし、その行をコメントアウトして に置き換えてバイパスしようとすると、さらに奇妙なことが起こりA = A0
ます。次に、コードの実行に時間がかかりすぎます(元の時間を10倍にした後)。また、CPU 使用率が 100% に達します。
確認したところ、A
とL1 * A0 * L1.transpose()
が同一であることがわかりました。
要約すると、私の Java コードの一部を使用して (私はライブラリ ojalgo を使用して行列を処理します):
このプロセス全体には約 69 秒かかり、そのうちの 65 秒は些細な計算で消費されますが、私はそれを回避できませんでした。小さい行列 (60x60) では、同じ手順が過去に正常に実行されています。
デバッグの試みをどのように進めればよいかよくわかりません。どんな助けでも大歓迎です。
問題は、私が最初に見積もっていたよりも少し深いところにあるようです。それらのマトリックスをアップロードするために印刷しようとしましたが、別の問題が発生しました。を初めて実行したときにコードがクラッシュすることがわかりましたSystem.out.println(A0.get(aRow,aColumn));
。A0
次元を持つゼロ行列のすべての位置に double 型の数値を追加することによって作成されました600x600
。さらに、次のメッセージが表示されます。
繰り返しますが、これらの行列が の場合、同じプロセスが正常に実行されることを強調したいと思います60x60
。