public static void GenerateHeuristicSteps(Video[] videos, CacheServer[] cacheServers, IProgress <float> progress) { //calculate Heuristik //1 calculate cost savings for all combinations video zu cacheserver //2 assign videos to optimal cache server for every endpoint with full size and with reduced size(10%!?) to all other possible cache servers connected to this endpoint and ignore cahe server size for this step for (int iVideo = 0; iVideo < videos.Length; iVideo++) { //progress.Report(iVideo/(float) videos.Length); for (int iServer = 0; iServer < cacheServers.Length; iServer++) { double temp = CostSavings.calculateCostSavings(videos[iVideo], cacheServers[iServer]); if (temp > 0) { cacheServers[iServer].TempVideos.Add(videos[iVideo]); } } } //3 calculate used_space/avilable_space for every chache server foreach (var cacheServer in cacheServers) { cacheServer.CalculatePercentUsed(); } }
public static void GenerateHeuristicCosts(Video[] videos, CacheServer[] cacheServers, IProgress <float> progress) { //CostList.Clear(); float value; int counter = 0; int videoCount = videos.Length; int cacheServerCount = cacheServers.Length; for (int index = 0; index < videoCount; index++) { var video = videos[index]; progress.Report(counter++ / (float)videoCount); for (int i = 0; i < cacheServerCount; i++) { var cacheServer = cacheServers[i]; //listItem = CalculateHeuristicForOneItem(video, cacheServer); value = (float)CostSavings.calculateCostSavingsHeuristic(video, cacheServer); //Item item = new Item() //{ // Video = video, // Cache = cacheServer, // HeuristicCosts = value //}; InsertToList(cacheServer, video, value); } } }