KSP-RO / RealismOverhaul

Multipatch to KSP to give things realistic stats and sizes
370 stars 280 forks source link

Reliability issues (and Tech Transfer) #2505

Open NathanKell opened 3 years ago

NathanKell commented 3 years ago

Think we probably need to police reliability data. Issues I'm skeptical of / worried about:

Anything else?

leudaimon commented 3 years ago

We could define a consistent way to deal with engines that have too few data for a good estimation of reliabilities, I have the impression this is all over the place

jwvanderbeck commented 3 years ago

Are we double-dipping on failure chance? 80% cycle reliability and 80% ignition chance is 64% actual success chance, e.g. (It's actually slightly lower due to the 5s of increased failure chance)

You have a 20% chance to fail one check and a 20% chance to fail the other. They aren't cumulative because one isn't dependent on the other. (one doesn't influence the other)

StonesmileGit commented 3 years ago

If the probabilities are completely independent, that means you can multiply them, P(igniting) x P(burn for t seconds)

StonesmileGit commented 3 years ago

Two more things:

NathanKell commented 3 years ago

Are we double-dipping on failure chance? 80% cycle reliability and 80% ignition chance is 64% actual success chance, e.g. (It's actually slightly lower due to the 5s of increased failure chance)

You have a 20% chance to fail one check and a 20% chance to fail the other. They aren't cumulative because one isn't dependent on the other. (one doesn't influence the other)

To put this another way: say an engine is classed as "98% success chance". If you naively set both cycle reliability and ignition reliability to 98%, the actual success chance becomes (probability of ignition, 98%) x (probability of making it through the burn, 98%) = 96%. You've just doubled the failure chance. If in fact the engine is usually involved in a two-burn flight it's worse, 94.1%.

marsh1832 commented 3 years ago

To add, they are cumulative in the sense where the ignition chance must pass before the burn chance can be checked. So the failure rate is cumulative. And as NK showed in an example of a second ignition, then that’s a third check in a row which must pass, so the mission failure rate is all three cumulative.

I love the idea of the failure rates being tuned to where the pump fed engines have a higher ignition failure but lower burn failure, and the inverse for pressure fed. Adds more character to the engine feed choice.

NathanKell commented 3 years ago

I have updated this issue to mention tech transfer and branches.

Capkirk123 commented 2 years ago

2539 addresses most of these issues.

For the reliability of pump fed vs pressure fed engines, that depends a lot on the engine itself. For example, Soviet pump-fed uppers almost never failed to ignite, but had their turbopumps fail during or shortly after their burn pretty frequently. The exception being the RD-58, which explodes on ignition to this day, but is usually fine once it starts. Even solids aren't immune, some had a propensity to explode, while other would just fail to ignite.

ec429 commented 2 years ago

If possible we should tweak the configger to take the increased failure chance in the first 5s into account.

FWIW TestLite already accounts for this internally: if an engine has a failure chance of (say) 10% across its 120-second rated burn time, then there will be a 1.5% chance of failure in the first 5s and an 8.5% chance in the next 120s, for 10% total over the 125s.

you should get the full transfer only from the immediately prior config

Doesn't techTransferGenerationPenalty already cover that (to some extent)? (As long as the configs are listed in the right order…)

NathanKell commented 2 years ago

No. Consider running an XLR43 until it's 10k data and then using an RS56. You should not start at 2000 data for the RS56.

Sent by my thumbs, slowly.

On Thu, Dec 9, 2021, 2:51 PM Sound and Fury @.***> wrote:

If possible we should tweak the configger to take the increased failure chance in the first 5s into account.

FWIW TestLite already accounts for this internally: if an engine has a failure chance of (say) 10% across its 120-second rated burn time, then there will be a 1.5% chance of failure in the first 5s and an 8.5% chance in the next 120s, for 10% total over the 125s.

you should get the full transfer only from the immediately prior config

Doesn't techTransferGenerationPenalty already cover that (to some extent)? (As long as the configs are listed in the right order…)

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/KSP-RO/RealismOverhaul/issues/2505#issuecomment-990373156, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABHH4IV3RBF6VJ2Z35SVXDLUQEXFRANCNFSM5CNPEIHQ . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

ec429 commented 2 years ago

Ah fair point, you're thinking of the max transfer. But branches don't fix that either; they, like techTransferGenerationPenalty, only set the transfer coefficient. The cap (techTransferMax) is the same no matter which config the transfer is coming from.

Maybe we need to add a techTransferSourceMax, that caps the du before the branch modifier is applied, so that weaker links can't supply as much even if you have 10k on the old part.

(Either that or you're just referring to the fact that RO sets techTransferGenerationPenalty stupidly low, at 0.05. Why isn't that higher?)

NathanKell commented 2 years ago

My point is that afaik generation penalty only applies when you fly multiple generations. In the example I cite it wouldn't be used, the transfer is direct from original to current part. How would the game know those parts are many generations apart?

Sent by my thumbs, slowly.

On Fri, Dec 10, 2021, 5:33 AM Sound and Fury @.***> wrote:

Ah fair point, you're thinking of the max transfer. But branches don't fix that either; they, like techTransferGenerationPenalty, only set the transfer coefficient. The cap (techTransferMax) is the same no matter which config the transfer is coming from.

Maybe we need to add a techTransferSourceMax, that caps the du before the branch modifier is applied, so that weaker links can't supply as much even if you have 10k on the old part.

(Either that or you're just referring to the fact that RO sets techTransferGenerationPenalty stupidly low, at 0.05. Why isn't that higher?)

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/KSP-RO/RealismOverhaul/issues/2505#issuecomment-990978325, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABHH4ITPIFF6ICITA7S6V53UQH6UJANCNFSM5CNPEIHQ . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

ec429 commented 2 years ago

Generation penalty is nothing to do with indirect transfers. Generations are the comma-separated items within a techTransfer branch. (In TL, indirect transfers don't happen at all.)

The breakage in your example only happens because the config is written backwards (#1968). LR89-NA-7.1 has:

techTransfer = XLR43-NA-1,A-6,A-6H,A-7:20&XLR43-NA-3,LR43-NA-3,LR89-NA-3,LR89-NA-5,LR89-NA-6:50

which means it gets 50% transfer from XLR43-NA-3 but only 40% (0.50 * (1 - (4 * 0.05))) from LR89-NA-6. (Under TestLite it's 30% instead (0.50 - 4 * 0.05) because I did things Differently for some reason.)

If it were written correctly as

techTransfer = A-7,A-6H,A-6,XLR43-NA-1:20&LR89-NA-6,LR89-NA-5,LR89-NA-3,LR43-NA-3,XLR43-NA-3:50

then the percentages would be the other way round and XLR43-NA-3 would be four generations away.

NathanKell commented 2 years ago

Ohh gotcha! Yeah that solves the problem

Sent by my thumbs, slowly.

On Fri, Dec 10, 2021, 12:06 PM Sound and Fury @.***> wrote:

Generation penalty is nothing to do with indirect transfers. Generations are the comma-separated items within a techTransfer branch. (In TL, indirect transfers don't happen at all.)

The breakage in your example only happens because the config is written backwards (#1968 https://github.com/KSP-RO/RealismOverhaul/issues/1968). LR89-NA-7.1 has:

techTransfer = XLR43-NA-1,A-6,A-6H,A-7:20&XLR43-NA-3,LR43-NA-3,LR89-NA-3,LR89-NA-5,LR89-NA-6:50

which means it gets 50% transfer from XLR43-NA-3 but only 40% (0.50 * (1

  • (4 * 0.05))) from LR89-NA-6. (Under TestLite it's 30% instead (0.50 - 4
  • 0.05) because I did things Differently for some reason.)

If it were written correctly as

techTransfer = A-7,A-6H,A-6,XLR43-NA-1:20&LR89-NA-6,LR89-NA-5,LR89-NA-3,LR43-NA-3,XLR43-NA-3:50

then the percentages would be the other way round and XLR43-NA-3 would be four generations away.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/KSP-RO/RealismOverhaul/issues/2505#issuecomment-991259774, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABHH4ISRCIKSMIMRZG5PWGTUQJMS7ANCNFSM5CNPEIHQ . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.