Loading [MathJax]/jax/output/HTML-CSS/fonts/TeX/fontdata.js

Tuesday, August 4, 2015

Пример выбора порядка выполнения подзадач при необходимости ответа заказчика


   Недавно у меня был такой случай. У одного разработчика было задание, которое мы разбили на 3 не связанные между собой подзадачи.
  • подзадача 1  - время выполнения 1/2 дня (t1=1d=8h);
  • подзадача 2 - время выполнения 1 час (t2=1h);
  • подзадача 3 - есть два несовместимых варианта решения :
    • вариант А  - пол дня (tA3=1h)
    • вариат - B  3 дня (tB3=3d=24h). 
   Выбор за заказчиком. Заказчик может ответить в течении часа (tfreply=1h), а может и затребовать день(tslowreply=1d). По нашим (с разработчиком) прикидкам с вероятностью 90% заказчик выберет вариант B (PB3=90%). На то чтобы сформулировать ему вопрос понадобится около получаса (temail=12h).

   Я бы работал по следующему плану:
  • отправил письмо заказчику;
  • подзадача 1;
  • подазача 2 ;
  • если не получен ответ то приступил бы к подзадаче 3, вариант Б.
  • по получении ответа либо продолжил бы делать вариант Б либо переключился на вариант А

   Разработчик же решил делать так:
  • отправил письмо заказчику;
  • подзадача 3, вариант Б (который 3 дня);
  • получил ответ от заказчика (угадал - т.е. вариант Б+)
  • подзадача 1;
  • подзадача 2;
   Откровенно говоря, я как-то и не подумал о том что существуют други подходы к планированию, чем "мой".

    Дальше для тех, кто любит математику:

    Сначала мой случай.
    Максимальное время на выполнение всего задания (худший случай) при моем подходе:

Tmymax
= 1/2h + 4h+1h +max ((1d - 1/2h-4h-1h),3d) =
= 5 1/2h +max ((2 1/2h), 3d) = 29 1/2 h,
   где t_{email,1,2} = t_{email} + t_1 + t_2;

   Минимальное время на выполнение всего задания (лучший случай) при моем подходе:

T_{my}^{min}= t_{email,1,2} + min( (t_{reply}^{slow} - t_{email,1,2} + t_3^A), t_3^B ) = 8 h

   Вероятность худшего случая при моем подходе :

P_{my}^{max} = P_3^B = 90%
    Мат. ожидание времени выполнения при моем подходе:

E[T_{my}] = P_{my}^{max} * T_{my}^{max} + (1-P_{my}^{max}) * T_{my}^{min} =
= 90 % * 29 1/2 h + 10% * 8h = 27.35 h


    Теперь подход разработчика.
     Максимальное время на выполнение всего задания (худший случай) при подходе разработчика:
T_{dev}^{max}= t_{email}+max(t_{reply}^{slow} + t_3^A, t_3^B) + t_{1,2} =
= 1/2h + max(1d + 1/2d,3d) + 4h + 1h = 29 1/2 h

    Минимальное время на выполнение всего задания (лучший случай) при подходе разработчика:

T_{dev}^{min} = t_{email}+min(t_{reply}^{slow} + t_3^A, t_3^B) + t_{1,2} = 14h

   Вероятность худшего случая при подходе разработчика:

P_{dev}^{max} = P_{email}^{long}= 50%

Мат. ожидание времени выполнения при подходе разработчика:
E[T_{dev}] = P_{dev}^{max} * T_{dev}^{max} + (1-P_{dev}^{max}) * T_{dev}^{min} =
= 50 % * 29 1/2 h + 50% * 14h = 21.75 h


Т.о. подход разработчика, дает меньшее ожидаемое время исполнения, хотя в лучшем случае и занимает большее время.