public override void fromValueMap(Dictionary <string, string> vals) { int evaderCount = Int32.Parse(vals[GameParamsValueNames.EVADERS_COUNT.key]); int pursuerCount = Int32.Parse(vals[GameParamsValueNames.PURSUERS_COUNT.key]); r_p = Int32.Parse(vals[GameParamsValueNames.PURSUERS_VELOCITY.key]); r_e = Int32.Parse(vals[GameParamsValueNames.EVADERS_TRANSMISSION_RANGE.key]); r_s = Int32.Parse(vals[GameParamsValueNames.EVADERS_SENSING_RANGE.key]); p_d = double.Parse( GameParamsValueNames.PURSUERS_DETECTION_PROB.tryRead(vals)); canEvadersReceiveMultipleBroadcasts = (vals[GameParamsValueNames.EVADERS_CAN_RECEIVE_SIMULTENOUS_BROADCASTS.key] == "1"); canSinksSensePursuers = (vals[GameParamsValueNames.SINKS_SENSE_PURSUERS.key] == "1"); areSinksSafe = (vals[GameParamsValueNames.SINKS_SAFE_POINTS.key] == "1"); EvaderCircumferenceEntranceKillProb = float.Parse(GameParamsValueNames.EVADERS_CIRCUMFERENCE_ENTRY_KILL_PROB.tryRead(vals)); R = ReflectionUtils.constructEmptyCtorType <ARewardFunction>(vals[GameParamsValueNames.REWARD_FUNCTION_NAME.key]); R.setArgs(vals[GameParamsValueNames.REWARD_FUNCTION_ARGS.key]); A_E = Evader.getAgents(evaderCount); A_P = Pursuer.getAgents(pursuerCount); }
public override void fromValueMap(Dictionary <string, string> vals) { // FIXME: instead of having multiple functions reading/writing into a value map, automate this int evaderCount = Int32.Parse(vals[GameParamsValueNames.EVADERS_COUNT.key]); int pursuerCount = Int32.Parse(vals[GameParamsValueNames.PURSUERS_COUNT.key]); r_p = Int32.Parse(vals[GameParamsValueNames.PURSUERS_VELOCITY.key]); p_d = double.Parse( GameParamsValueNames.PURSUERS_DETECTION_PROB.tryRead(vals)); canEliminate = (1 == int.Parse(AdvRoutingGameParamsValueNames.CAN_PURSUERS_ELIMINATE.tryRead(vals))); sinkAlwaysDetectable = (1 == int.Parse(AdvRoutingGameParamsValueNames.SINK_ALWAYS_DETECTED.tryRead(vals))); accurateInterception = (1 == int.Parse(AdvRoutingGameParamsValueNames.CAN_SENSE_ACCURATE_LOCATION.tryRead(vals))); string rewardFuncName = GameParamsValueNames.REWARD_FUNCTION_NAME.tryRead(vals); R = ReflectionUtils.constructEmptyCtorType <ARewardFunction>(rewardFuncName); R.setArgs(GameParamsValueNames.REWARD_FUNCTION_ARGS.tryRead(vals)); A_E = Evader.getAgents(evaderCount); A_P = Pursuer.getAgents(pursuerCount); singleSourceRouter = "1" == AdvRoutingGameParamsValueNames.SINGLE_SOURCE.tryRead(vals); forceContinuousTransmission = "1" == AdvRoutingGameParamsValueNames.CONTINUOUS_ROUTERS.tryRead(vals); }
/// <summary> /// makes sure the active param object matches the GUI /// </summary> private void setParamData() { //param.canEvadersReceiveMultipleBroadcasts = chkMultipleBroadcasts.Checked; //param.canSinksSensePursuers = chkSinksSensePursuers.Checked; //param.areSinksSafe = chkSafeSinks.Checked; int psi; if (tryParseTextBox(txtPursuerCount, lblPursuerCount, out psi)) { param.A_P = Pursuer.getAgents(psi); } int evaderCount; if (tryParseTextBox(txtEvadersCount, lblEvaderCount, out evaderCount)) { param.A_E = Evader.getAgents(evaderCount); } int res; if (tryParseTextBox(txtres, lblrs, out res)) { param.r_e = res; } float fe; if (tryParseTextBox(txtRenewal, lblREnewal, out fe)) { param.f_e = fe; } float dp; if (tryParseTextBox(txtDetectionProb, lblDetectionProb, out dp)) { param.detectionProbRestraint = dp; } }
/// <summary> /// makes sure the active param object matches the GUI /// </summary> private void setParamData() { //param.canEvadersReceiveMultipleBroadcasts = chkMultipleBroadcasts.Checked; //param.canSinksSensePursuers = chkSinksSensePursuers.Checked; //param.areSinksSafe = chkSafeSinks.Checked; int psi; if (tryParseTextBox(txtPursuerCount, lblPursuerCount, out psi)) { param.A_P = Pursuer.getAgents(psi); } int evaderCount; if (tryParseTextBox(txtEvadersCount, lblEvaderCount, out evaderCount)) { param.A_E = Evader.getAgents(evaderCount); } int rp; if (tryParseTextBox(txtrp, lblrp, out rp)) { param.r_p = rp; } int re; // if area is square, also make sure re is valid i.e. odd value if (tryParseTextBox(txtre, lblre, out re, (reval) => { return(!chkSquareArea.Checked || reval % 2 == 1); })) { param.r_e = re; } int res; if (tryParseTextBox(txtres, lblrs, out res)) { param.r_es = res; } //int rps; //if (tryParseTextBox(txtrps, lblrs, out rps)) // param.r_ps = rps; int ti; if (tryParseTextBox(txtti, lblti, out ti)) { param.t_i = ti; } param.IsAreaSquare = chkSquareArea.Checked; //try //{ // // set reward func: // if (cmbRewardFunc.SelectedItem == null) // { // lblR.ForeColor = Color.Red; // return; // } // param.R = ReflectionUtils.constructEmptyCtorType<ARewardFunction>((string)cmbRewardFunc.SelectedItem); // lblR.ForeColor = Color.Black; // lstRewarrdDesc.Items.Clear(); // lstRewarrdDesc.Items.AddRange(param.R.argumentsDescription().ToArray<object>()); // try // { // param.R.setArgs(txtRewardArg.Text); // lblRewardArg.ForeColor = Color.Black; // } // catch (Exception) // { // lblRewardArg.ForeColor = Color.Red; // } //} //catch (Exception ex) //{ // lblR.ForeColor = Color.Red; //} }
private void btnSave_Click(object sender, EventArgs e) { foreach (object o in this.Controls) { Label l = o as Label; if (l != null && l.ForeColor.ToArgb() != Color.Black.ToArgb() && l.Visible == true) // ensure all fields are "valid" { MessageBox.Show(l.Text + " has invalid value"); return; } } SaveFileDialog d = new SaveFileDialog(); d.Filter = "Intrusion Game Param Files (*." + AppConstants.FileExtensions.INTRUSION_PARAM + ")|*." + AppConstants.FileExtensions.INTRUSION_PARAM; try { if (d.ShowDialog() != System.Windows.Forms.DialogResult.OK) { return; } string dialogFilename = d.FileName; int minTI = Int32.Parse(txtti.Text); int minRES = Int32.Parse(txtres.Text); //int minRPS = Int32.Parse(txtrps.Text); int minRP = Int32.Parse(txtrp.Text); int minPsi = Int32.Parse(txtPursuerCount.Text); int minEta = Int32.Parse(txtEvadersCount.Text); //string minRewardArg = txtRewardArg.Text; int maxRP = minRP; int maxPsi = minPsi; int maxEta = minEta; int maxRES = minRES; //int maxRPS = minRPS; int maxTI = minTI; //string maxRewardArg = txtRewardArgMax.Text; if (txtMaxRP.Text.Length > 0) { Int32.TryParse(txtMaxRP.Text, out maxRP); } if (txtMaxPsi.Text.Length > 0) { Int32.TryParse(txtMaxPsi.Text, out maxPsi); } if (txtMaxEta.Text.Length > 0) { Int32.TryParse(txtMaxEta.Text, out maxEta); } if (txtMaxRes.Text.Length > 0) { Int32.TryParse(txtMaxRes.Text, out maxRES); } //if (txtMaxRps.Text.Length > 0) // Int32.TryParse(txtMaxRps.Text, out maxRPS); if (txtMaxTi.Text.Length > 0) { Int32.TryParse(txtMaxTi.Text, out maxTI); } if (maxRP == minRP && maxPsi == minPsi && maxEta == minEta //&& maxRPS == minRPS && maxRES == minRES && minTI == maxTI /*&& maxRewardArg.Length == 0*/) { param.serialize(d.FileName); } else { //string rewardJump = txtRewardArgJump.Text; int rpJump = 0, psiJump = 0, etaJump = 0, resJump = 0, rpsJump = 0, tiJump; Int32.TryParse(txtPsiJump.Text, out psiJump); Int32.TryParse(txtEtaJump.Text, out etaJump); Int32.TryParse(txtRPJump.Text, out rpJump); Int32.TryParse(txtResJump.Text, out resJump); //Int32.TryParse(txtRpsJump.Text, out rpsJump); Int32.TryParse(txtTiJump.Text, out tiJump); rpJump = Math.Max(rpJump, 1); psiJump = Math.Max(psiJump, 1); etaJump = Math.Max(etaJump, 1); resJump = Math.Max(resJump, 1); //rpsJump = Math.Max(rpsJump, 1); tiJump = Math.Max(tiJump, 1); dialogFilename = dialogFilename.Substring(0, dialogFilename.LastIndexOf('.')); string newFolderName = ""; try { char slash = '\\'; if (!dialogFilename.Contains(slash)) { slash = '/'; } newFolderName = dialogFilename.Substring(dialogFilename.LastIndexOf(slash) + 1); Directory.CreateDirectory(dialogFilename); dialogFilename += (slash + newFolderName); } catch (Exception) { } //var rewardFuncs = param.R.getRewardFunctions(minRewardArg, maxRewardArg, rewardJump); //foreach(ARewardFunction rw in rewardFuncs) //for (int rps = minRPS; rps <= maxRPS; rps += rpsJump) for (int res = minRES; res <= maxRES; res += resJump) { for (int rp = minRP; rp <= maxRP; rp += rpJump) { for (int psi = minPsi; psi <= maxPsi; psi += psiJump) { for (int eta = minEta; eta <= maxEta; eta += etaJump) { for (int ti = minTI; ti <= maxTI; ti += tiJump) { param.A_E = Evader.getAgents(eta); param.A_P = Pursuer.getAgents(psi); param.r_p = rp; param.t_i = ti; param.r_es = res; //param.r_ps = rps; //param.R = rw; string fileName = dialogFilename + "_eta" + eta.ToString() + "_rp" + rp.ToString() + "_psi" + psi.ToString() + "_res" + res.ToString() + //"_rps" + rps.ToString() + "_ti" + ti.ToString() + //"_" + rw.fileNameDescription() + "." + AppConstants.FileExtensions.INTRUSION_PARAM; param.serialize(fileName); } } } } } } isDirty = false; ParamFilePath = d.FileName; } catch (Exception ex) { MessageBox.Show(ex.Message); } }
private void btnSave_Click(object sender, EventArgs e) { foreach (object o in this.Controls) { Label l = o as Label; if (l != null && l.ForeColor.ToArgb() != Color.Black.ToArgb() && l.Visible == true) // ensure all fields are "valid" { MessageBox.Show(l.Text + " has invalid value"); return; } } SaveFileDialog d = new SaveFileDialog(); d.Filter = "Routing Game Param Files (*." + AppConstants.FileExtensions.ROUTING_PARAM + ")|*." + AppConstants.FileExtensions.ROUTING_PARAM; try { if (d.ShowDialog() != System.Windows.Forms.DialogResult.OK) { return; } string dialogFilename = d.FileName; float minRenew = float.Parse(txtRenewal.Text); int minRES = Int32.Parse(txtres.Text); //int minRPS = Int32.Parse(txtrps.Text); int minPsi = Int32.Parse(txtPursuerCount.Text); int minEta = Int32.Parse(txtEvadersCount.Text); //string minRewardArg = txtRewardArg.Text; int maxPsi = minPsi; int maxEta = minEta; int maxRES = minRES; //int maxRPS = minRPS; float maxRenew = minRenew; //string maxRewardArg = txtRewardArgMax.Text; if (txtMaxPsi.Text.Length > 0) { Int32.TryParse(txtMaxPsi.Text, out maxPsi); } if (txtMaxEta.Text.Length > 0) { Int32.TryParse(txtMaxEta.Text, out maxEta); } if (txtMaxRes.Text.Length > 0) { Int32.TryParse(txtMaxRes.Text, out maxRES); } //if (txtMaxRps.Text.Length > 0) // Int32.TryParse(txtMaxRps.Text, out maxRPS); if (txtRenewalMax.Text.Length > 0) { float.TryParse(txtRenewalMax.Text, out maxRenew); } if (minRenew == maxRenew && maxPsi == minPsi && maxEta == minEta && maxRES == minRES) { param.serialize(d.FileName); } else { //string rewardJump = txtRewardArgJump.Text; int rpJump, psiJump, etaJump, resJump, rpsJump; float renewalJump; Int32.TryParse(txtPsiJump.Text, out psiJump); Int32.TryParse(txtEtaJump.Text, out etaJump); Int32.TryParse(txtResJump.Text, out resJump); float.TryParse(txtRenewalJump.Text, out renewalJump); psiJump = Math.Max(psiJump, 1); etaJump = Math.Max(etaJump, 1); resJump = Math.Max(resJump, 1); renewalJump = Math.Max(renewalJump, 0); dialogFilename = dialogFilename.Substring(0, dialogFilename.LastIndexOf('.')); string newFolderName = ""; try { char slash = '\\'; if (!dialogFilename.Contains(slash)) { slash = '/'; } newFolderName = dialogFilename.Substring(dialogFilename.LastIndexOf(slash) + 1); Directory.CreateDirectory(dialogFilename); dialogFilename += (slash + newFolderName); } catch (Exception) { } //var rewardFuncs = param.R.getRewardFunctions(minRewardArg, maxRewardArg, rewardJump); //foreach(ARewardFunction rw in rewardFuncs) //for (int rps = minRPS; rps <= maxRPS; rps += rpsJump) for (int res = minRES; res <= maxRES; res += resJump) { for (int psi = minPsi; psi <= maxPsi; psi += psiJump) { for (int eta = minEta; eta <= maxEta; eta += etaJump) { for (float renewal = minRenew; renewal <= maxRenew; renewal += renewalJump) { param.A_E = Evader.getAgents(eta); param.A_P = Pursuer.getAgents(psi); param.r_e = res; param.detectionProbRestraint = double.Parse(txtDetectionProb.Text); param.f_e = renewal; //param.r_ps = rps; //param.R = rw; string fileName = dialogFilename + "_eta" + eta.ToString() + "_psi" + psi.ToString() + "_res" + res.ToString() + "_fe" + renewal.ToString("0.00") + "." + AppConstants.FileExtensions.ROUTING_PARAM; param.serialize(fileName); } } } } } isDirty = false; ParamFilePath = d.FileName; } catch (Exception ex) { MessageBox.Show(ex.Message); } }
/// <summary> /// makes sure the active param object matches the GUI /// </summary> private void setParamData() { param.canEvadersReceiveMultipleBroadcasts = chkMultipleBroadcasts.Checked; param.canSinksSensePursuers = chkSinksSensePursuers.Checked; param.areSinksSafe = chkSafeSinks.Checked; int psi; if (tryParseTextBox(txtPursuerCount, lblPursuerCount, out psi)) { param.A_P = Pursuer.getAgents(psi); } int evaderCount; if (tryParseTextBox(txtEvadersCount, lblEvaderCount, out evaderCount)) { param.A_E = Evader.getAgents(evaderCount); } int rp; if (tryParseTextBox(txtrp, lblrp, out rp)) { param.r_p = rp; } int re; if (tryParseTextBox(txtre, lblre, out re)) { param.r_e = re; } int rs; if (tryParseTextBox(txtrs, lblrs, out rs)) { param.r_s = rs; } float pd; if (tryParseTextBox(txtpd, lblpd, out pd)) { param.p_d = pd; } try { // set reward func: if (cmbRewardFunc.SelectedItem == null) { lblR.ForeColor = Color.Red; return; } param.R = ReflectionUtils.constructEmptyCtorType <ARewardFunction>((string)cmbRewardFunc.SelectedItem); lblR.ForeColor = Color.Black; lstRewarrdDesc.Items.Clear(); lstRewarrdDesc.Items.AddRange(param.R.argumentsDescription().ToArray <object>()); try { param.R.setArgs(txtRewardArg.Text); lblRewardArg.ForeColor = Color.Black; } catch (Exception) { lblRewardArg.ForeColor = Color.Red; } //// if reward func isn't undefined, check argument validity: //int givenArgs; //if (txtRewardArg.Text == "") // givenArgs = 0; //else // givenArgs = txtRewardArg.Text.Split(new char[] { ',' }).Count() + 1; //if (givenArgs == param.R.argumentsDescription().Count) // lblRewardArg.ForeColor = Color.Black; //else // lblRewardArg.ForeColor = Color.Red; } catch (Exception ex) { lblR.ForeColor = Color.Red; } }