私は小さなソフトウェアを作成していますが、概念的な問題に遭遇しました。私は小さな例で状況を説明しようとします:
- 複数の点を含む座標系があります。
- 各ポイントは、x軸とy軸上の位置(これまでのところ通常)で表され、青または赤のいずれかになります。
- 次に、イベントを作成します。
- 各イベントには1つの青と1つの赤のポイントが含まれており、それらを選択する方法にはいくつかの条件があります。
- 例:blue(x)とred(x)の合計(=青と赤の点のx値)は偶数でなければなりません。
- 同時に、y値のチェックサムが素数であってはならないという条件があるかもしれません。
- 各ポイントは、複数のイベントの一部にすることができます。
- 私の状況では、すべてのポイントには、イベントの作成時に「使用」される特定のリソースがあり、必要な量のリソースがある限り、ポイントは新しいイベントの一部にすることができます。
私が必要としているのは、できるだけ多くのイベントを作成することです(つまり、青または赤のグループのリソースが使い果たされるまで)。赤と青のポイントが2つあるとしましょう。はいおよびいいえは、それらが所定の条件を満たすかどうかを意味します。
B1R1はい B1R2はい B2R1はい B2R2いいえ
B1とR1(各リストの一番上)を一致させると、B2とR2が一致しないため、1つのイベントしか取得されません。一方、B1をR2と一致させ、B2をR1と一致させると、2つのイベントを受け取ります。これが私に必要なものです。
また、私のイベントの平均距離(青い点から赤い点まで)はできるだけ短くする必要があります。
条件に一致する限り、青と赤のポイントをランダムに選択してイベントを作成することを考えました。プロセス全体を複数回実行し、イベントの数が最も多く、平均距離が最も短い結果を維持します。しかし、結果の品質については何も言えないので、私はそれが本当に好きではありません。また、結果は決定論的ではありません。
どんな助けでも大歓迎です。