private static string PrintParams(MortalityParam mortMaternal, MortalityParam mortSibComp, MortalityParam mortSibHelp) { string strParams = "----" + System.Environment.NewLine + "Mortality parameters for this run:\n" + string.Format("Risk of mortality during childbirth: {0}\n", Enum.GetName(typeof(MortalityParam), mortMaternal)) + string.Format("Sibling competition: {0}\n", Enum.GetName(typeof(MortalityParam), mortSibHelp)) + string.Format("Juvenile help: {0}\n", Enum.GetName(typeof(MortalityParam), mortSibHelp)) ; return(strParams); }
/// <summary> /// Parse string arguments passed to program. Return level of mortality parameter /// </summary> /// <param name="arg">String argument passed to model</param> /// <returns>MortalityParam: high, medium, low or none (default) </returns> private static MortalityParam parseArgs(string arg) { MortalityParam returnedValue = MortalityParam.None; // default to none switch (arg.ToUpper()) { case "HIGH": returnedValue = MortalityParam.High; break; case "H": returnedValue = MortalityParam.High; break; case "MEDIUM": returnedValue = MortalityParam.Medium; break; case "M": returnedValue = MortalityParam.Medium; break; case "LOW": returnedValue = MortalityParam.Low; break; case "L": returnedValue = MortalityParam.Low; break; default: returnedValue = MortalityParam.None; break; } return(returnedValue); }
private static void interactiveMode() { Console.WriteLine("(Running in interactive mode)"); Console.WriteLine(); Console.WriteLine("Please enter mortality parameters (h=high, m=medium, l=low, n=none):"); Console.Write("Risk of mortality during childbirth: "); MortalityParam p1 = parseArgs(Console.ReadLine()); Console.Write("Intensity of sibling competition: "); MortalityParam p2 = parseArgs(Console.ReadLine()); Console.Write("Level of juvenile help: "); MortalityParam p3 = parseArgs(Console.ReadLine()); Console.WriteLine(PrintParams(p1, p2, p3)); Console.Write("Enter Siler parameter a1: "); double silerA1 = double.Parse(Console.ReadLine()); Console.Write("Enter Siler parameter b1: "); double silerB1 = double.Parse(Console.ReadLine()); Console.Write("Enter Siler parameter a2: "); double silerA2 = double.Parse(Console.ReadLine()); Console.Write("Enter Siler parameter a3: "); double silerA3 = double.Parse(Console.ReadLine()); Console.Write("Enter Siler parameter b3: "); double silerB3 = double.Parse(Console.ReadLine()); bool done = false; // create and initialise model sdpInteractive = new BirthIntervals(); // set parameters of model sdpInteractive.childbirthMortality = p1; sdpInteractive.siblingCompetition = p2; sdpInteractive.siblingHelp = p3; // set Siler params sdpInteractive.silerA1 = silerA1; sdpInteractive.silerB1 = silerB1; sdpInteractive.silerA2 = silerA2; sdpInteractive.silerA3 = silerA3; sdpInteractive.silerB3 = silerB3; do { // Main menu Console.WriteLine(); Console.WriteLine("1 = calculate optimal interbirth intervals (backward iteration)"); Console.WriteLine("2 = calculate population distributions (forward iteration)"); Console.WriteLine("3 = calculate stats"); Console.WriteLine("4 = full model run"); Console.Write("Please select an option (0 = quit): "); string input = Console.ReadLine(); int option; try { option = int.Parse(input); } catch (FormatException e) { Console.WriteLine("Invalid option. Try again"); continue; } if (option == 0) { done = true; continue; } else if (option == 1) { back(); } else if (option == 2) { forward(); } else if (option == 3) { stats(); } else if (option == 4) { back(); forward(); stats(); } else { Console.WriteLine("{0} is an invalid option.", option); } } while (!done); }