13 ArgumentNullException.ThrowIfNull(notation);
16 $
"{RenderAlpha(notation.Alpha)} | " +
17 $
"{RenderBeta(notation.Beta)} | " +
18 $
"{RenderGamma(notation.Gamma)}";
21 private static string RenderAlpha(
25 alpha.ItemCardinality
switch
32 string productStructure =
33 alpha.ProblemLevel
switch
35 UniversalProblemLevel.SingleLevel =>
"SL",
36 UniversalProblemLevel.MultiLevel =>
38 UniversalNotationTokenCatalog
39 .GetProductStructureCode(
54 private static string RenderNetwork(
55 UniversalNetworkNotation network)
58 network.Coupling
switch
60 NetworkCouplingType.ForwardOnly =>
62 UniversalNotationTokenCatalog
63 .GetNetworkTopologyCode(
64 network.ForwardTopology),
66 NetworkCouplingType.ReverseOnly =>
68 UniversalNotationTokenCatalog
69 .GetNetworkTopologyCode(
70 network.ReverseTopology ??
73 NetworkCouplingType.ClosedLoop =>
75 UniversalNotationTokenCatalog
76 .GetNetworkTopologyCode(
77 network.ForwardTopology) +
79 UniversalNotationTokenCatalog
80 .GetNetworkTopologyCode(
81 network.ReverseTopology ??
85 _ =>
throw new ArgumentOutOfRangeException(
88 "Unknown network coupling type.")
91 var modifiers =
new List<string>();
93 if (network.EchelonCount.HasValue)
95 modifiers.Add($
"E{network.EchelonCount.Value}");
98 if (network.HasCycles)
103 if (network.HasMultiSourcing)
108 if (network.HasTransshipment)
113 return modifiers.Count == 0
115 : core +
":" +
string.Join(
":", modifiers);
118 private static string RenderBeta(
119 UniversalNotationBeta beta)
126 .OrderBy(feature => (
int)feature)
128 UniversalNotationTokenCatalog.GetFeatureToken));
131 beta.SemanticConditions
132 .OrderBy(condition => (
int)condition)
134 UniversalNotationTokenCatalog
135 .GetSemanticConditionToken));
138 beta.TemporalQualifiers
141 (
int)qualifier.Parameter)
143 UniversalNotationTokenCatalog
144 .GetTemporalQualifierToken));
146 return tokens.Count == 0
148 :
string.Join(
",", tokens);
151 private static string RenderGamma(
152 UniversalNotationGamma gamma)
154 return gamma.Objective
switch
156 UniversalObjectiveKind.Economic =>
"Obj:Econ",
157 UniversalObjectiveKind.MultipleObjectives =>
"Obj:Multi",
158 UniversalObjectiveKind.Financial =>
"Obj:Fin",
159 UniversalObjectiveKind.Sustainability =>
"Obj:Sust",
160 UniversalObjectiveKind.ServiceLevel =>
"Obj:Service",