Rubylight JUG Contest Results Part II
Upcoming SlideShare
Loading in...5
×
 

Rubylight JUG Contest Results Part II

on

  • 2,463 views

 

Statistics

Views

Total Views
2,463
Views on SlideShare
471
Embed Views
1,992

Actions

Likes
0
Downloads
1
Comments
0

5 Embeds 1,992

http://jug.lv 1985
http://assets.txmblr.com 4
http://cloud.feedly.com 1
http://translate.googleusercontent.com 1
https://www.google.lv 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Rubylight JUG Contest Results Part II Rubylight JUG Contest Results Part II Presentation Transcript

  • 1 Rubylight programming contest 2 results jug@rubylight.com
  • Задача Обработать как можно больше запросов в течении всего времени теста, затратив минимальное количество денег на оплату инстанций
  • Изменение нагрузки
  • Имплементация interface InstanceManager { void loadNotification(long requestCount, CloudAPI cloudApi); } interface CloudAPI { void startInstances(int n); void stopInstances(int n); } ● Implement InstanceManager ● InstanceManager.loadNotification будет вызываться каждый час в симуляторе с количеством запросов, поступивших за последний час
  • Решения
  • Ключевые моменты N1 Главное – избегать штрафов!
  • Ключевые моменты N1 Главное – избегать штрафов! Не удалось никому :)
  • Ключевые моменты N2 Цикличность нагрузки Необходимо учитывать данные за предыдущие дни и недели
  • Ключевые моменты N3 Алгоритм предсказывания нагрузки при отсутствии данных за предыдущие дни
  • Присланные решения -1500000 -1000000 -500000 0 500000 1000000 1500000 2000000 2500000 3000000 3500000 ● 4 решения от 3х авторов ● Решение Rubylight ● Вариант без управления инстанциями
  • Результаты Implemen tation Request income Instance Expenses Fines Result 1 8151921 4912050 2079218 1160653 2 8159514 5237900 814973 2106641 3 8159187 4829900 634168 2695119 4 8165371 4962850 291859 2910662
  • Сравнение по количеству инстанций -1500000 -1000000 -500000 0 500000 1000000 1500000 2000000 2500000 3000000 3500000 1 2 3 4 5 0 1000000 2000000 3000000 4000000 5000000 6000000 7000000 8000000 9000000 10000000 9004800 4912050 5237900 4829900 4962850
  • Предсказание нагрузки в первый день 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 0 5000000000 10000000000 15000000000 20000000000 25000000000 30000000000 35000000000 40000000000 45000000000
  • Обзор решений
  • ● Не использовались данные за предыдущие дни ● Следующее значение предсказывалось по разнице 2х предыдущих Первое решение – 1 160 653
  • ● Учитывались данные за предыдущую неделю, каждый день сравнивался с тем же днем на прошлой неделе ● Следующее значение предсказывалось по разнице 2х предыдущих Второе решение – 2 106 641
  • ● Сложный алгоритм сглаживания “пиков” ● Учитывались 3 предыдущих значения и те же значения для предыдущего дня Третье решение – 2 695 119
  • Алгоритм лучшего решения ● Использовались данные за предыдущие дни ● Exponential Moving Average для прогноза ● Для избежания штрафов к вычисленному значению добавлялся “запас” или “insurance”
  • Exponential Moving Average For data series Y, forecasted values S
  • Exponential Moving Average Пример для N = 3 (alpha = 0.5) и N = 7 (alpha = 0.25) 1 2 3 4 5 6 7 8 9 10 11 0 50 100 150 200 250 300
  • Exponential Moving Average ● http://en.wikipedia.org/wiki/Exponential_smoothing ● http://en.wikipedia.org/wiki/Moving_average
  • Победители
  • III Deniss Samcuks
  • II Agnis Liukis III Deniss Samcuks
  • I Aivars Kalvans II Agnis Liukis III Deniss Samcuks
  • 2 https://wiki.rubylight.com/display/JUG jug@rubylight.com