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();
            }
        }
Beispiel #2
0
        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);
                }
            }
        }