0 / 0 / 0
Регистрация: 15.01.2012
Сообщений: 8
|
|
1 | |
Смоделировать процесс обработки на станке 100 деталей. Подсчитать число заполненных тележек и число потерянных деталей15.01.2012, 01:21. Показов 2567. Ответов 13
Метки нет (Все метки)
Условие задачи:
С интервалом времени 5 ± 2мин. детали поштучно поступают к станку на обработку и до начала обработки хранятся на рабочем столе, который вмещает 3 детали. Если свободных мест на столе нет, вновь поступающие детали укладываются в тележку, которая вмещает 5 деталей, если тележка заполняется до нормы, ее увозят к другим станкам, а на ее место через 8 ± 3мин. ставят новую тележку. Если во время отсутствия тележки поступает очередная деталь и не находит на столе мест, она считается потерянной. Рабочий берет детали на обработку в первую очередь из тележки, а если она пуста – со стола. Обработка деталей производится за 10 ± 5мин. Смоделировать процесс обработки на станке 100 деталей. Подсчитать число заполненных тележек и число потерянных деталей. В Windows Forms делал на C#. Не могу понять как описать часть про тележку и 8 ± 3мин. Создал 3 таймера: 1ый для 5 ± 2мин - поступление детали, работает пока не будет 100 деталей запущено. 2ой для 10 ± 5мин - обработка детали на станке, timer.stop() когда количество деталей =100 и стол пуст и телега пуста. а вот с 3им для 8 ± 3мин. - проблема. Не могу понять, как описать условие - если интервал таймера закончился, то таймер выключить. Так как потом мы его еще будем включать. Помогите пожалуйста.
0
|
15.01.2012, 01:21 | |
Ответы с готовыми решениями:
13
Смоделировать процесс обработки на станке 100 деталей Смоделировать процесс обработки на станке 100 деталей Смоделировать процесс обработки на станке 100 деталей Смоделировать процесс обработки деталей на станке |
Заблокирован
|
|
15.01.2012, 06:38 | 2 |
Поставьте еще вспомогательный таймер, который в третьем запускается на 6 минут(у него есть счетчик, по достижению максимума счетчика он самоликвидируется).
Хотя, может быть это все решается проще, и вам нужно этот вопрос рассмотреть с другой стороны.
0
|
0 / 0 / 0
Регистрация: 15.01.2012
Сообщений: 8
|
||||||
15.01.2012, 10:55 [ТС] | 3 | |||||
Почему на 6 минут?
А помочь с синтаксисом кто-нибудь может? Именно написать условие. примерно в таком ключе:
0
|
Заблокирован
|
|
15.01.2012, 11:03 | 4 |
Во-первых покажи, что уже у тебя есть. Во-вторых, из условия задачи, как мне думается, необходимо интервалы твоих таймеров рандомно генерировать после каждого их включения в заданных пределах. Ну например, для первого от трех до семи минут.
0
|
0 / 0 / 0
Регистрация: 15.01.2012
Сообщений: 8
|
||||||
15.01.2012, 11:44 [ТС] | 5 | |||||
0
|
17793 / 12944 / 3381
Регистрация: 17.09.2011
Сообщений: 21,226
|
|
15.01.2012, 11:53 | 6 |
Вот это хорошая задачка, люблю такие.
Я бы реализовал паттерн Consumer/Producer через три простых потока, где каждый поток выполняет свою задачу, а потом засыпает на необходимый период времени. Рабочий <- Тележка <- Станок (-> Рабочий, если тележка пуста). Архитектура проста: 1. Поток "Станок". Producer. Производит деталь, пытается положить в буфер-стол. Засыпает на 5 +/- 2. 2. Поток "Тележка". Producer/Consumer. Cгребает со стола детали, пока их не наберется пять штук. Как набралось - уезжает (вот тут не совсем понятно: что происходит с деталями в ней? Рабочий их может брать после отъезда?). Поток засыпает на 8 +/- 3, пока тележка "ездит". 3. Поток "Рабочий". Consumer. Пытается взять деталь из тележки. Если детали нет - пытается взять со стола. Если и на столе нет - наверное снова пытается в тележке взять. Как взял деталь - поток засыпает на 10 +/- 5, пока рабочий пилит деталь. Надо только добавить синхронизацию между потоками (легко делается в .NET4 через BlockingCollection). Такой подход, на мой взгляд, довольно гибкий для последующего расширения системы: если надо добавить еще одного рабочего или станок, например, то просо запускается дополнительный поток.
0
|
0 / 0 / 0
Регистрация: 15.01.2012
Сообщений: 8
|
|
15.01.2012, 12:05 [ТС] | 7 |
Честно говоря с потоками я не работал, если сможете написать код, буду благодарен.
А насчет задачи сейчас разъясню: Тележка не может сгребать со стола. В тележку попадают детали только если станок сейчас занят деталью, а на столе нет места, т.е. >=3. Когда приходит деталь и видит что все занято - станок работает, стол полный, и в телеге 5 деталей - тут все и начинаетя: тележка сразу же уезжает. количество телег+1. эта деталь сразу идет в потери(+1). На 8+-3 минут включается таймер - тележка отсутствует и через это время возвращается пустая. детали которые были в телеге или пермаментно плюсуются к обработанным или к потерям, но точно не попадают на станок для обработки.(сделать это не сложно) Если детали нет - пытается взять со стола. Если и на столе нет. - Такой ситуации не будет, я уже проверял)) время обработки детали больше, потому детали будут скапливаться, изза чего и будут потери(около 20%) В любом случае, даже зная ваш алгоритм, я не могу его описать. С синтаксисом еще не очень подружился.
0
|
0 / 0 / 0
Регистрация: 15.01.2012
Сообщений: 8
|
|
15.01.2012, 14:57 [ТС] | 8 |
Кто-нибудь может предложить конкретное решение проблемы?
0
|
Заблокирован
|
|
15.01.2012, 15:15 | 9 |
Проблема в том, что у тебя не правильно всё от начала и до конца. Во-первый интервал таймера задается в миллисекундах, а не в минутах, как у тебя. Во-вторых, 5 ± 2мин - это не 3 и 7. Это любое значение от (3*60*1000) до (7*60*1000). Ну и в третьих, тебе не помощь нужна, а полностью написать прогу за тебя. У меня, например, на это нет времени и желания. Обращайся к фрилансерам.
0
|
0 / 0 / 0
Регистрация: 15.01.2012
Сообщений: 8
|
|
15.01.2012, 15:51 [ТС] | 10 |
мм... 1ое. милисекунды я могу перевести в минуты.
2ое. даже если и так, это тоже можно переделать и довольно просто. 3ее. Я просил помочь с синтаксической реализацией словесного алгоритма, так как тут люди занимаются C# профессионально, я надеялся что мне подскажут синтаксическую конструкцию. Пока что была полезной была только идея с потоками, но к сожалению у меня нет времени чтобы их изучить.
0
|
30 / 30 / 4
Регистрация: 14.05.2010
Сообщений: 57
|
|
15.01.2012, 16:14 | 11 |
Не по теме: Все легко, да разбираться лень. Вам тут уже идей подкинули самых разных, раскручивайте их. Из чужого кода вы лишь увидите принцип, и так же быстро его забудете. А вообще с таким настроем вам в раздел фриланса. За скромную сумму там как раз оказывают "помощь с синтаксической реализацией словесного алгоритма".
0
|
0 / 0 / 0
Регистрация: 15.01.2012
Сообщений: 8
|
|
15.01.2012, 17:00 [ТС] | 12 |
Эээ, я попросил синтаксис 1 строчки:
if (timer.Interval закончился) и зачем мне платить за 1 строчку? Сейчас вообще пишу уже без таймеров, но неужели никто не сможет ответить на такой простой вопрос о возможностях элемента timer? Если не знаете про таймер, зачем тогда писать здесь ответы? И кстати для 2ого пункта нужны только целые значения минут, т.е. 3,4,5,6,7. А настрой у меня любознательный))) а мне и нужен принцип, проблем со словесными алгоритмами у меня никогда не было.
0
|
Заблокирован
|
|
15.01.2012, 20:15 | 13 |
когда он закончился, то в его коде нужно прописать что делать.(в Timer1.Tick)
timer.Interval - целое число в милисекундах. то, что вы написали, примерно так выглядит: if (6000) {bla-bla-bla} Это о том что в винформсах или в тредингах(уточните)? 1. системе только намекните, что вы перевели, а то не поймет. 2. в чем вопрос тогда? 3. ни у кого нет времени чтоб попусту тратить его. Добавлено через 12 минут Таймер
0
|
0 / 0 / 0
Регистрация: 15.01.2012
Сообщений: 8
|
||||||
15.01.2012, 20:38 [ТС] | 14 | |||||
Вот программа без таймеров, как мне сделать 2 цикла фор и вайл параллельными? вайл если что можно заменить фором, я просто пытался без параллельности но видимо никак. Я не знаю нужно ли тут параллельность потоков или параллельность процессов, и как это все описывается. А что касается таймеров я уже понял ошибку, щас вот рассматриваю, может вернусь к варианту проги с ними. А скажите без потоков и параллелизма эту задачу, одними таймерами можно решить?
0
|
15.01.2012, 20:38 | |
15.01.2012, 20:38 | |
Помогаю со студенческими работами здесь
14
Сколько нужно взять деталей, чтобы наивероятнейшее число годных деталей было равно 50? Из партии в 100 деталей, содержащей 5 % брака, берут для проверки 5 деталей На станке-автомате изготовили 90 деталей Определите, какое наименьшее число деталей Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи | |||||
Книги и учебные ресурсы по C#
InfoMaster 08.01.2025
Базовые учебники и руководства
Одной из лучших книг для начинающих является "C# 10 и . NET 6 для начинающих" Эндрю Троелсена и Филиппа Джепикса . Книга последовательно раскрывает основные концепции. . .
|
Что такое NullReferenceException и как исправить?
InfoMaster 08.01.2025
NullReferenceException - одно из самых распространенных исключений, с которым сталкиваются разработчики на C#. Это исключение возникает при попытке обратиться к членам объекта (методам, свойствам или. . .
|
Что такое Null Pointer Exception (NPE) и как это исправить?
InfoMaster 08.01.2025
Null Pointer Exception (NPE) - это одно из самых распространенных исключений в Java, которое возникает при попытке использовать ссылку на объект, значение которой равно null. Это исключение относится. . .
|
Русский язык в консоли C++
InfoMaster 08.01.2025
При разработке программ на C++ одной из частых проблем, с которой сталкиваются русскоязычные программисты, является корректное отображение кириллицы в консольных приложениях. Эта проблема особенно. . .
|
Telegram бот на C#
InfoMaster 08.01.2025
Разработка ботов для Telegram стала неотъемлемой частью современной экосистемы мессенджеров. C# предоставляет мощный и удобный инструментарий для создания разнообразных ботов, от простых. . .
|
Использование GraphQL в Go (Golang)
InfoMaster 08.01.2025
Go (Golang) является одним из наиболее популярных языков программирования, используемых для создания высокопроизводительных серверных приложений. Его архитектурные особенности и встроенные. . .
|
Что лучше использовать при создании класса в Java: сеттеры или конструктор?
Alexander-7 08.01.2025
Вопрос подробнее:
На вопрос: «Когда одновременно создаются конструктор и сеттеры в классе – это нормально?» куратор уточнил: «Ваш класс может вообще не иметь сеттеров, а только конструктор и геттеры. . .
|
Как работать с GraphQL на TypeScript
InfoMaster 08.01.2025
Введение в GraphQL и TypeScript
В современной разработке веб-приложений GraphQL стал мощным инструментом для создания гибких и эффективных API. В сочетании с TypeScript, эта технология. . .
|
Счётчик на базе сумматоров + регистров и генератора сигналов согласования.
Hrethgir 07.01.2025
Создан с целью проверки скорости асинхронной логики: ранее описанного сумматора и предополагаемых fast регистров. Регистры созданы на базе ранее описанного, предполагаемого fast триггера. То-есть. . .
|
Как перейти с Options API на Composition API в Vue.js
BasicMan 06.01.2025
Почему переход на Composition API актуален
В мире современной веб-разработки фреймворк Vue. js продолжает эволюционировать, предлагая разработчикам все более совершенные инструменты для создания. . .
|
Архитектура современных процессоров
inter-admin 06.01.2025
Процессор (центральный процессор, ЦП) является основным вычислительным устройством компьютера, которое выполняет обработку данных и управляет работой всех остальных компонентов системы. Архитектура. . .
|
История создания реляционной модели баз данных, правила Кодда
Programming 06.01.2025
Предпосылки создания реляционной модели
В конце 1960-х годов компьютерная индустрия столкнулась с серьезными проблемами в области управления данными. Существовавшие на тот момент модели данных -. . .
|