Data Center Reliability
A data center needs 20 servers to work, one power supply, one cooling system, and one network connection. The power supply has a standby component. The network connection consists of two parallel connections.
ℛhdd = ReliabilityDistribution[BooleanCountingFunction[{2, 3}, {x, y, z}], {{x, WeibullDistribution[4, 1.25 10^6]}, {y, WeibullDistribution[4, 1.25 10^6]}, {z, WeibullDistribution[4, 1.25 10^6]}}];𝒟cpu = ExponentialDistribution[1 / 30000];
𝒟ram = WeibullDistribution[.82, 2500];ℛServer = ReliabilityDistribution[hdd∧cpu∧ram, {{hdd, ℛhdd}, {cpu, 𝒟cpu}, {ram, 𝒟ram}}];𝒮PowerSupply = StandbyDistribution[ExponentialDistribution[1 / 5000], {ExponentialDistribution[1 / 2000]}];𝒟Network = ParetoDistribution[1500, 10];
𝒟Cooling = ExponentialDistribution[1 / 5000];servervars = Table[Subscript[s, i], {i, 20}];
serverdists = Table[{i, ℛServer}, {i, servervars}];
ℛDatacenter = ReliabilityDistribution[(And@@servervars)∧power∧(net1∨net2)∧cooling, Join[serverdists, {{power, 𝒮PowerSupply}, {net1, 𝒟Network}, {net2, 𝒟Network}, {cooling, 𝒟Cooling}}]];mttf = NExpectation[t, tℛDatacenter];failures = RandomVariate[ℛDatacenter, 100];Grid[{{"MTTF", "SurvivalFunction", "Simulation"}, {mttf, Plot[Evaluate@SurvivalFunction[ℛDatacenter, t], {t, 0, 100}, Filling -> Axis, PlotRange -> {0, 1}, Mesh -> {{mttf}}, MeshShading -> {Automatic, ColorData["Crayola"]["Mahogany"]}, MeshStyle -> PointSize[Medium]], ListPlot[{failures, {{0, mttf}, {100, mttf}}}, Joined -> {False, True}, Filling -> Axis, AxesOrigin -> {0, 0}]}}, Frame -> All, FrameStyle -> Gray, Spacings -> {2, 2}, Background -> {None, {StandardBlue}}, BaseStyle -> {FontFamily -> "Verdana", FontSize -> 12}]