Uranium processing: Difference between revisions
SyntaxTerror (talk | contribs) |
(Precise math analysis behind u235) Tag: Reverted |
||
Line 36: | Line 36: | ||
|- | |- | ||
|} | |} | ||
== Precise Mathematical Analysis == | |||
In some cases you will need to know how many [[centrifuge]]s will you need exactly for each [[reactor]] stability without [[Kovarex enrichment process]]. For this purpose man can derive some formulas for estimation: probability of obtaining the required amount of [[uranium-235]] or even number of needed [[centrifuge]]s. | |||
The main goal of these calculus is to derive formula that can be easily applied and sustainable for predictions despite advancement along [[technologies]], game version updates, or ingame development and modifications. | |||
=== Variables === | |||
Let's introduce some variables that we'll need in further calculations | |||
* ''<code>T</code> - overall time of a [[reactor]] working (in seconds*)'' | |||
* ''<code>t</code> - time of a [[reactor]] cycle (in seconds*)'' | |||
* ''<code>c</code> - consumption of [[uranium-235]] per reactor cycle'' | |||
* ''<code>k</code> - [[centrifuge]]s number (our target value for calculations)'' | |||
* ''<code>p</code> - probability of [[uranium-235]] production per centrifuge cycle'' | |||
* ''<code>n</code> - overall number of [[centrifuge]] cycles'' | |||
* ''<code>τ</code> - [[centrifuge]] time per cycle'' | |||
* ''<code>α</code> - desired probability of having success number [[uranium-235]] to sustain all <code>T</code> time of [[reactor]] stable work**'' | |||
<nowiki>*</nowiki> In seconds or you can measure in in-game [[tick]]s, it does not detracts from the generality of reasoning | |||
<nowiki>**</nowiki> Known as [[https://en.wikipedia.org/wiki/Confidence_interval confidence level]]. Due to probability nature this variable can be only in <code>(0; 1)</code> interval. To preserve scientific papers treatment of significance we will use: 0,9; 0,95; 0,99 values. This value is opposite to [[https://en.wikipedia.org/wiki/Statistical_significance significance level]] for convinience and ease of interpretation. | |||
=== Assumptions === | |||
;Assumption 1 | |||
: All <code>k</code> centrifuges are working without stop and simultaneously during each <code>n</code> cycles and have the same <code>τ</code> | |||
;Assumption 2 | |||
: There are always enough resources for transforming [[uranium-235]] in reactor fuel * | |||
;Assumption 3 | |||
: Transformation of [[uranium-235]] in fuel for reactors can be negleted ** | |||
;Assumption 4 (for longrun play) | |||
: Game can be played infinitely (this is technical assumption, for practical usage it's enough average playtime) | |||
<nowiki>*</nowiki> For instance, base game [[uranium-238]] has very high probability (<code>0.993</code>) so there are always enough of it for [[uranium fuel cell]] | |||
<nowiki>**</nowiki> For instance, base game [[uranium-235]] is transforming into 10 [[uranium fuel cell]]s for <code>12 sec</code>, but [[reactor]] cycle is <code>200 sec</code> - that's insignificant and you can always build more [[assembler]]s to sustain production throughput time. | |||
=== Exact approach === | |||
The main question we're going to answer: | |||
<blockquote> | |||
How many <code>k</code> [[centrifuge]]s do we need during <code>n</code> cycles of [[centrifuge]] production to sustain [[reactor]] working continuously for <code>T</code> time with probability <code>α</code> | |||
</blockquote> | |||
Assume, that each [[centrifuge]] in each production cycle is represented by '''''X<sub>ij</sub>''''' [[https://en.wikipedia.org/wiki/Random_variable#:~:text=%5Bedit%5D-,Discrete%20random%20variable,-%5Bedit%5D discrete random variable]], where '''''i''''' is number of [[centrifuge]] and '''''j''''' is number of production cycle. | |||
We say, that if '''''X<sub>ij</sub>''''' has produced [[uranium-235]], then it's value <code>X<sub>ij</sub>=1</code>, if '''''X<sub>ij</sub>''''' hasn't, it's value <code>X<sub>ij</sub>=0</code>. That's why, <code> P(X<sub>ij</sub> = m) = 0.007, if m=1</code> and <code> P(X<sub>ij</sub> = m) = 0.993, if m=0</code> (This is so called [[https://en.wikipedia.org/wiki/Bernoulli_distribution Bernoulli distribution]]). | |||
Let's find out how many time [[centrifuge]]s should produce [[uranium-235]] in all cycles to sustain a [[reactor]]: | |||
<br> | |||
From one side, there are <code>T/t</code> of [[reactor]] working cycles and as a result <code>T*c/t</code> overall [[uranium-235]] quantity need for working continuously all '''''T''''' time. Let's denote this value as '''''u''''', so <code>u=T*c/t</code>. | |||
<br> | |||
From other side, our [[centrifuge]]s during '''''T''''' time will work without stop and simultaneously for '''''n''''' cycles, that means that <code>T = n*τ</code> | |||
Wrapping all up, we get that our needed quantity of '''''u''''' is <code>u=n*τ*c/t</code> for all '''''T''''' time [[reactor]] works. | |||
1) Let's consider simple case when we need only for '''''n''''' cycles and '''''k''''' [[centrifuge]]s to produce exactly '''''u''''' amount of [[uranium-235]] (technically, you need ceil <code>⌈u⌉</code>, but we will omit this for simplicity of calculations). As we figured out earlie each '''''X<sub>ij</sub>''''' has Bernoulli distribution, but for all '''''T''''' we produce <code>X<sub>all</sub> = ∑<sub>i</sub><sup>n</sup>∑<sub>j</sub><sup>k</sup>X<sub>ij</sub></code> quantity of [[uranium-235]] (this is sum for '''''n''''' cycles and '''''k''''' [[centrifuge]]s). But as all '''''X<sub>ij</sub>''''' are independent Bernoulli trials, so <code>X<sub>all</sub></code> is distributed by definition by [[https://en.wikipedia.org/wiki/Binomial_distribution binomial distribution]] <code>X<sub>all</sub> ~ B(nk, p)</code>. This leads us to probability of producing exactly '''''u''''' [[uranium-235]] for '''''n''''' cycles with '''''k''''' [[centrifuge]]s <code>P(X<sub>all</sub>=u) = C<sub>nk</sub><sup>u</sup> * p<sup>u</sup> * (1-p)<sup>nk-u</sup></code>, where <code>C<sub>nk</sub><sup>u</sup></code> is [[https://en.wikipedia.org/wiki/Binomial_coefficient binomial coefficient]]. As long as we know <code>u=n*τ*c/t</code> we can get full probability value of getting exact amount [[uranium-235]] for sustaining [[reactor]]: | |||
<blockquote> | |||
<code>P(X<sub>all</sub>=n*τ*c/t) = C<sub>nk</sub><sup>n*τ*c/t</sup> * p<sup>n*τ*c/t</sup> * (1-p)<sup>nk-n*τ*c/t</sup></code> | |||
</blockquote> | |||
2) However, practically there is a probability to get more than '''u''' amount of [[uranium-235]], this corresponds to our purpose of sustaining [[reactor]] working continuously too. The main goal of [[centrifuge]]s production is not producing less than <code>u=n*τ*c/t</code>. That's why we need to calculate the probability of such event won't never occur in future, in other words our probability of always being success: <code>P(X<sub>all</sub> ≥ u)</code>. On the other side, <code>P(X<sub>all</sub> ≥ u) = 1 - P(X<sub>all</sub> < u)</code>, but <code>P(X<sub>all</sub> < u)</code> is [[https://en.wikipedia.org/wiki/Binomial_distribution#:~:text=0.059535.-,Cumulative%20distribution%20function,-%5Bedit%5D Cumulative distribution function]] and has exact formula for computation -- as sum of all probabilities for each <code>m < u</code> or <code>P(Xall < u) = ∑<sub>i</sub><sup>u-1</sup>P(X<sub>all</sub>=m)</code>, '''m''' is integer. The most important part is that we would like the probability <code>P(X<sub>all</sub> ≥ u)</code> to be high enough, that's why we need to set '''''α''''' variable (as for nature of probability it's impossible for <code>P(X<sub>all</sub> ≥ u)</code> to equal exactly '''''1'''''). That's how we can derive equation for variables selection: | |||
<blockquote> | |||
<code>P(X<sub>all</sub>≥u) ≥ α</code> ⇒ <code>1 - ∑<sub>m</sub><sup>u-1</sup>P(X<sub>all</sub>=m) ≥ α</code> ⇒ {using results of previous paragraph 1} ⇒ <code>∑<sub>m</sub><sup>n*τ*c/t-1</sup>C<sub>nk</sub><sup>m</sup> * p<sup>m</sup> * (1-p)<sup>nk-m</sup> ≤ 1 - α</code> | |||
</blockquote> | |||
So now we have formula (technically speaking, hypothesis test verification) to figure out how many '''''k''''' [[centrifuge]]s we need to sustain [[reactor]] with consumption '''''c''''' during '''''n''''' cycles of [[centrifuge]]s production. | |||
This is the most general formula and not very comfort to use. There is no pure analitics form of sum, that's why we need to calculate each probability in some separetly. Moreover, the main disadvantage is in using high value of '''''n''''' and '''''u'''''. It is impossible due to binomial coefficiant will become an enormous number! So it can not be used to predict figures for longrun playtime. We will consider this in future calculations. However, this formula will be extremely useful if you are considering playing game speedrunning and prepare some blueprints. | |||
==== Example base game shortrun ==== | |||
Assume, you would like to find out how many [[centrifuge]]s you need to fully work to sustain 1 [[reactor]] with 0.99 confidence without any modules. Many are mistaken in confusing that 0.007 is speed of production, but that's untrue, as there is always a probability that even during whole game [[centrifuge]] won't produce any [[uranium-235]] (this probability is of course drastically small). Let's find out, for example, that we would like keep working reactor for 2000 [[centrifuge]]'s production cycles (neary ''2000*12/3600 = 6.7'' hours of [[reactor]] working) if we set 1 [[centrifuge]]: | |||
{| class="wikitable" | |||
! n !! tau !! c !! t !! m !! p !! u !! ceil(u-1) !! alpha !! 1-alpha !! !! k !! C(nk, m) !! P(m) !! ∑<sub>m</sub>P | |||
|- | |||
| 2000 || 12 || 0,1 || 200 || 0 || 0,007 || 12 || 11 || 0,99 || 0,01 || || 1 || 1 || 7,92E-07 || 7,92E-07 | |||
|- | |||
| 2000 || 12 || 0,1 || 200 || 1 || 0,007 || 12 || 11 || 0,99 || 0,01 || || 1 || 2000 || 1,12E-05 || 1,20E-05 | |||
|- | |||
| 2000 || 12 || 0,1 || 200 || 2 || 0,007 || 12 || 11 || 0,99 || 0,01 || || 1 || 2,0E+06 || 7,86E-05 || 9,06E-05 | |||
|- | |||
| 2000 || 12 || 0,1 || 200 || 3 || 0,007 || 12 || 11 || 0,99 || 0,01 || || 1 || 1,3E+09 || 0,0004 || 0,0005 | |||
|- | |||
| 2000 || 12 || 0,1 || 200 || 4 || 0,007 || 12 || 11 || 0,99 || 0,01 || || 1 || 6,6E+11 || 0,0013 || 0,0018 | |||
|- | |||
| 2000 || 12 || 0,1 || 200 || 5 || 0,007 || 12 || 11 || 0,99 || 0,01 || || 1 || 2,7E+14 || 0,0037 || 0,0054 | |||
|- | |||
| 2000 || 12 || 0,1 || 200 || 6 || 0,007 || 12 || 11 || 0,99 || 0,01 || || 1 || 8,8E+16 || 0,0086 || 0,0140 | |||
|- | |||
| 2000 || 12 || 0,1 || 200 || 7 || 0,007 || 12 || 11 || 0,99 || 0,01 || || 1 || 2,5E+19 || 0,0172 || 0,0312 | |||
|- | |||
| 2000 || 12 || 0,1 || 200 || 8 || 0,007 || 12 || 11 || 0,99 || 0,01 || || 1 || 6,3E+21 || 0,0302 || 0,0302 | |||
|- | |||
| 2000 || 12 || 0,1 || 200 || 9 || 0,007 || 12 || 11 || 0,99 || 0,01 || || 1 || 1,4E+24 || 0,0472 || 0,0472 | |||
|- | |||
| 2000 || 12 || 0,1 || 200 || 10 || 0,007 || 12 || 11 || 0,99 || 0,01 || || 1 || 2,8E+26 || 0,0662 || 0,1133 | |||
|- | |||
| 2000 || 12 || 0,1 || 200 || 11 || 0,007 || 12 || 11 || 0,99 || <span style="color: red">0,01</span> || || 1 || 5,0E+28 || 0,0844 || <span style="color: red">0,1977</span> | |||
|- | |||
| 2000 || 12 || 0,1 || 200 || 12 || 0,007 || 12 || 11 || 0,99 || 0,01 || || 1 || 8,3E+30 || 0,0986 || | |||
|- | |||
| 2000 || 12 || 0,1 || 200 || 13 || 0,007 || 12 || 11 || 0,99 || 0,01 || || 1 || 1,3E+33 || 0,1063 || | |||
|} | |||
As you can see we need to produce 12 '''''u''''' for 2000 cycles. So due to our formula we need sum up all probabilities of production less than 12 [[uranium-235]] and compare with our desired confidence level: | |||
<code>∑<sub>m</sub><sup>2000*12*0.1/200-1</sup>C<sub>2000*1</sub><sup>m</sup> * 0.007<sup>m</sup> * (1-0.007)<sup>2000*1-m</sup> = 7,92E-07 + 1,12E-05 + 7,86E-05 + 0,0004 + 0,0013 + 0,0037 + 0,0086 + 0,0172 + 0,0302 + 0,0472 + 0,0662 + 0,0844 = 0,1977</code> | |||
We can interpret this value as "Probability to produce less than needed [[uranium-235]] for 2000 [[centrifuge]]s cycles". And we know that this probability should be less than <code>1-α = 0.01</code>. However, this is wrong, so we can not be sure that 1 [[centrifuge]] will produce enough [[uranium-235]] to sustain [[reactor]] work during 2000 cycles. That's why we need to increase [[centrifuge]] quantity: | |||
{| class="wikitable" | |||
! n !! tau !! c !! t !! m !! p !! u !! ceil(u-1) !! alpha !! 1-alpha !! !! k !! C(nk, m) !! P(x=m) !! sum(P(m<=ceil(u-1))) | |||
|- | |||
| 2000 || 12 || 0,1 || 200 || 0 || 0,007 || 12 || 11 || 0,99 || 0,01 || || 2 || 1 || 6,3E-13 || 6,27E-13 | |||
|- | |||
| 2000 || 12 || 0,1 || 200 || 1 || 0,007 || 12 || 11 || 0,99 || 0,01 || || 2 || 4000 || 1,8E-11 || 1,83E-11 | |||
|- | |||
| 2000 || 12 || 0,1 || 200 || 2 || 0,007 || 12 || 11 || 0,99 || 0,01 || || 2 || 8,0E+06 || 2,5E-10 || 2,67E-10 | |||
|- | |||
| 2000 || 12 || 0,1 || 200 || 3 || 0,007 || 12 || 11 || 0,99 || 0,01 || || 2 || 1,1E+10 || 2,3E-09 || 2,61E-09 | |||
|- | |||
| 2000 || 12 || 0,1 || 200 || 4 || 0,007 || 12 || 11 || 0,99 || 0,01 || || 2 || 1,1E+13 || 1,6E-08 || 1,91E-08 | |||
|- | |||
| 2000 || 12 || 0,1 || 200 || 5 || 0,007 || 12 || 11 || 0,99 || 0,01 || || 2 || 8,5E+15 || 9,3E-08 || 1,12E-07 | |||
|- | |||
| 2000 || 12 || 0,1 || 200 || 6 || 0,007 || 12 || 11 || 0,99 || 0,01 || || 2 || 5,7E+18 || 4,4E-07 || 5,48E-07 | |||
|- | |||
| 2000 || 12 || 0,1 || 200 || 7 || 0,007 || 12 || 11 || 0,99 || 0,01 || || 2 || 3,2E+21 || 1,8E-06 || 2,30E-06 | |||
|- | |||
| 2000 || 12 || 0,1 || 200 || 8 || 0,007 || 12 || 11 || 0,99 || 0,01 || || 2 || 1,6E+24 || 6,2E-06 || 6,17E-06 | |||
|- | |||
| 2000 || 12 || 0,1 || 200 || 9 || 0,007 || 12 || 11 || 0,99 || 0,01 || || 2 || 7,2E+26 || 1,9E-05 || 1,93E-05 | |||
|- | |||
| 2000 || 12 || 0,1 || 200 || 10 || 0,007 || 12 || 11 || 0,99 || 0,01 || || 2 || 2,9E+29 || 0,0001 || 0,0001 | |||
|- | |||
| 2000 || 12 || 0,1 || 200 || 11 || 0,007 || 12 || 11 || 0,99 || <span style="color: red">0,01</span> || || 2 || 1,0E+32 || 0,0001 || <span style="color: red">0,0002</span> | |||
|- | |||
| 2000 || 12 || 0,1 || 200 || 12 || 0,007 || 12 || 11 || 0,99 || 0,01 || || 2 || 3,4E+34 || 0,0003 || | |||
|- | |||
| 2000 || 12 || 0,1 || 200 || 13 || 0,007 || 12 || 11 || 0,99 || 0,01 || || 2 || 1,1E+37 || 0,0007 || | |||
|} | |||
And now you can see that our condition is fulfilled. So now we can say, that without any [[module]]s, [[kovarex enrichment process]] we can achieve stability of 1 [[reactor]] during 2000 [[centrifuge]]s cycles using at least 2 [[centrifuge]]s! However, does this mean that we need 4 [[centrifuge]]s for 2 [[reactor]]s, 6 [[centrifuge]]s for 3 [[reactor]]s and etc? I suggest you think about this question yourself, I'm sure you will be very surprised by results, applying the approach outlined above. | |||
=== Distribution approximation === | |||
If you are going to play long enough while your [[reactor]]s setup is working, this will mean that we can pretend as <code>n→∞</code>. In this case as long as we know that our [[centrifuge]]s overall production <code>X<sub>all</sub> ~ B(nk, p)</code>, we can use [[https://en.wikipedia.org/wiki/De_Moivre%E2%80%93Laplace_theorem De Moiver-Laplace theorem]]. In short, it says that if our random variable has binomial distribution and we have large trials, then <code>(X<sub>all</sub>-nkp)/(sqrt(nkp(1-p)) ~ N(0, 1)</code>. That's why if we would like to estimate <code>P(X<sub>all</sub> ≥ u)</code> we should reduce it to this expression: | |||
<code>P((X<sub>all</sub>-nkp)/(sqrt(nkp(1-p)))) ≥ (u-nkp)/(sqrt(nkp(1-p))) ≥ α</code> ⇒ <code>{1-P<sub>dist</sub> ≥ α}</code> ⇒ <code>(nkp - u)/(sqrt(nkp(1-p)) ≥ ɸ<sup>-1</sup>(1-α)</code>, where ɸ<sup>-1</sup> is inverse standart distribution and can be find by [[https://en.wikipedia.org/wiki/Standard_normal_table standart normal table]] | |||
Let's denote <code>ɸ<sup>-1</sup>(α)</code> as λ. For each confidencle level α we can calculate it from standart normal table: | |||
<code>λ<sub>0.99</sub>=2.3263</code>, <code>λ<sub>0.95</sub>=1.6449</code>, <code>λ<sub>0.9</sub>=1.2816</code> | |||
Now we need to solve the equation above on a variable '''''k''''': | |||
<code>(nkp-u)/(sqrt(nkp(1-p)) ≥ λ</code> ⇒ <code>(nkp-nτc/t)/(sqrt(nkp(1-p)) ≥ λ</code> | |||
After some basic arithmetic operations and solution to quadratic equation you can get '''''k''''' value: | |||
<blockquote> | |||
<code>k ≥ (χ<sub>1</sub> + sqrt(χ<sub>1</sub><sup>2</sup> + 4χ<sub>0</sub>χ<sub>2</sub>))/(2*χ<sub>0</sub>)</code> | |||
where | |||
<code>χ<sub>0</sub> = np</code>, | |||
<code>χ<sub>1</sub> = λ*sqrt(np(1-p))</code>, | |||
<code>χ<sub>2</sub> = nτc/t</code>, | |||
<code>λ</code> is inverse standart normal distribution (popular values: 2.3263; 1.6449; 1.2816 for corresponding *alpha;: 0.99; 0.95; 0.9) | |||
</blockquote> | |||
== History == | == History == |
Revision as of 15:38, 30 May 2024
Uranium processing |
Recipe |
|
+ → + | |
Total raw |
|
+ | |
Prototype type |
|
Internal name |
uranium-processing |
Required technologies |
|
Produced by |
|
Uranium processing is the only way to use uranium ore and the first source of uranium-235 and uranium-238 that is available to the player. The process has a 99.3% chance to produce 1 uranium-238 and a 0.7% chance to produce 1 uranium-235.
Initiating the Kovarex enrichment process
Unlike all other crafting processes in the game, uranium processing creates U-235 and U-238 based on probability, rather than in guaranteed deterministic amounts. Additionally, the Kovarex process requires a bulk stockpile of 40 units of the rare uranium-235 isotope to initiate in a single centrifuge. Therefore, planning uranium mining and processing for the Kovarex process takes certain considerations not encountered elsewhere in the game.
Expected value
As U-235 is created in centrifuges running uranium processing with p = 0.007, the expected number of processing cycles to gain a single unit is E(1,p) = 1 ÷ p = ~143. The expected number of cycles to gain 40 units is then E(40,p) = 40 × E(1,p) = ~5,714 cycles. Note that running this many cycles requires mining 57,140 uranium ore, a non-trivial task.
However, given the nature of probability, it is impossible to guarantee that 40 units will be reached in this number of cycles; as a matter of fact, some mathematics yields that the probability that 5,714 cycles will produce at least 40 units of U-235 is only about 52%.
Confidence levels
Some further mathematics enables one to calculate the number of uranium processing cycles one must run to obtain at least 40 units of U-235 (given p = 0.007) with a given level of confidence (probability of achieving the set goal).
As discussed in the previous section, the level of confidence corresponding to 5,714 cycles (for which the expected value of U-235 gained is 40) happens to be about 52% (or, in other words, with this number of cycles, one can expect to fail to reach 40 U-235 a bit less than once out of every 2 tries).
Some further example confidence levels that may be of interest to players are given in the table below. Consult the chart to the right for custom values.
Confidence level | Failures | Cycles required |
---|---|---|
10% | 9 out of 10 | 4,595 |
50% | 1 out of 2 | 5,667 |
90% | 1 out of 10 | 6,894 |
95% | 1 out of 20 | 7,272 |
99% | 1 out of 100 | 8,015 |
Precise Mathematical Analysis
In some cases you will need to know how many centrifuges will you need exactly for each reactor stability without Kovarex enrichment process. For this purpose man can derive some formulas for estimation: probability of obtaining the required amount of uranium-235 or even number of needed centrifuges.
The main goal of these calculus is to derive formula that can be easily applied and sustainable for predictions despite advancement along technologies, game version updates, or ingame development and modifications.
Variables
Let's introduce some variables that we'll need in further calculations
T
- overall time of a reactor working (in seconds*)t
- time of a reactor cycle (in seconds*)c
- consumption of uranium-235 per reactor cyclek
- centrifuges number (our target value for calculations)p
- probability of uranium-235 production per centrifuge cyclen
- overall number of centrifuge cyclesτ
- centrifuge time per cycleα
- desired probability of having success number uranium-235 to sustain allT
time of reactor stable work**
* In seconds or you can measure in in-game ticks, it does not detracts from the generality of reasoning
** Known as [confidence level]. Due to probability nature this variable can be only in (0; 1)
interval. To preserve scientific papers treatment of significance we will use: 0,9; 0,95; 0,99 values. This value is opposite to [significance level] for convinience and ease of interpretation.
Assumptions
- Assumption 1
- All
k
centrifuges are working without stop and simultaneously during eachn
cycles and have the sameτ
- Assumption 2
- There are always enough resources for transforming uranium-235 in reactor fuel *
- Assumption 3
- Transformation of uranium-235 in fuel for reactors can be negleted **
- Assumption 4 (for longrun play)
- Game can be played infinitely (this is technical assumption, for practical usage it's enough average playtime)
* For instance, base game uranium-238 has very high probability (0.993
) so there are always enough of it for uranium fuel cell
** For instance, base game uranium-235 is transforming into 10 uranium fuel cells for 12 sec
, but reactor cycle is 200 sec
- that's insignificant and you can always build more assemblers to sustain production throughput time.
Exact approach
The main question we're going to answer:
How many
k
centrifuges do we need duringn
cycles of centrifuge production to sustain reactor working continuously forT
time with probabilityα
Assume, that each centrifuge in each production cycle is represented by Xij [discrete random variable], where i is number of centrifuge and j is number of production cycle.
We say, that if Xij has produced uranium-235, then it's value Xij=1
, if Xij hasn't, it's value Xij=0
. That's why, P(Xij = m) = 0.007, if m=1
and P(Xij = m) = 0.993, if m=0
(This is so called [Bernoulli distribution]).
Let's find out how many time centrifuges should produce uranium-235 in all cycles to sustain a reactor:
From one side, there are T/t
of reactor working cycles and as a result T*c/t
overall uranium-235 quantity need for working continuously all T time. Let's denote this value as u, so u=T*c/t
.
From other side, our centrifuges during T time will work without stop and simultaneously for n cycles, that means that T = n*τ
Wrapping all up, we get that our needed quantity of u is u=n*τ*c/t
for all T time reactor works.
1) Let's consider simple case when we need only for n cycles and k centrifuges to produce exactly u amount of uranium-235 (technically, you need ceil ⌈u⌉
, but we will omit this for simplicity of calculations). As we figured out earlie each Xij has Bernoulli distribution, but for all T we produce Xall = ∑in∑jkXij
quantity of uranium-235 (this is sum for n cycles and k centrifuges). But as all Xij are independent Bernoulli trials, so Xall
is distributed by definition by [binomial distribution] Xall ~ B(nk, p)
. This leads us to probability of producing exactly u uranium-235 for n cycles with k centrifuges P(Xall=u) = Cnku * pu * (1-p)nk-u
, where Cnku
is [binomial coefficient]. As long as we know u=n*τ*c/t
we can get full probability value of getting exact amount uranium-235 for sustaining reactor:
P(Xall=n*τ*c/t) = Cnkn*τ*c/t * pn*τ*c/t * (1-p)nk-n*τ*c/t
2) However, practically there is a probability to get more than u amount of uranium-235, this corresponds to our purpose of sustaining reactor working continuously too. The main goal of centrifuges production is not producing less than u=n*τ*c/t
. That's why we need to calculate the probability of such event won't never occur in future, in other words our probability of always being success: P(Xall ≥ u)
. On the other side, P(Xall ≥ u) = 1 - P(Xall < u)
, but P(Xall < u)
is [Cumulative distribution function] and has exact formula for computation -- as sum of all probabilities for each m < u
or P(Xall < u) = ∑iu-1P(Xall=m)
, m is integer. The most important part is that we would like the probability P(Xall ≥ u)
to be high enough, that's why we need to set α variable (as for nature of probability it's impossible for P(Xall ≥ u)
to equal exactly 1). That's how we can derive equation for variables selection:
P(Xall≥u) ≥ α
⇒1 - ∑mu-1P(Xall=m) ≥ α
⇒ {using results of previous paragraph 1} ⇒∑mn*τ*c/t-1Cnkm * pm * (1-p)nk-m ≤ 1 - α
So now we have formula (technically speaking, hypothesis test verification) to figure out how many k centrifuges we need to sustain reactor with consumption c during n cycles of centrifuges production. This is the most general formula and not very comfort to use. There is no pure analitics form of sum, that's why we need to calculate each probability in some separetly. Moreover, the main disadvantage is in using high value of n and u. It is impossible due to binomial coefficiant will become an enormous number! So it can not be used to predict figures for longrun playtime. We will consider this in future calculations. However, this formula will be extremely useful if you are considering playing game speedrunning and prepare some blueprints.
Example base game shortrun
Assume, you would like to find out how many centrifuges you need to fully work to sustain 1 reactor with 0.99 confidence without any modules. Many are mistaken in confusing that 0.007 is speed of production, but that's untrue, as there is always a probability that even during whole game centrifuge won't produce any uranium-235 (this probability is of course drastically small). Let's find out, for example, that we would like keep working reactor for 2000 centrifuge's production cycles (neary 2000*12/3600 = 6.7 hours of reactor working) if we set 1 centrifuge:
n | tau | c | t | m | p | u | ceil(u-1) | alpha | 1-alpha | k | C(nk, m) | P(m) | ∑mP | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
2000 | 12 | 0,1 | 200 | 0 | 0,007 | 12 | 11 | 0,99 | 0,01 | 1 | 1 | 7,92E-07 | 7,92E-07 | |
2000 | 12 | 0,1 | 200 | 1 | 0,007 | 12 | 11 | 0,99 | 0,01 | 1 | 2000 | 1,12E-05 | 1,20E-05 | |
2000 | 12 | 0,1 | 200 | 2 | 0,007 | 12 | 11 | 0,99 | 0,01 | 1 | 2,0E+06 | 7,86E-05 | 9,06E-05 | |
2000 | 12 | 0,1 | 200 | 3 | 0,007 | 12 | 11 | 0,99 | 0,01 | 1 | 1,3E+09 | 0,0004 | 0,0005 | |
2000 | 12 | 0,1 | 200 | 4 | 0,007 | 12 | 11 | 0,99 | 0,01 | 1 | 6,6E+11 | 0,0013 | 0,0018 | |
2000 | 12 | 0,1 | 200 | 5 | 0,007 | 12 | 11 | 0,99 | 0,01 | 1 | 2,7E+14 | 0,0037 | 0,0054 | |
2000 | 12 | 0,1 | 200 | 6 | 0,007 | 12 | 11 | 0,99 | 0,01 | 1 | 8,8E+16 | 0,0086 | 0,0140 | |
2000 | 12 | 0,1 | 200 | 7 | 0,007 | 12 | 11 | 0,99 | 0,01 | 1 | 2,5E+19 | 0,0172 | 0,0312 | |
2000 | 12 | 0,1 | 200 | 8 | 0,007 | 12 | 11 | 0,99 | 0,01 | 1 | 6,3E+21 | 0,0302 | 0,0302 | |
2000 | 12 | 0,1 | 200 | 9 | 0,007 | 12 | 11 | 0,99 | 0,01 | 1 | 1,4E+24 | 0,0472 | 0,0472 | |
2000 | 12 | 0,1 | 200 | 10 | 0,007 | 12 | 11 | 0,99 | 0,01 | 1 | 2,8E+26 | 0,0662 | 0,1133 | |
2000 | 12 | 0,1 | 200 | 11 | 0,007 | 12 | 11 | 0,99 | 0,01 | 1 | 5,0E+28 | 0,0844 | 0,1977 | |
2000 | 12 | 0,1 | 200 | 12 | 0,007 | 12 | 11 | 0,99 | 0,01 | 1 | 8,3E+30 | 0,0986 | ||
2000 | 12 | 0,1 | 200 | 13 | 0,007 | 12 | 11 | 0,99 | 0,01 | 1 | 1,3E+33 | 0,1063 |
As you can see we need to produce 12 u for 2000 cycles. So due to our formula we need sum up all probabilities of production less than 12 uranium-235 and compare with our desired confidence level:
∑m2000*12*0.1/200-1C2000*1m * 0.007m * (1-0.007)2000*1-m = 7,92E-07 + 1,12E-05 + 7,86E-05 + 0,0004 + 0,0013 + 0,0037 + 0,0086 + 0,0172 + 0,0302 + 0,0472 + 0,0662 + 0,0844 = 0,1977
We can interpret this value as "Probability to produce less than needed uranium-235 for 2000 centrifuges cycles". And we know that this probability should be less than 1-α = 0.01
. However, this is wrong, so we can not be sure that 1 centrifuge will produce enough uranium-235 to sustain reactor work during 2000 cycles. That's why we need to increase centrifuge quantity:
n | tau | c | t | m | p | u | ceil(u-1) | alpha | 1-alpha | k | C(nk, m) | P(x=m) | sum(P(m<=ceil(u-1))) | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
2000 | 12 | 0,1 | 200 | 0 | 0,007 | 12 | 11 | 0,99 | 0,01 | 2 | 1 | 6,3E-13 | 6,27E-13 | |
2000 | 12 | 0,1 | 200 | 1 | 0,007 | 12 | 11 | 0,99 | 0,01 | 2 | 4000 | 1,8E-11 | 1,83E-11 | |
2000 | 12 | 0,1 | 200 | 2 | 0,007 | 12 | 11 | 0,99 | 0,01 | 2 | 8,0E+06 | 2,5E-10 | 2,67E-10 | |
2000 | 12 | 0,1 | 200 | 3 | 0,007 | 12 | 11 | 0,99 | 0,01 | 2 | 1,1E+10 | 2,3E-09 | 2,61E-09 | |
2000 | 12 | 0,1 | 200 | 4 | 0,007 | 12 | 11 | 0,99 | 0,01 | 2 | 1,1E+13 | 1,6E-08 | 1,91E-08 | |
2000 | 12 | 0,1 | 200 | 5 | 0,007 | 12 | 11 | 0,99 | 0,01 | 2 | 8,5E+15 | 9,3E-08 | 1,12E-07 | |
2000 | 12 | 0,1 | 200 | 6 | 0,007 | 12 | 11 | 0,99 | 0,01 | 2 | 5,7E+18 | 4,4E-07 | 5,48E-07 | |
2000 | 12 | 0,1 | 200 | 7 | 0,007 | 12 | 11 | 0,99 | 0,01 | 2 | 3,2E+21 | 1,8E-06 | 2,30E-06 | |
2000 | 12 | 0,1 | 200 | 8 | 0,007 | 12 | 11 | 0,99 | 0,01 | 2 | 1,6E+24 | 6,2E-06 | 6,17E-06 | |
2000 | 12 | 0,1 | 200 | 9 | 0,007 | 12 | 11 | 0,99 | 0,01 | 2 | 7,2E+26 | 1,9E-05 | 1,93E-05 | |
2000 | 12 | 0,1 | 200 | 10 | 0,007 | 12 | 11 | 0,99 | 0,01 | 2 | 2,9E+29 | 0,0001 | 0,0001 | |
2000 | 12 | 0,1 | 200 | 11 | 0,007 | 12 | 11 | 0,99 | 0,01 | 2 | 1,0E+32 | 0,0001 | 0,0002 | |
2000 | 12 | 0,1 | 200 | 12 | 0,007 | 12 | 11 | 0,99 | 0,01 | 2 | 3,4E+34 | 0,0003 | ||
2000 | 12 | 0,1 | 200 | 13 | 0,007 | 12 | 11 | 0,99 | 0,01 | 2 | 1,1E+37 | 0,0007 |
And now you can see that our condition is fulfilled. So now we can say, that without any modules, kovarex enrichment process we can achieve stability of 1 reactor during 2000 centrifuges cycles using at least 2 centrifuges! However, does this mean that we need 4 centrifuges for 2 reactors, 6 centrifuges for 3 reactors and etc? I suggest you think about this question yourself, I'm sure you will be very surprised by results, applying the approach outlined above.
Distribution approximation
If you are going to play long enough while your reactors setup is working, this will mean that we can pretend as n→∞
. In this case as long as we know that our centrifuges overall production Xall ~ B(nk, p)
, we can use [De Moiver-Laplace theorem]. In short, it says that if our random variable has binomial distribution and we have large trials, then (Xall-nkp)/(sqrt(nkp(1-p)) ~ N(0, 1)
. That's why if we would like to estimate P(Xall ≥ u)
we should reduce it to this expression:
P((Xall-nkp)/(sqrt(nkp(1-p)))) ≥ (u-nkp)/(sqrt(nkp(1-p))) ≥ α
⇒ {1-Pdist ≥ α}
⇒ (nkp - u)/(sqrt(nkp(1-p)) ≥ ɸ-1(1-α)
, where ɸ-1 is inverse standart distribution and can be find by [standart normal table]
Let's denote ɸ-1(α)
as λ. For each confidencle level α we can calculate it from standart normal table:
λ0.99=2.3263
, λ0.95=1.6449
, λ0.9=1.2816
Now we need to solve the equation above on a variable k:
(nkp-u)/(sqrt(nkp(1-p)) ≥ λ
⇒ (nkp-nτc/t)/(sqrt(nkp(1-p)) ≥ λ
After some basic arithmetic operations and solution to quadratic equation you can get k value:
k ≥ (χ1 + sqrt(χ12 + 4χ0χ2))/(2*χ0)
whereχ0 = np
,χ1 = λ*sqrt(np(1-p))
,χ2 = nτc/t
,λ
is inverse standart normal distribution (popular values: 2.3263; 1.6449; 1.2816 for corresponding *alpha;: 0.99; 0.95; 0.9)
History
- 0.15.0:
- Introduced