public void CreateGraphInput(Constants.SimulationType simulationType) { ExcelManipulation excelGraph = new ExcelManipulation(); excelGraph.CreateExcelFile(); int grrow = 1; int grcol = 1; excelGraph.createHeaders(grrow, grcol, "Run No", "A", "B", 2, true, 10, "n"); excelGraph.createHeaders(grrow, ++grcol, "Simulation Type", "A", "B", 2, true, 10, "n"); excelGraph.createHeaders(grrow, ++grcol, "Total Budget", "A", "B", 2, true, 10, "n"); excelGraph.createHeaders(grrow, ++grcol, "Average Budget", "A", "B", 2, true, 10, "n"); excelGraph.createHeaders(grrow, ++grcol, "Average Reputation", "A", "B", 2, true, 10, "n"); excelGraph.createHeaders(grrow, ++grcol, "Min Reputation", "A", "B", 2, true, 10, "n"); excelGraph.createHeaders(grrow, ++grcol, "Max Reputation", "A", "B", 2, true, 10, "n"); excelGraph.createHeaders(grrow, ++grcol, "Growth Factor ws5", "A", "B", 2, true, 10, "n"); excelGraph.createHeaders(grrow, ++grcol, "Growth Factor ws10", "A", "B", 2, true, 10, "n"); excelGraph.createHeaders(grrow, ++grcol, "Growth Factor ws15", "A", "B", 2, true, 10, "n"); excelGraph.createHeaders(grrow, ++grcol, "Comp prob ws5", "A", "B", 2, true, 10, "n"); excelGraph.createHeaders(grrow, ++grcol, "Comp prob ws10", "A", "B", 2, true, 10, "n"); excelGraph.createHeaders(grrow, ++grcol, "Comp prob ws15", "A", "B", 2, true, 10, "n"); excelGraph.createHeaders(grrow, ++grcol, "Coop prob ws6", "A", "B", 2, true, 10, "n"); excelGraph.createHeaders(grrow, ++grcol, "Coop prob ws11", "A", "B", 2, true, 10, "n"); excelGraph.createHeaders(grrow, ++grcol, "Coop prob ws16", "A", "B", 2, true, 10, "n"); excelGraph.createHeaders(grrow, ++grcol, "Reward Chance ws5", "A", "B", 2, true, 10, "n"); excelGraph.createHeaders(grrow, ++grcol, "Reward Chance ws10", "A", "B", 2, true, 10, "n"); excelGraph.createHeaders(grrow, ++grcol, "Reward Chance ws15", "A", "B", 2, true, 10, "n"); for (int i = 0; i < avgBudget.Count; i++) { grrow++; grcol = 1; excelGraph.InsertData(grrow, grcol, i.ToString(), "", "", ""); excelGraph.InsertData(grrow, ++grcol, simulationType.ToString(), "", "", ""); excelGraph.InsertData(grrow, ++grcol, totalBudget[i].ToString(), "", "", ""); excelGraph.InsertData(grrow, ++grcol, avgBudget[i].ToString(), "", "", ""); excelGraph.InsertData(grrow, ++grcol, avgReputation[i].ToString(), "", "", ""); excelGraph.InsertData(grrow, ++grcol, minReputation[i].ToString(), "", "", ""); excelGraph.InsertData(grrow, ++grcol, maxReputation[i].ToString(), "", "", ""); excelGraph.InsertData(grrow, ++grcol, growthFactor5[i].ToString(), "", "", ""); excelGraph.InsertData(grrow, ++grcol, growthFactor10[i].ToString(), "", "", ""); excelGraph.InsertData(grrow, ++grcol, growthFactor15[i].ToString(), "", "", ""); excelGraph.InsertData(grrow, ++grcol, compProb5[i].ToString(), "", "", ""); excelGraph.InsertData(grrow, ++grcol, compProb10[i].ToString(), "", "", ""); excelGraph.InsertData(grrow, ++grcol, compProb15[i].ToString(), "", "", ""); excelGraph.InsertData(grrow, ++grcol, coopProb6[i].ToString(), "", "", ""); excelGraph.InsertData(grrow, ++grcol, coopProb11[i].ToString(), "", "", ""); excelGraph.InsertData(grrow, ++grcol, coopProb16[i].ToString(), "", "", ""); excelGraph.InsertData(grrow, ++grcol, rewardChance5[i].ToString(), "", "", ""); excelGraph.InsertData(grrow, ++grcol, rewardChance10[i].ToString(), "", "", ""); excelGraph.InsertData(grrow, ++grcol, rewardChance15[i].ToString(), "", "", ""); } long ticks = DateTime.Now.Ticks; excelGraph.SaveDocument("coopetitionGraph_" + simulationType + "_" + ticks + ".xls"); }
public void Run(Constants.SimulationType simulationType) { if (dtWsInitialValues.Rows.Count == 0) { Initialization(simulationType); } else { InitializeUsingDataTables(simulationType); } long start = DateTime.Now.Ticks; for (int i = 0; i < Constants.NumberOfRuns; i++) { outputLog.AppendText("Iteration #" + i + "...\n"); outputLog.ScrollToCaret(); excel.CreateExcelFile(); row = 1; col = 1; Simulation(i + 1); long ticks = DateTime.Now.Ticks; excel.SaveDocument("coopetition_" + i.ToString() + "_" + ticks + ".xls"); double totBudget = 0; double totRep = 0; double maxRep = 0; double minRep = 1; for (int j = 0; j < Communities[0].Members.Count; j++) { totBudget += Communities[0].Members[j].Webservice.Budget; totRep += Communities[0].Members[j].Webservice.Reputation; if (Communities[0].Members[j].Webservice.Reputation > maxRep) { maxRep = Communities[0].Members[j].Webservice.Reputation; } if (Communities[0].Members[j].Webservice.Reputation < minRep) { minRep = Communities[0].Members[j].Webservice.Reputation; } } for (int j = 0; j < Communities[0].Members.Count; j++) { totBudget += Communities[0].Members[j].Webservice.Budget; totRep += Communities[0].Members[j].Webservice.Reputation; if (Communities[0].Members[j].Webservice.Reputation > maxRep) { maxRep = Communities[0].Members[j].Webservice.Reputation; } if (Communities[0].Members[j].Webservice.Reputation < minRep) { minRep = Communities[0].Members[j].Webservice.Reputation; } } int numberOfTasksDone = 0; double totalQoSDone = 0; int totalSatisfied = 0; for (int j = 0; j < TaskPool.Count; j++) { if (TaskPool[j].PerformedQoS > 0) { numberOfTasksDone++; totalQoSDone += TaskPool[j].PerformedQoS; if (TaskPool[j].PerformedQoS > TaskPool[j].QoS + 0.2) { totalSatisfied++; } } } avgBudget.Add((double)totBudget / Communities[0].Members.Count); totalBudget.Add(totBudget); avgReputation.Add((double)totRep / Communities[0].Members.Count); minReputation.Add(minRep); maxReputation.Add(maxRep); growthFactor5.Add(Communities[0].Members[5].Webservice.GrowthFactor); growthFactor10.Add(Communities[0].Members[10].Webservice.GrowthFactor); growthFactor15.Add(Communities[0].Members[15].Webservice.GrowthFactor); compProb5.Add(Communities[0].Members[5].Webservice.CompetedProbability); compProb10.Add(Communities[0].Members[10].Webservice.CompetedProbability); compProb15.Add(Communities[0].Members[15].Webservice.CompetedProbability); coopProb6.Add(1 - Communities[0].Members[6].Webservice.CompetedProbability); coopProb11.Add(1 - Communities[0].Members[11].Webservice.CompetedProbability); coopProb16.Add(1 - Communities[0].Members[16].Webservice.CompetedProbability); rewardChance5.Add((double)Communities[0].Members[5].Webservice.NumberOfRewarded / (i + 1)); rewardChance10.Add((double)Communities[0].Members[10].Webservice.NumberOfRewarded / (i + 1)); rewardChance15.Add((double)Communities[0].Members[15].Webservice.NumberOfRewarded / (i + 1)); totalRunTaskQoS.Add((double)totalQoSDone); totalRunTaskNumber.Add((double)numberOfTasksDone); avergaeProvidedTaskQoS.Add((double)totalQoSDone / numberOfTasksDone); numberOfTaskSatisfied.Add((double)totalSatisfied); ratioOfTaskSatisfied.Add((double)totalSatisfied / numberOfTasksDone); ReleaseTasks(); } long end = DateTime.Now.Ticks; outputLog.AppendText("Simulation took: " + (int)((end - start) / 10000) + " ms\n"); outputLog.AppendText("Done!\n"); outputLog.ScrollToCaret(); CreateGraphInput(simulationType); avgBudget.Clear(); totalBudget.Clear(); avgReputation.Clear(); maxReputation.Clear(); minReputation.Clear(); growthFactor5.Clear(); growthFactor10.Clear(); growthFactor15.Clear(); compProb5.Clear(); compProb10.Clear(); compProb15.Clear(); coopProb6.Clear(); coopProb11.Clear(); coopProb16.Clear(); totalRunTaskQoS.Clear(); totalRunTaskNumber.Clear(); avergaeProvidedTaskQoS.Clear(); numberOfTaskSatisfied.Clear(); ratioOfTaskSatisfied.Clear(); MessageBox.Show("Done!"); }