StasikOS

   

О чем думаете?

 -Подписка по e-mail

 
Получать сообщения дневника на почту.

 -Поиск по дневнику

люди, музыка, видео, фото
Поиск сообщений в StasikOS

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Дата регистрации: 08.05.2005
Записей в дневнике:
Комментариев в дневнике:
Написано сообщений: 3717
Популярные отчеты:
кто смотрел дневник по каким фразам приходят

Одна моя странная идея

Понедельник, 15 Марта 2010 г. 02:17 (ссылка) + в цитатник

Вы когда-нибудь видели планировщик задач или органайзер или календарь, который позволяет не планировать время для той или иной задачи жестко самому, а умеет делать это автоматически? Ну, скажем, вы задаете время, когда спите, с которого часа по какой вы работаете (т.е. находитесь в определенных местах), закидываете туда что вы хотите делать (с зависимостями от событий/других задач), а эта штука пыталась бы выбрать, когда вам лучше чем заняться сама по себе?

Если такого нету, а мне такое хочется попробовать накарябать чисто с точки зрения программирования (т.е. написать какую-то реализацию такого планировщика), но что-то не понятно, как.
Вообще не понятно как можно расставлять задачи на бесконечной прямой времени, как их при этом хранить и как при этом отличать занятое время от незанятого. Пока только родилась идея планирования на n дней вперед (тем более что больше смысла не имеет), путем записи отсортированного по времени начала ассоциативного массива с элементами типа "диапазон времени", с циклической проверкой всего массива на пересечения при попытки вставить новое событие (вот не медленно ли это, хз). При этом стоит заметить что повторений и цикличности в полной мере в этом случае никогда не будет, ибо каждый день, неделя и т.д. в реальности всегда уникален и наполнен своими событиями.
Итак, пока мысль такая: создаются объекты типа Task, засунутые в контейнер. Задачи хранят время, выделенное на задачу, некоторые атрибуты типа "обязательная" и "имеет жесткое расписание" или "должна выполняться перед ..." или "после ...". Мы проходим по всем задачам в контейнере и добавляем в план задачи с расписанием в первую очередь. Затем мы повторяем это с задачами, у которых есть зависимости от задач с расписаниями, и снова их добавляем. На этом, вроде-бы со всеми жестко привязанными вариантами мы должны были разобраться (а если не получилось сделать это так чтобы ничего не пересеклось, сделаем себе хедшот в виде эксепшена). Далее начинается самое сложное и интересное, ибо тут мы будем как раз пытаться сделать работу за человека :).
Есть пара вариантов, как можно работать с множеством задач без расписания, у которых есть разные приоритеты.
1. Это просто сортировать задачи по приоритетам и забивать ими все свободное время. Но это скучно и неинтересно для моего мозга, поэтому я бы такое расписание даже не стал юзать.
2. Сделать нечто похожее на работу планировщика задач CPU. Разбить задачи на кванты определенной длины (т.е., скажем, по 30 минут), а затем, как и OS, закидывать их с учетом приоритета на все свободные промежутки времени. Реализацию этого точно можно где-то подсмотреть. :)

Вот собственно и вся идея решения такой проблемы, но до конкретной реализации пока не додумал.
Рубрики:  Размышления
Теги:  

Mandrake   78 7 обратиться по имени Понедельник, 15 Марта 2010 г. 03:30 (ссылка)
Кстати, ко мне в голову такая идея неоднократно приходила. Я задачи сортирую в голове сам, но обычно по чёткому алгоритму в зависимости от ситуации. В основном по EDF (Earliest Deadline First), т.е. сначала делаю задачи с более ранним дедлайном. Иногда по WRR (Weighted Round Robin), если задача муторная и просто-напросто надоедает, то иногда полезно на что-то другое переключиться. Что-то вроде своей RTOS в голове. :)
Ответить С цитатой В цитатник
Перейти к дневнику

Понедельник, 15 Марта 2010 г. 05:18ссылка
Ну не у всех же задач есть деадлайн :) У моих он бывает крайне редко (особенно если сам себе ставил его). Кстати вот про возможность наличия дедлайнов я и забыл :)
Перейти к дневнику

Понедельник, 15 Марта 2010 г. 05:27ссылка
Mandrake 78 7
Ну тогда WRR самое то. У каждой задачи вес в зависимости от приоритета, а далее выделять тайм слайсы по кругу пропорционально весу.
 

Добавить комментарий:
Текст комментария: показать смайлики

Проверка орфографии: (найти ошибки)

Прикрепить картинку:

 Переводить URL в ссылку
Подписаться на комментарии
Подписать картинку

Найти дневники