私は別のシミュレーション環境(Pythonでも書かれています)内で機能を最適化するための進化的アルゴリズムを実行しています。シミュレーション環境自体はPythonクラスのインスタンスで、計算コストが高く(1回の実行で約4秒)、約1Gbのメモリを占有します。このシミュレーション環境でテストするために約10万種類の異なる関数を生成しているので、できるだけ多くのシミュレーションをオフラインにする方法が必要です。Python 2.7クラスインスタンスのディープコピーを回避する方法は?
私ができることは、シミュレーションの大部分をあらかじめ計算しておくことです(つまり、クラスのインスタンスを初期化し、クラス関数のサブセットを実行します)。次に、小さなコンポーネント残りのいくつかの機能はクラス内に残っています)。一般に、評価時間は〜1秒に短縮され、実行時間が大幅に短縮されます。
ただし、新しい関数がシミュレーションクラスインスタンスに渡されるたびに、クラスインスタンスは関数によって変更されます(したがって、次の関数評価の結果に影響します)。私はすべての評価の前にクラスインスタンス全体のディープコピーを行うことでこれを防ぐことができますが、そのたびにシミュレーション全体を実行するよりも遅くなります。
各ステージでクラス全体をディープコピーしないで同じ結果を得る方法はありますか?本質的に、各関数の評価は、まったく同じクラスインスタンスに対して実行する必要があります。
おかげ