powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Как отбирать из потока 1/1000 лучших экземпляров?
25 сообщений из 151, страница 6 из 7
Как отбирать из потока 1/1000 лучших экземпляров?
    #40070956
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вылечить этот недуг может такая модификация алгоритма:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
if ((currentQ < worstOfBestQ) AND (countOfBest >= runningCounter / 1000))
  проигнорировать();
else
{
  сохранить();
  if (countOfBest - 1 > runningCounter / 1000)
    забыть(worstOfBestQ);
}

которая, кстати, приведёт к заметному увеличению потока сущностей, сбрасываемых на диск:

1001-я сущность, например, будет сброшена полюбасу, потому что для неё (countOfBest >= runningCounter / 1000) перестанет выполняться.
...
Рейтинг: 0 / 0
Как отбирать из потока 1/1000 лучших экземпляров?
    #40070963
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Часть лучших потеряется, т.к. при добавлении элемента к результату по-хорошему надо заново пересмотреть весь поток.
Например в первой тысяче были значения 100 и 99. Ячейка результата одна, поэтому сохранил только 100, а 99 пришлось пропустить.

Поэтому размер результата надо выбрать на старте.
...
Рейтинг: 0 / 0
Как отбирать из потока 1/1000 лучших экземпляров?
    #40070964
в цикле потока сразу же заполняется буфер из 1000 любыми значениями
а уже потом из них вытаскивается самое мелкое, по которому ориентируется весь остальной поток
до тех пор, пока в буфере не сменится это "самое мелкое"

ТС уже определился, сколько ему всего значений надо в итоге? Или всё ещё с бесконечностью работаем?
...
Рейтинг: 0 / 0
Как отбирать из потока 1/1000 лучших экземпляров?
    #40070971
Ы2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бабушкин зайчикТС уже определился, сколько ему всего значений надо в итоге? Или всё ещё с бесконечностью работаем?
Довольно очевидно, что он хочет в любой момент времени иметь ≈1/1000 лучших от полученных из потока.

Иван FXS, сколько сущностей нужно оценить, прежде чем лучшие будут иметь хоть какой-то смысл?
...
Рейтинг: 0 / 0
Как отбирать из потока 1/1000 лучших экземпляров?
    #40070977
Ы2, ну тогда эта задача была решена ещё на 1-2 странице, в т.ч. и мной
а далее ТС въезжал в очевидное и подбрасывал костыли.
Динамический буфер тут идеальное решение, которое в конце потока выдаст 1000 самых-самых высоких значений.
...
Рейтинг: 0 / 0
Как отбирать из потока 1/1000 лучших экземпляров?
    #40071035
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бабушкин зайчик
ТС уже определился, сколько ему всего значений надо в итоге? Или всё ещё с бесконечностью работаем?
нет, не определился. У меня вообще концепция проекта эволюционирует. То, что мы тут мурыжим, это не "задача, которую я решаю", а малюсенькая служебная приблуда в ней.
бабушкин зайчик
которое в конце потока выдаст 1000 самых-самых высоких значений.
ну вот вы и начали путаться, где у нас 1000 стоит -- в числителе или в знаменателе...
...
Рейтинг: 0 / 0
Как отбирать из потока 1/1000 лучших экземпляров?
    #40071045
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван FXS
приведёт к заметному увеличению потока сущностей, сбрасываемых на диск:

А ты не вызывай flush() и они останутся в памяти.
...
Рейтинг: 0 / 0
Как отбирать из потока 1/1000 лучших экземпляров?
    #40071047
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
А ты не вызывай flush() и они останутся в памяти
доктор сказал "в морг", значит в морг. Если критерий (он же алгоритм) сказал "сохранить()", значит сохранить.
...
Рейтинг: 0 / 0
Как отбирать из потока 1/1000 лучших экземпляров?
    #40071048
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ы2
сколько сущностей нужно оценить, прежде чем лучшие будут иметь хоть какой-то смысл?
я не знаю. Я даже не знаю, буду ли я сбрасывать 1/1000, или 1/10000, или 1/1000000.

Я уже писал вчера, что у меня, на самом деле, "пакетная" обработка данных, то есть мне необходимо осуществлять не один "поток записи на диск (типа, со скважностью 1/1000)", а как минимум 100 таких потоков одновременно.

Но публика же на слове ловит: раз на вопрос "Тысяча? Десть тысяч? Миллион?" ( 22321305 ) ответил "миллиард" -- значит все, лапка завязла, птичке конец -- 1/1000 от миллиарда это миллион -- "ха-ха, всего-то".
...
Рейтинг: 0 / 0
Как отбирать из потока 1/1000 лучших экземпляров?
    #40071057
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван FXS
доктор сказал "в морг", значит в морг.

Вот поэтому-то выше я и говорил о программистах, которые в курсе работы кэша (который cache, а не cash). Но да, с диагнозом согласен.
...
Рейтинг: 0 / 0
Как отбирать из потока 1/1000 лучших экземпляров?
    #40071065
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бабушкин зайчик
Динамический буфер тут идеальное решение, которое в конце потока выдаст 1000 самых-самых высоких значений
на шестой странице топика вы всё ещё не поняли, что мне не нужны ни 1000, ни даже 1/1000 (будем считать, что вы просто описАлись) "самых-самых высоких значений". Мне нужны сущности с "самыми высокими значениями", а не сами эти значения.

И я не буду накапливать их в "динамическом буфере" -- посмотрите четвертую реплику в обсуждении (сейчас какая по счёту, черт, сколько тут реплик на странице помещается?!):
Иван FXS
каждая сущность " большая ", много больше, чем числовой параметр Q сам по себе, так что хранить их в памяти нельзя , можно только по очереди каждую оценивать и решать, сбрасывать её на диск или нет
-- вы понимаете, что означают слова " большая " и " нельзя "? Вы, наверное, думаете, что если нельзя, но очень хочется, то можно??
...
Рейтинг: 0 / 0
Как отбирать из потока 1/1000 лучших экземпляров?
    #40071085
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Стандартное решение многократно предложено на первой странице, ТС его знает, но почему-то не приемлет.
Смею предположить что он его отсек этим пунктом ТЗ:
Иван FXS
Также не желательно решение, предполагающее накопление (по ходу работы) всех числовых значений самого Q. Хотя бы потому, что оно является тривиальным.

Только ты пойми что никто не предлагает хранить 100% сущностей.

На всякий случай алгоритм хранения добавлю:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
if ((currentQ < worstOfBestQ) AND (countOfBest >= runningCounter / 1000))
  проигнорировать();
else
{
  uint64_t смещение = сохранить_в_файл_сущностей(current_сущность);
  сохранить(currentQ, смещение);
  if (countOfBest - 1 > runningCounter / 1000)
    забыть(worstOfBestQ);
}


Просто последовательно пишешь нужные на текущий момент (!!! не все) сущности в файл, а в памяти хранишь значение Q и смещение в файле где эта сущность записана. При необходимости получения сущности открываешь файл сдвигаешь указатель на нужное смещение и читаешь.

Дальше тюнинг работы с файлом с промежуточным кэшем в памяти частоиспользуемых значений и т.д. и т.п. Хотя за тебя ОС это сделает не хуже.

Да, часть сущностей в какой-то момент станет ненужными, но повторяю что это далеко не все. Чтобы оценить точнее надо просто проверить.
...
Рейтинг: 0 / 0
Как отбирать из потока 1/1000 лучших экземпляров?
    #40071088
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван FXS
на шестой странице топика вы всё ещё не поняли, что мне не нужны ни 1000, ни даже 1/1000 (будем считать, что вы просто описАлись) "самых-самых высоких значений". Мне нужны сущности с "самыми высокими значениями", а не сами эти значения.

До тебя так и не дошло, что разница между ними всего лишь в ссылке на саму сущность? Или это Визуальный Бейсик так людей портит?..

Иван FXS
вы понимаете, что означают слова " большая " и " нельзя "? Вы, наверное, думаете, что если нельзя, но очень хочется, то можно??

Таки да, даже если большой дяденька запретил, "закон - как столб, можно и обойти". Способы-то обхода большинства ограничений и запретов самоочевидны или общеизвестны.
...
Рейтинг: 0 / 0
Как отбирать из потока 1/1000 лучших экземпляров?
    #40071089
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T
Стандартное решение многократно предложено на первой странице, ТС его знает
нет, не знаю, потому что просто не понимаю на что указывает местоимение "стандартное решение многократно предложено на первой странице".

Dima T
Смею предположить что он его отсек этим пунктом ТЗ:
Иван FXS
Также не желательно решение, предполагающее накопление (по ходу работы) всех числовых значений самого Q . Хотя бы потому, что оно является тривиальным.

Только ты пойми что никто не предлагает хранить 100% сущностей .
вы продолжаете путать Q и сущности -- как мне донести до вас, что это не одно и то же?

А "этим пунктом ТЗ" я отсёк ровно то, что я им отсёк. Вы понимаете, что одобрив код, предложенный Dimitry Sibiryakov, и даже немного его поправив, я уже согласился (скрепя сердце) хранить в памяти всю кучу лучших значений Q? Не "всех числовых значений самого Q", как в том "пункте ТЗ", на который вы сейчас ссылаетесь, а "всех отобранных по критерию лучших числовых значений самого Q".

Dima T
Просто последовательно пишешь нужные на текущий момент (!!! не все) сущности в файл
предметом задачи является именно критерий (и алгоритм) отбора сущностей для записывания оных "в файл", но ваш эпитет "нужные" не является таковым критерием (алгоритмом).

Dima T
При необходимости получения сущности
в задаче ни слова не сказано о (и у меня по факту нет) какой-либо "необходимости получения сущности", которая уже обработана программой, обратно в эту программу.
...
Рейтинг: 0 / 0
Как отбирать из потока 1/1000 лучших экземпляров?
    #40071091
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
разница ... в ссылке на саму сущность
в ссылке ведущей куда? Вы прочитали в четвертой реплике в дискуссии
Иван FXS
сущность ... хранить их в памяти нельзя, можно только по очереди каждую оценивать и решать, сбрасывать её на диск или нет
???

Эта программа занимается "разыгрыванием" по методу Монте-Карло, для чего создаёт эти сущности из ничего, из ДСЧ (на основе контекста Монте-Карлемой задачи, конечно), после чего их --возможно -- сбрасывает на диск и -- точно! -- уничтожает. И никакие ссылки на них после этого указывать не могут.
...
Рейтинг: 0 / 0
Как отбирать из потока 1/1000 лучших экземпляров?
    #40071092
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Модератор: Мне кажется без конкретики (примеров данных, примеров кода) топик можно закрывать.
Если за 6 страниц так и не смогли понять что надо ТСу, то наверно нет смысла продолжать в общих словах.
...
Рейтинг: 0 / 0
Как отбирать из потока 1/1000 лучших экземпляров?
    #40071095
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T
Если за 6 страниц так и не смогли понять что надо ТСу, то наверно нет смысла продолжать в общих словах
замечу, однако, что решение на основе "кучи лучших" более-менее оформилось. По решению "без кучи" -- типа, на основе П и Ш (как давно это было!) -- продвижения, увы, нет.
...
Рейтинг: 0 / 0
Как отбирать из потока 1/1000 лучших экземпляров?
    #40071098
Dima T
Если за 6 страниц так и не смогли понять что надо ТСу

проспаться ему надо.
А то 6ю страницу догнать не может, что коли Q привязан к своей сущности, значит сущности можно сложить в БД/файл и дёргать оттуда нужные, когда понадобятся, а вся работа по отсеву идёт именно с Q.
Иван FXS
вы продолжаете путать Q и сущности -- как мне донести до вас, что это не одно и то же?

тут собрались люди очевидно поумнее вас, и путаница вся только у вас в голове.
6ю страницу рассказываете про Q и сущность (из 3х параметров), которая к ней привязана.
Уже давно все всё поняли и решение было ещё на 1-2 страницах.
...
Рейтинг: 0 / 0
Как отбирать из потока 1/1000 лучших экземпляров?
    #40071102
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мож тогда лучше создать 2й топик, а этот продолжить? И новый (про Порог и Шаг) начать с необходиммой преамбулой (ну, мол, был 1й вариант - туда, в сад, а этот - сюда прошу)?
Ну и здесь указатель поставиьть: прямо пойдёшь ..., налево пойдёшь ...
Мне только кажется, что сложно с П и Ш ... Да, и нужно хотя бы в этом случае нормальное ТЗ написать, казалось бы, теперь уже возможно.

П.с Поскольку пишу из танка, то так и не понял, запрет ли писать в БД часть промежуточных значений Q или других параметров? или это обсуждаемо, а если запрет, надо так и сказать: не обсуждать, или что-то ещё... мало ли кому что тривиально, и что для него из этого следует.
...
Рейтинг: 0 / 0
Как отбирать из потока 1/1000 лучших экземпляров?
    #40071105
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бабушкин зайчик
коли Q привязан к своей сущности, значит сущности можно сложить в БД /файл и дёргать оттуда нужные, когда понадобятся, а вся работа по отсеву идёт именно с Q
вы настойчиво продолжаете агитировать меня за то, чтобы я все сущности складывал в БД, я правильно вас понимаю? Несмотря на то, что в задаче русским по белому написано
Иван FXS
Нужно отбирать из потока и сохранять на диске "самые лучшие" из сущностей
???

(Писать в БД миллионы записей, которые точно потом не понадобятся -- это великое программистское искусство!)
...
Рейтинг: 0 / 0
Как отбирать из потока 1/1000 лучших экземпляров?
    #40071107
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98
Мож тогда лучше создать 2й топик
вы модератор, у вас какие-то модераторские соображения, о которых я могу только догадываться ... но не стану. Я могу только констатировать, что у меня степень разумения задачи повысилась ... хотя и времени потрачено изрядно.
...
Рейтинг: 0 / 0
Как отбирать из потока 1/1000 лучших экземпляров?
    #40071108
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я предлагаю этот топик закрыть. Вроде все уже высказались. А выборки из бесконечных труб и хранение поднять
совершенно отдельной темой с другой формулировкой, если надо.
...
Рейтинг: 0 / 0
Как отбирать из потока 1/1000 лучших экземпляров?
    #40071110
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван FXS, нет, я не модер, я другой.
И как раз самое время, ИМХО, на фоне возросшего понимания задачи (своей же задачи, замечу), переформулировать задачу, устранив выявившиеся умолчания и взаимонепонимания.
...
Рейтинг: 0 / 0
Как отбирать из потока 1/1000 лучших экземпляров?
    #40071113
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98, я не понимаю, что значит "переформулировать задачу" ... разве что поднять из 4-й реплики в тело поста
Иван FXS
каждая сущность "большая", много больше, чем числовой параметр Q сам по себе, так что хранить их в памяти нельзя, можно только по очереди каждую оценивать и решать, сбрасывать её на диск или нет.

Наверное, мне стоило сразу сказать, что речь идет о методе Монте-Карло, так что то, что часть "не самых плохих" сущностей потеряется -- не критично
-- может быть, заменив "хранить" на "хранить/накапливать"...
...
Рейтинг: 0 / 0
Как отбирать из потока 1/1000 лучших экземпляров?
    #40071120
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван FXS, моё дело предложить. И ещё раз напомнить, что краткость не всегда естть сестра таланта. И снова напомнить, что следствия из умолчаний или неоднозначностей часто отличаются у разных людей, несмотря даже на некую, якобы строгую, терминологию. Банальность, а не все это понимают по умолчанию.
...
Рейтинг: 0 / 0
25 сообщений из 151, страница 6 из 7
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Как отбирать из потока 1/1000 лучших экземпляров?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]