internal static BanditPolicy DeserializeBanditPolicy(JsonElement element) { Optional <float> slackAmount = default; Optional <float> slackFactor = default; Optional <int> delayEvaluation = default; Optional <int> evaluationInterval = default; EarlyTerminationPolicyType policyType = default; foreach (var property in element.EnumerateObject()) { if (property.NameEquals("slackAmount")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } slackAmount = property.Value.GetSingle(); continue; } if (property.NameEquals("slackFactor")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } slackFactor = property.Value.GetSingle(); continue; } if (property.NameEquals("delayEvaluation")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } delayEvaluation = property.Value.GetInt32(); continue; } if (property.NameEquals("evaluationInterval")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } evaluationInterval = property.Value.GetInt32(); continue; } if (property.NameEquals("policyType")) { policyType = new EarlyTerminationPolicyType(property.Value.GetString()); continue; } } return(new BanditPolicy(Optional.ToNullable(delayEvaluation), Optional.ToNullable(evaluationInterval), policyType, Optional.ToNullable(slackAmount), Optional.ToNullable(slackFactor))); }
internal static TruncationSelectionPolicy DeserializeTruncationSelectionPolicy(JsonElement element) { Optional <int> truncationPercentage = default; Optional <int> delayEvaluation = default; Optional <int> evaluationInterval = default; EarlyTerminationPolicyType policyType = default; foreach (var property in element.EnumerateObject()) { if (property.NameEquals("truncationPercentage")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } truncationPercentage = property.Value.GetInt32(); continue; } if (property.NameEquals("delayEvaluation")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } delayEvaluation = property.Value.GetInt32(); continue; } if (property.NameEquals("evaluationInterval")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } evaluationInterval = property.Value.GetInt32(); continue; } if (property.NameEquals("policyType")) { policyType = new EarlyTerminationPolicyType(property.Value.GetString()); continue; } } return(new TruncationSelectionPolicy(Optional.ToNullable(delayEvaluation), Optional.ToNullable(evaluationInterval), policyType, Optional.ToNullable(truncationPercentage))); }
internal static EarlyTerminationPolicy DeserializeEarlyTerminationPolicy(JsonElement element) { if (element.TryGetProperty("policyType", out JsonElement discriminator)) { switch (discriminator.GetString()) { case "Bandit": return(BanditPolicy.DeserializeBanditPolicy(element)); case "MedianStopping": return(MedianStoppingPolicy.DeserializeMedianStoppingPolicy(element)); case "TruncationSelection": return(TruncationSelectionPolicy.DeserializeTruncationSelectionPolicy(element)); } } Optional <int> delayEvaluation = default; Optional <int> evaluationInterval = default; EarlyTerminationPolicyType policyType = default; foreach (var property in element.EnumerateObject()) { if (property.NameEquals("delayEvaluation")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } delayEvaluation = property.Value.GetInt32(); continue; } if (property.NameEquals("evaluationInterval")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } evaluationInterval = property.Value.GetInt32(); continue; } if (property.NameEquals("policyType")) { policyType = new EarlyTerminationPolicyType(property.Value.GetString()); continue; } } return(new EarlyTerminationPolicy(Optional.ToNullable(delayEvaluation), Optional.ToNullable(evaluationInterval), policyType)); }