Uranium processing: Difference between revisions
Tag: Reverted |
(example 1) Tag: Reverted |
||
Line 72: | Line 72: | ||
<nowiki>**</nowiki> For instance, converting base game [[uranium-235]] into 10 [[uranium fuel cell]]s takes <code>12 sec</code>, but the [[reactor]] cycle is <code>200 sec</code> - a negligible time difference, easily managed by building more [[assembler]]s. | <nowiki>**</nowiki> For instance, converting base game [[uranium-235]] into 10 [[uranium fuel cell]]s takes <code>12 sec</code>, but the [[reactor]] cycle is <code>200 sec</code> - a negligible time difference, easily managed by building more [[assembler]]s. | ||
=== Exact Approach === | === Exact Approach (Short-run)=== | ||
The main question we aim to answer: | The main question we aim to answer: | ||
Line 171: | Line 171: | ||
And now you can see that our condition is fulfilled. Therefore, we can say that without any [[module]]s or [[Kovarex enrichment process]], we can achieve the stability of 1 [[reactor]] during 2000 [[centrifuge]] cycles using at least 2 [[centrifuge]]s! However, does this imply that we need 4 [[centrifuge]]s for 2 [[reactor]]s, 6 [[centrifuge]]s for 3 [[reactor]]s, and so on? I encourage you to think about this question yourself. You may be surprised by the results when applying the approach outlined above. | And now you can see that our condition is fulfilled. Therefore, we can say that without any [[module]]s or [[Kovarex enrichment process]], we can achieve the stability of 1 [[reactor]] during 2000 [[centrifuge]] cycles using at least 2 [[centrifuge]]s! However, does this imply that we need 4 [[centrifuge]]s for 2 [[reactor]]s, 6 [[centrifuge]]s for 3 [[reactor]]s, and so on? I encourage you to think about this question yourself. You may be surprised by the results when applying the approach outlined above. | ||
=== Distribution Approximation === | === Distribution Approximation (Medium-run)=== | ||
If you plan to play for an extended period while your [[reactor]] setup is operating, we can consider <code>n→∞</code>. In this case, since our [[centrifuge]]s' overall production <code>X<sub>all</sub> ~ B(nk, p)</code>, we can use the [[https://en.wikipedia.org/wiki/De_Moivre%E2%80%93Laplace_theorem De Moivre-Laplace theorem]]. In short, it states that if our random variable follows a binomial distribution with a large number of trials, then <code>(X<sub>all</sub>-nkp)/sqrt(nkp(1-p)) ~ N(0, 1)</code>. Thus, to estimate <code>P(X<sub>all</sub> ≥ u)</code>, we simplify it to: | If you plan to play for an extended period while your [[reactor]] setup is operating, we can consider <code>n→∞</code>. In this case, since our [[centrifuge]]s' overall production <code>X<sub>all</sub> ~ B(nk, p)</code>, we can use the [[https://en.wikipedia.org/wiki/De_Moivre%E2%80%93Laplace_theorem De Moivre-Laplace theorem]]. In short, it states that if our random variable follows a binomial distribution with a large number of trials, then <code>(X<sub>all</sub>-nkp)/sqrt(nkp(1-p)) ~ N(0, 1)</code>. Thus, to estimate <code>P(X<sub>all</sub> ≥ u)</code>, we simplify it to: | ||
Line 196: | Line 196: | ||
This formula can be calculated for very large '''''n'''''. That's why it's best choice for planning average playtime of experienced player. | This formula can be calculated for very large '''''n'''''. That's why it's best choice for planning average playtime of experienced player. | ||
=== Infinite Approximation === | === Infinite Approximation (Long-run)=== | ||
If we consider the formula for '''''k''''' [[centrifuge]]s above, we can derive an analytical form for <code>n→∞</code> by substituting all '''''χ''''' into the formula and finding the limit: | If we consider the formula for '''''k''''' [[centrifuge]]s above, we can derive an analytical form for <code>n→∞</code> by substituting all '''''χ''''' into the formula and finding the limit: | ||
Line 211: | Line 211: | ||
This formula provides the minimal number of [[centrifuge]]s needed to sustain [[reactor]] stability indefinitely. To determine this number, we need only 4 parameters. | This formula provides the minimal number of [[centrifuge]]s needed to sustain [[reactor]] stability indefinitely. To determine this number, we need only 4 parameters. | ||
=== Usage examples === | |||
====Example 1==== | |||
[[File:Comparing calculations example1.png|300px|thumb|right|2 methods convergence comparison (example 1)]] | |||
Let's find out how many [[centrifuge]]s do you need for playing long-run playtime and average playtime for 20 [[reactor]]s without any [[module]]s and [[kovarex enrichment process]]. | |||
First of all, notice that we can pretend that 20 [[reactor]]s are just one big reactor and the only parameter that will be influenced is '''''c'''''. As we have 20 times more reactors, that means that our default consumption will be 20 times more, then we have <code>c = 20*0.1 = 2</code>. So now we can use 2 methods for long-run and medium-run estimations: | |||
Long-run doesn't depend on '''''n''''' that's why we can easily calculate it: <code>k=⌈τ*c/(p*t)⌉=18</code>. | |||
Medium-run has explicit formula, but need to iterate over '''''n'''''. I've built a graph to explicitly show, that after many [[centrifuge]]s cycles, medium-run amount of '''''k''''' tends to Long-run amount. | |||
== History == | == History == | ||
{{History|0.15.0| | {{History|0.15.0| |
Revision as of 22:17, 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
To determine the exact number of centrifuges required for maintaining reactor stability without using the Kovarex enrichment process, we need to employ probability theory. This analysis will help us estimate the probability of obtaining the required amount of uranium-235 and the number of centrifuges needed.
The primary goal of these calculations is to derive a formula that can be easily applied and sustainable for predictions despite advancements in technologies, game version updates, or in-game developments 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 to produce 1 recipeα
- desired probability of having success number uranium-235 to sustain allT
time of reactor stable work**
* Measured in seconds or in-game ticks, this does not affect the general reasoning
** Known as the [confidence level]. Due to the nature of probability, this value can only be in the interval (0; 1)
. We will use the values 0.9, 0.95, and 0.99 to maintain scientific rigor and ease of interpretation, opposite to the [significance level].
Assumptions
- Assumption 1
- All
k
centrifuges work continuously and simultaneously for eachn
cycle with the sameτ
- Assumption 2
- There are always enough resources to convert uranium-235 into reactor fuel *
- Assumption 3
- The conversion of uranium-235 into fuel for reactors can be neglected **
- Assumption 4 (for long-term play)
- The game can be played indefinitely (technically assumed for practical use, average playtime suffices)
* For instance, base game uranium-238 has a very high probability (0.993
), ensuring a sufficient supply for uranium fuel cell production.
** For instance, converting base game uranium-235 into 10 uranium fuel cells takes 12 sec
, but the reactor cycle is 200 sec
- a negligible time difference, easily managed by building more assemblers.
Exact Approach (Short-run)
The main question we aim to answer:
How many
k
centrifuges are needed duringn
cycles of centrifuge production to sustain a reactor working continuously forT
time with probabilityα
?
Assume each centrifuge in each production cycle is represented by a discrete random variable Xij, where i is the centrifuge number and j is the production cycle number. If Xij produces uranium-235, its value is Xij=1
. If not, Xij=0
. Thus, P(Xij = 1) = 0.007
and P(Xij = 0) = 0.993
(This is a [Bernoulli distribution]).
To find out how long centrifuges should produce uranium-235 to sustain a reactor:
From one side, the reactor has T/t
working cycles, needing a total of Tc/t
uranium-235 to run continuously for time T. Let's denote this value as u: u=Tc/t
.
From the other side, the centrifuges work continuously for n cycles during time T: T = n*τ
.
Combining these, our required quantity of u is u=n*τ*c/t
for the entire reactor operation time T.
Consider the simple case where we need n cycles and k centrifuges to produce exactly u uranium-235 (technically, we need ceil of u, but it won't be practically useful and doesn't detract generality of our calculations). Each Xij is a Bernoulli trial, so Xall = ∑in∑jkXij
is the total production, distributed as a [binomial distribution] Xall ~ B(nk, p)
. This gives the probability of producing exactly u uranium-235 in n cycles with k centrifuges:
P(Xall=u) = Cnku * pu * (1-p)nk-u
Practically, we are interested in producing at least u uranium-235, corresponding to P(Xall ≥ u)
. This can be calculated as P(Xall ≥ u) = 1 - P(Xall < u)
, where P(Xall < u)
is the [cumulative distribution function]:
P(Xall≥u) ≥ α
⇒1 - ∑mu-1P(Xall=m) ≥ α
⇒ {using results from paragraph 1} ⇒∑mn*τ*c/t-1Cnkm * pm * (1-p)nk-m ≤ 1 - α
So, we now have a formula to determine the number of k centrifuges needed to sustain a reactor with consumption c during n cycles. This formula is general and not always practical for long-term play due to the high values of n and u. It is best suited for short-term or speedrun calculations.
Example Base Game Short-Term
To illustrate, let's determine how many centrifuges are needed to sustain 1 reactor with 0.99 confidence without modules. It's a common mistake to think that 0.007 is the production speed, but it represents the probability of producing uranium-235 per cycle. Suppose we want a reactor to work for 2000 centrifuge production cycles (about 6.7 hours of reactor operation) with 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. According to our formula, we need to sum up all the probabilities of producing less than 12 uranium-235 and compare this with our desired confidence level:
∑m2000120.1/200-1C20001m * 0.007m * (1-0.007)20001-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 the "Probability of producing less than the required amount of uranium-235 for 2000 centrifuge cycles." This probability should be less than 1-α = 0.01
. However, since it is not, we cannot be sure that 1 centrifuge will produce enough uranium-235 to sustain reactor operation during 2000 cycles. Therefore, we need to increase the number of centrifuges.
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. Therefore, we can say that without any modules or Kovarex enrichment process, we can achieve the stability of 1 reactor during 2000 centrifuge cycles using at least 2 centrifuges! However, does this imply that we need 4 centrifuges for 2 reactors, 6 centrifuges for 3 reactors, and so on? I encourage you to think about this question yourself. You may be surprised by the results when applying the approach outlined above.
Distribution Approximation (Medium-run)
If you plan to play for an extended period while your reactor setup is operating, we can consider n→∞
. In this case, since our centrifuges' overall production Xall ~ B(nk, p)
, we can use the [De Moivre-Laplace theorem]. In short, it states that if our random variable follows a binomial distribution with a large number of trials, then (Xall-nkp)/sqrt(nkp(1-p)) ~ N(0, 1)
. Thus, to estimate P(Xall ≥ u)
, we simplify it to:
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 the inverse standard normal distribution, found using the [standard normal table].
Let's denote ɸ-1(α)
as λ. For each confidence level α, we can calculate it from the standard normal table:
λ0.99=2.3263
, λ0.95=1.6449
, λ0.9=1.2816
.
Now we need to solve the equation above for the variable k:
(nkp-u)/sqrt(nkp(1-p)) ≥ λ
⇒ (nkp-nτc/t)/sqrt(nkp(1-p)) ≥ λ
.
After some basic arithmetic operations and solving the quadratic equation, you can determine the value of k:
k ≥ [(χ1 + sqrt(χ12 + 4χ0χ2))/(2*χ0)]2
whereχ0 = np
,χ1 = λ*sqrt(np(1-p))
,χ2 = nτc/t
,λ
is the inverse standard normal distribution (popular values: 2.3263; 1.6449; 1.2816 for corresponding α values: 0.99; 0.95; 0.9).
This formula can be calculated for very large n. That's why it's best choice for planning average playtime of experienced player.
Infinite Approximation (Long-run)
If we consider the formula for k centrifuges above, we can derive an analytical form for n→∞
by substituting all χ into the formula and finding the limit:
limn→∞(χ1 + sqrt(χ12 + 4χ0χ2))/(2*χ0)
⇒ {substitute all χ} ⇒k ≥ τ*c/(p*t)
Thus, to determine the minimal number of centrifuges needed to achieve reactor stability, we use the final formula:
k = ⌈τ*c/(p*t)⌉, where ⌈x⌉ is the ceiling function
Notice that this formula does not depend on λ. This is because, as n approaches infinity, the cumulative probability tends to 1. In other words, with an infinite number of cycles, we can be 100% certain that this number of centrifuges will sustain our reactor's stability indefinitely.
This formula provides the minimal number of centrifuges needed to sustain reactor stability indefinitely. To determine this number, we need only 4 parameters.
Usage examples
Example 1
Let's find out how many centrifuges do you need for playing long-run playtime and average playtime for 20 reactors without any modules and kovarex enrichment process.
First of all, notice that we can pretend that 20 reactors are just one big reactor and the only parameter that will be influenced is c. As we have 20 times more reactors, that means that our default consumption will be 20 times more, then we have c = 20*0.1 = 2
. So now we can use 2 methods for long-run and medium-run estimations:
Long-run doesn't depend on n that's why we can easily calculate it: k=⌈τ*c/(p*t)⌉=18
.
Medium-run has explicit formula, but need to iterate over n. I've built a graph to explicitly show, that after many centrifuges cycles, medium-run amount of k tends to Long-run amount.
History
- 0.15.0:
- Introduced