プロのゲーム攻略サイト

www.zgtz168.com

Dyson Sphere プログラム – ベルトのソーター効率の数学解析

数学でソーターとベルトの達人になりましょう。

ベルトのソーター効率の数学分析ガイド

はじめに

ソーターの効率は、ソースと宛先スポットのアイテム/スロットの可用性に影響されます。ソーターがベルトに配置されている場合、これはほとんど複雑です。

たとえば、ソートのターゲット グリッドが最もいっぱいのベルトである場合、ソーターがアイテムを配送するための空のスロットを見つけるのに苦労し、効率が大幅に低下することがわかります。並べ替えがほとんど空のベルトからアイテムを拾おうとしているときに、同じ効果が観察されます.

ベルトのソーター効率の正式な数学分析と、ゲーム内の計算/推定のためのいくつかの便利な公式を提供します。

背景

まず、現在のゲームの基本をおさらいしましょう:

タイプ:ソーター – ベルト

  • MK1:1.5/秒 – 4/秒
  • MK2:3/秒 – 12/秒
  • MK3:6/秒 – 30/秒

※表中のソーター速度は1グリッドスパンの場合です。実際の速度は、グリッド スパン (2 または 3) で除算されます。例えば。 2-グリッドスパンの MK2 ソーターは、MK1 と同じ 1.5/s です。また、3 グリッド スパンで 1/s になり、MK1 より小さくなります。

ドキュメントの残りの部分では、計算例として常に 1 グリッドスパン値を使用します。

もう少し明白ではありませんが、ベルトには実際にはタイルごとに 2 つのスロットがあります。 100 個のタイルのベルトを構築すると、ベルトに約 200 個のアイテムを保持できることがわかります (最後のタイルとターン タイルは直線の中央のタイルとわずかに異なるため、正確には 200 個ではありません)。ベルト速度は、実際にはタイルではなくベルト スロットで測定されます。つまり、MK1 ベルトのアイテムは 1 秒間に 6 スロット移動します。これは 6 タイルではなく 3 タイルです。これは簡単に確認できます。 60枚のタイルでループを閉じたベルトを作った場合、その上にアイテムを1つ置き、1つのループを完了する時間を測定します. 10 秒ではなく 20 秒になります。

これからは、ベルト速度の単位に b/s (ベルト スロット/秒) を使用して、タイル/秒と混同しないようにします。また、タイルの長さではなく、「スロット数」の長さをベルトの長さの測定に使用します。

ベルト スロットとソーターの遅延

数学を簡単に開始できるようにするために、まず、物事を測定するための代替量を定義します。

ランニングベルトをモデル化

これは簡単です。ベルトの走行を見ると、任意のポイントを次々とその速度で通過するベルト スロットがあります。自然数でベルト スロットにインデックスを付けると、次の 2 つのイベントが正確に 1 秒間隔で発生したことがわかります。

  • A.スロット 0 はソーターの真下にあります
  • B.スロット N は同じソーターのすぐ下にあります

ここで、N はベルト速度に等しくなります。

さらに 1 秒後、スロット 2N が同じソーターの真下にあることがわかります。

ソーター遅延

ソーターとベルトの間の相互作用を調査するには、速度の代わりにソーターの遅延を使用すると簡単です。

ソーター遅延 =ベルト速度/ソーター速度

たとえば、MK1 ベルトを備えた MK1 ソーターは次のようになります。

ソーター遅延 =(6b/s) / (1.5/s) =4b

これは、MK1 ベルトの MK1 ソーターのソーター遅延が 4 ベルト スロットであることを意味します。単一の MK1 ソーターを使用して空の MK1 ベルトにアイテムを配送すると、アイテムはスロット 0、4、8、12 のように 4 番目ごとのスロットに配置されることを既に確認したことでしょう。

ソーター遅延と効率の拡張

仕分け業者が、すでにいくつかのアイテムで満たされたベルトにアイテムを配送しようとすると、事態は複雑になります。ソーターがアイテムを運び、ベルトの上に手を伸ばしたが、ベルトの下のスロットがいっぱいで配達できなかったと想像してください。それは何をするためのものか?ただ待っているだけでベルトが通り過ぎる。次のスロットで、それが空の場合、配信は成功します。それ以外の場合は、再び待機します。ベルトが完全にいっぱいでない限り、最終的には空きロットを見つけてそれを実現します。ただし、多少の待ち時間がかかります。

定義します

待機時間 :仕向け先のソーターが実際に配達できるようになるまで待機するのにかかるベルト スロットの数

これは「時間」と呼ばれますが、秒単位ではなくベルト スロットで測定されることに注意してください。実際の時間に興味がある場合は、いつでもベルト速度で割ることができます。しかし、以下に示すように、このユニットを使用する方が便利です。

次に定義します

ソーター遅延延長 =ソーター遅延 + 待機時間

ご想像のとおり、実際のソーター速度は次の方法で計算できます:

実際のソーター速度 =ベルト速度 / 拡張ソーター遅延

または、元の値と比較したい場合:

実際のソーター速度 =ソーター速度 * (ソーター遅延 / 拡張ソーター遅延)

次に、効率を次のように定義できます。

効率 =実際のソーター速度 / ソーター速度 =ソーター遅延 / 拡張ソーター遅延

たとえば、遅延が 4 で待機時間が 2 のソーターは、4/(4+2) =66.7% の効率で実行されます。

確率と予想される遅延

前のセクションで説明しなかったこと:待機時間、およびその結果としての拡張ソーター遅延は固定数ではありません。それらは、試行ごとに異なる値を取る確率変数と見なすことができます。

同期ベルト

空の MK1 ベルトが 4 つの MK1 ソーターを通過していると想像してください (隣接している必要はありません)。ソーターが動作を開始すると、最初のソーターは常に待機せずに配送できるため、待機時間は常に 0 で、拡張ソーター遅延は常に 4 です。その後、アイテムをスロット 0、4、8、12… に配送します。2 番目のソーターは、 1 つのスロットを待つ必要があるかもしれませんが、1、5、7、11 で配信されます... 3 番目と 4 番目のソーターにも同じことが当てはまります。最初の配信試行で待機が発生する可能性がありますが、その後の配信はすべて「同期」されており、待機する必要はありません。

この状況では、ベルトがいっぱいでない場合、おそらく最初の配達を除いて、ソーターは最大の効率を発揮します。

ランダムベルト

ここで、別の空の MK1 ベルトが、さまざまなメカニズム (さまざまなタイプのソーター、スプリッター、ベルト マージ) によって充填されたり部分的に空になったりすることを想像してください。それらのいくつかは、別のベルトにたまたま農産物があるか、組み立て業者が作業を終了したか、またはストレージが空かどうかなど、他の要因に依存する場合があります。この場合、ベルトに配置されたアイテムが同期している可能性は低いです (ベルトの長さとそれが接触するシステムとして)。次に、ベルト スロットが完全に確率変数であると仮定できます。

それをモデル化する 1 つの方法:

ランダム ベルト スロット モデル:

各ベルト スロットには、独立して p が空になる確率があります。

言い換えると、ベルトは (1-p)*100% 充填済み、または p*100% 空です。

たとえば、2000 個のスロットがあり、800 個のアイテムがある長いベルトの場合、ベルトが 40% 埋まっており、60% が空である場合、各スロットにアイテムがある確率は 0.4 になります。

小学校の算数では、このようなランダム モデルを使用すると、予想される待ち時間は次のようになります。

E(待機時間) =1/p – 1

完全に空のベルトの場合、p は 1 で、待機時間は自然に 0 になります。

ほぼ完全なベルトの場合、p は 0 に近いため、待機時間は非常に大きくなります。

予想される待ち時間を使用して、推定効率を表すことができます:

推定効率 =ソーター遅延 / E(拡張ソーター遅延) =ソーター遅延 / (ソーター遅延 + E(待機時間)) =1 / (1 + a)

a要素は

a =(1/p – 1) / ソーター遅延

A ファクターの推定

A-factor は、値を見積もるための簡単な方法を提供します。ベルトが空であることを考えると、係数を計算して効率をすばやく計算できます。また、その逆も可能です。

たとえば、効率を半分にするには、A ファクターを 1 にする必要があります。Sorter Delay が 4 の場合、これは p =1/5 を意味します。つまり、20% の空度で MK1 ベルトに配送する MK1 ソーターは、50% の効率で動作します。次に、MK1 ソーターを MK2 ソーターに変更するとどうなるか疑問に思われるかもしれません。計算してみましょう:

  • p =1/5
  • ソーター遅延 =2
  • a =2
  • 推定効率 =1/3

低いです!実際のソーターの速度は、1.5 * 1/2 =0.75 から 3 * 1/3 =1 に変化するため、さらに速いことに注意してください。ただし、2 倍の改善にはなりません。

あるいは、同じ 1/5 の空き容量で、ベルトを MK1 から MK2 に切り替え、MK1 ソーターをそのまま使用すると、次の結果が得られます。

  • p =1/5
  • ソーター遅延 =8
  • a =1/2
  • 推定効率 =2/3

これにより、ソーターを変更した場合と同じように、1.5 * 2/3 =1 の実際のソーター速度が得られます。

フォーミュラの範囲を広げる

私たちの独自の処方は、部分的に充填されたベルトにアイテムを届けるためのものです.ただし、当然、ベルトからアイテムを拾う場合も同様です。 p の定義を空ではなく完全に変更するだけで、他はすべて同じです。

同様の例を挙げると、半分の効率を得るには、1 の A ファクターが必要です。ソーター遅延が 4 の場合、これは p =1/5 を意味します。つまり、満杯が 20%、または空が 80% の MK1 ベルトからアイテムをピックアップする MK1 ソーターは、50% の効率で動作します。

さらに派手なことに、ソーターにフィルターが設定されている場合、式を混合アイテムに使用できます。鉄が 40%、磁石が 30%、銅が 20% で満たされており、10% が空であるベルトを想像してください。代わりに、ソーターが磁石を選択するようにフィルター処理されている場合、p =30% です。 p =20% の銅と p =10% の配送アイテム。

ファンシー アプリケーション:ベルトの自動負荷バランス

すでにこのガイドを読むのをやめた人もいるかもしれませんし、少なくともこの数学を理解するために何が必要なのか疑問に思った人もいるでしょう。さて、ここに素晴らしいアプリケーションがあります:

長くて大きなループ ベルトを構築して、アイテムが混在しているとします (メイン バスは大きなループの例ですが、これまでのところ、アイテムが混在している状態で動作するようになった人は見たことがありません)。パーセンテージを制御できますか?ベルト上の各アイテムの、自動的に。答えはイエスです!

簡単なセットアップから始めましょう:

ベルト ループには、鉄を「アップロード」する場所が 1 つと、そこから鉄を「ダウンロード」する場所が 1 つしかありません。いくつかの変数を定義しましょう:

  • ソーター遅延のアップロード =u
  • ソーターのダウンロード遅延 =d
  • ベルト空度 =m
  • ループに充填された鉄の比率 =r

では、ループ内の鉄の割合が変化するとどうなるでしょうか?

さて、この「バランス条件」の方程式を得ることができます:

  • 推定実際のアップロード速度 =推定実際のダウンロード速度
  • =>
  • E(拡張アップロード ソーター遅延) =E(拡張ダウンロード ソーター遅延)

上記で定義した変数を次の場所に配置します:

  • u + 1/m – 1 =d + 1/r – 1
  • =>
  • 1/r =1/m + (u – d)

構築されると、u – d は Delay Diff と呼ばれる定数になります。

アップロードソーターとダウンロードソーターの公称速度が同じ場合、Delay Diff が 0 の場合、ベルト上の鉄比率が空比率と同じになるバランス状態になります。ベルトに鉄しかない場合、両方とも 1/2 です。ベルトに N 種類のアイテムがあり、すべて遅延差が 0 の場合、それらはそれぞれベルトに 1/(1+N) を取り、最後の 1/(1+N) は空です。

アップロードが速く(したがって u が小さい)、ダウンロードが遅いということは、負の Delay Diff を意味します。つまり、1/r は 1/m よりも小さいため、r は m よりも大きくなります。

たとえば、アップロード用の MK1 ソーターとダウンロード用の MK2 ソーターを備えた MK1 ベルトの場合、Sorter Diff =2 になります。ベルトに鉄しかない場合、方程式を解くと、最終的に約 71% の空になることがわかります。ベルトの鉄は 29% です。

本当に驚くべき部分は、これが自動的にバランスを取ることです。ベルトのアイアン数が多すぎる (r が大きい) と、ダウンロードが速くなり、アイアン数が減ります。ベルトに空きスポットが多すぎると、アップロード速度が速くなり、空きスペースが減ります。

簡単な例

ここでは、3 種類のアイテムが混在する単純な小さなループを作成しました。

さまざまな種類のアップロード/ダウンロード ソーターを選択することで、ループ内の各アイテムの割合を制御して、バランスを取ることができます。

重いダウンロード:

重いアップロード:

アイテムがランダムではなくなり、何らかのパターンをすばやく形成していることに気付くかもしれません。

ランダマイザーと混合:

プロダクション オート ストッパー

アップロード/ダウンロード速度のバランスと組み合わせて、T ジョイント トリックを使用して生産を自動停止できます。

Basically, when the steel ratio in the belt loop is high and emptiness is low, the speed that we are getting steel from the belt loop is higher than the speed we deliver, as a result, the “horizontal” belt is always full. The product from the middle belt cannot get into the horizontal belt as long as it’s full.

Potential Caveat Discussion

Validity of the randomness model

This analysis is based on the assumption that the items on a belt will be randomly distributed. In reality it is more or less not so. Specifically, as player we tend build the same thing as the same place. As a result, the items on the belt is likely to exhibit some patterns thus deviate away from the math result based on random distribution.

At large scale belt loops though (main bus loop for mixed items), this tends to be a pretty good estimation. We might get somewhat higher ratio of one item and low ratio of another. But we can be sure that the big mixed item loop will never stop running and will contain each item type in a reasonable range.

Appendix:The elementary school Math

With independent random tests, to succeed the first one it takes, as expected value, 1/p runs.

In our case, the sorter returns and immediately does a “test” to try to deliver the item. So our Wait Time is effectively defined as number of tests – 1.

Note that, strictly speaking, the expected value of 1/X is not 1/E(X). That’s why I called it “estimated” efficiency instead of expected efficiency. They will be slightly off. But they should be close enough for estimation purposes.