Задача про ресурсы и процессы
Задача про ресурсы и процессы
Вообщем есть задача про ресурсы и процессы, никак не могу решить... не получается работать с массивами внутри циклов :( вроде если не в цикле - то всё отлично работает, как только делаю циклы, то начинаются проблемы с несовпадением данных и т.п.
Задача:
Есть 2 ресурса и 4 процесса. Каждый процесс должен определенное время попользоваться ресурсом. Одновременно процессы ресурсом пользоваться не могут и если процесс начал пользоваться - то делает это установленное время (оно неделимо). Но один процесс может пользоваться 2мя ресурсами одновременно.
Таким образом получается два 4-элементных массива соответствующие 2м ресурсам:
5,2,7,3 и 3,6,10,2
(первый процесс должен попользоваться 5 и 3 секунд 1-м и 2-м ресурсом соответственно, второй процесс 2 и 6 секунд, третий - 7 и 10...и т.д. думаю суть ясна)
Так вот нужно прогнать эти два массива и в результате получить время простоя одного из ресурсов, т.е. то время, когда другой ресурс будет задействован, а этот - нет.
Решение на бумаге такое:
Вложение:
Красным выделены заявленные в условии секунды, которые процессы должны попользоваться... а черным - разность между процессами... сколько еще осталось этому процессу пользоваться до того, как вступит новый. Т.е. если изначально было 5 и 3 секунд (время пользования ресурсами первым процессом). Вторым ресурсом он попользовался заявленные 3 секунды и им начал пользоваться второй процесс, а первым процессом 2 секунды всё еще пользуется первый процесс до того, как вступит второй. В итоге получается 2+2=4 секунды будет простаивать 1-й ресурс.
На бумаге-то оно всё вроде легко и просто, а в LabView запрограммировать не получается. Господа знатоки, помогите пожалуйста.
Задача:
Есть 2 ресурса и 4 процесса. Каждый процесс должен определенное время попользоваться ресурсом. Одновременно процессы ресурсом пользоваться не могут и если процесс начал пользоваться - то делает это установленное время (оно неделимо). Но один процесс может пользоваться 2мя ресурсами одновременно.
Таким образом получается два 4-элементных массива соответствующие 2м ресурсам:
5,2,7,3 и 3,6,10,2
(первый процесс должен попользоваться 5 и 3 секунд 1-м и 2-м ресурсом соответственно, второй процесс 2 и 6 секунд, третий - 7 и 10...и т.д. думаю суть ясна)
Так вот нужно прогнать эти два массива и в результате получить время простоя одного из ресурсов, т.е. то время, когда другой ресурс будет задействован, а этот - нет.
Решение на бумаге такое:
Вложение:
Красным выделены заявленные в условии секунды, которые процессы должны попользоваться... а черным - разность между процессами... сколько еще осталось этому процессу пользоваться до того, как вступит новый. Т.е. если изначально было 5 и 3 секунд (время пользования ресурсами первым процессом). Вторым ресурсом он попользовался заявленные 3 секунды и им начал пользоваться второй процесс, а первым процессом 2 секунды всё еще пользуется первый процесс до того, как вступит второй. В итоге получается 2+2=4 секунды будет простаивать 1-й ресурс.
На бумаге-то оно всё вроде легко и просто, а в LabView запрограммировать не получается. Господа знатоки, помогите пожалуйста.
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: Задача про ресурсы и процессы
А какие процессы? Тебе надо реализовать ещё и сами процессы или только рассчёт? Что должно происходить когда время истекает? Нужно всего лишь представить весь рассчёт на лицевой панели? Симулировать процессы? Какая вообще конечная задача?
Слишком мало информации
Слишком мало информации
Re: Задача про ресурсы и процессы
Нет, "процессы" и "ресурсы" - это абстрактные понятия, просто ими легче описать условие. На лицевой панели должно быть собственно два массива и высчитанное число - сколько будет простаивать "ресурс". Время тут тоже - просто числа, никакой привязки к реальному времени нет. Задача в том, чтобы из этих двух массивов путём вычитаний (как я показал на рисунке выше) найти требуемое число простоя одного из ресурсов.
Вот эта же задача, но время простоя находится путём сортировки массивов по убыванию и возрастанию. Но там формулу я вывел, она простая и на блок-диаграмме всё простенько, никаких циклов нет.
А вот, как мне третьим способом надо решить (что собственно, я и спрашиваю) - это не сортируя массивы, а в том порядке, в котором элементы в них есть - в нём и считать. И там без циклов никак...
Вот эта же задача, но время простоя находится путём сортировки массивов по убыванию и возрастанию. Но там формулу я вывел, она простая и на блок-диаграмме всё простенько, никаких циклов нет.
А вот, как мне третьим способом надо решить (что собственно, я и спрашиваю) - это не сортируя массивы, а в том порядке, в котором элементы в них есть - в нём и считать. И там без циклов никак...
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: Задача про ресурсы и процессы
Ну и как там дела? Что нибудь получается?
Я бы смог наверное сделать визуальный симулятор процессов и ресурсов с представленными условиями, но вот без симулятора как то трудновато представить задачу. Если в голове или на бумаге есть решение, то выложи, посмотрим, думаю спрограммировать будет нетрудно.
Я бы смог наверное сделать визуальный симулятор процессов и ресурсов с представленными условиями, но вот без симулятора как то трудновато представить задачу. Если в голове или на бумаге есть решение, то выложи, посмотрим, думаю спрограммировать будет нетрудно.
Re: Задача про ресурсы и процессы
В том и дело, что визуальная сторона мне по сути не нужна... мне нужны сами "внутренности", т.е. программа, высчитывающая число. На бумаге оно у меня всё легко получается, а в ЛабВью - нет. Вечером прийду - распишу всё наиподробнейшим образом!
Re: Задача про ресурсы и процессы
Есть два массива (возьмём те же) 5,2,7,3 и 3,6,10,2 - это якобы массивы времени, показывающие сколько секунд\часов\дней (не важно, это всё условности) каждый из четырёх процессов должен поюзать 2 ресурса (первый процесс должен попользоваться 5 и 3 секунд 1-м и 2-м ресурсом соответственно, второй процесс 2 и 6 секунд, третий - 7 и 10, четвертый - 3 и 2).
Начинаем высчитывать время простоя:
5-3=2 (т.е. еще 2 секунды 1-й процесс будет юзать 1-й ресурс, в то время как вторым ресурсом завладеет 2-й процесс со временем 6)
6-2=4 (еще 4 секунды 2-й процесс будет юзать 2-й ресурс, и он же завладеет 1-м ресурсом и будет юзать 2 секунды)
4-2=2 (всё еще 2 секунды 2-й процесс будет юзать 2-й ресурс, он же поюзал 1-й ресурс и передает его 3-му процессу со временем 7)
7-2=5 (еще 5 сек 3-й процесс юзает 1-й ресурс, а 2-й ресурс передается дальше ему же на 10 сек)
10-5=5 (еще 5 сек вторым ресурсом пользуется 3-й процесс, а 1-й ресурс передается последнему 4-му процессу на 3 секунды)
5-3=2 (первый ресурс больше никому не нужен а осталось еще 2 секунды использования 3-м процессом плюс, прописанные в массиве 2 секунды - 4му процессу)
Таким образом 1-й ресурс будет стоять, а второй использоваться 2+2=4 секунды.
Этот рассчет мне и надо реализовать циклом... Если что-то не понятно, спрашивайте.
Начинаем высчитывать время простоя:
5-3=2 (т.е. еще 2 секунды 1-й процесс будет юзать 1-й ресурс, в то время как вторым ресурсом завладеет 2-й процесс со временем 6)
6-2=4 (еще 4 секунды 2-й процесс будет юзать 2-й ресурс, и он же завладеет 1-м ресурсом и будет юзать 2 секунды)
4-2=2 (всё еще 2 секунды 2-й процесс будет юзать 2-й ресурс, он же поюзал 1-й ресурс и передает его 3-му процессу со временем 7)
7-2=5 (еще 5 сек 3-й процесс юзает 1-й ресурс, а 2-й ресурс передается дальше ему же на 10 сек)
10-5=5 (еще 5 сек вторым ресурсом пользуется 3-й процесс, а 1-й ресурс передается последнему 4-му процессу на 3 секунды)
5-3=2 (первый ресурс больше никому не нужен а осталось еще 2 секунды использования 3-м процессом плюс, прописанные в массиве 2 секунды - 4му процессу)
Таким образом 1-й ресурс будет стоять, а второй использоваться 2+2=4 секунды.
Этот рассчет мне и надо реализовать циклом... Если что-то не понятно, спрашивайте.
-
Forward
- professional
- Сообщения: 337
- Зарегистрирован: 03 мар 2008, 12:41
- Награды: 3
- Версия LabVIEW: 2010
- Откуда: Кишинев
- Контактная информация:
Re: Задача про ресурсы и процессы
Может я что-то упустил из вышеизложенного алгоритма, но если тебе нужно только конечное число - то можно просто вычислить разность сумм элементов массива. Например вот так:
Или я что-то не понял?
Или я что-то не понял?
Re: Задача про ресурсы и процессы
В том-то и дело, что циклом нужно и именно как я описал. Разностью сумм - это я уже делал...
-
Forward
- professional
- Сообщения: 337
- Зарегистрирован: 03 мар 2008, 12:41
- Награды: 3
- Версия LabVIEW: 2010
- Откуда: Кишинев
- Контактная информация:
Re: Задача про ресурсы и процессы
Я никогда не был в Германии и по немецки нихренштейн, но тут я сразу всмопнил немецкое выражение про какую-то там яйцекладующую свинью. Зачем делать в коде макароны если нужно только конечное число?Mig29 писал(а):В том-то и дело, что циклом нужно и именно как я описал. Разностью сумм - это я уже делал...
-
Forward
- professional
- Сообщения: 337
- Зарегистрирован: 03 мар 2008, 12:41
- Награды: 3
- Версия LabVIEW: 2010
- Откуда: Кишинев
- Контактная информация:
Re: Задача про ресурсы и процессы
Ну а если принципиально хочется соорудить еще один цикл или нужно иметь доступ к каждому шагу вышеописанного алгоритма, то можешь сделать так, или накуралесить более пугающий код.
- Вложения
-
- resouce2.vi
- для 8.0
- (18.28 КБ) 150 скачиваний
Последний раз редактировалось Forward 20 ноя 2008, 15:56, всего редактировалось 1 раз.
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: Задача про ресурсы и процессы
Сори что не в тему.Forward писал(а):Я никогда не был в Германии и по немецки нихренштейн, но тут я сразу всмопнил немецкое выражение про какую-то там яйцекладующую свинью. Зачем делать в коде макароны если нужно только конечное число?Mig29 писал(а):В том-то и дело, что циклом нужно и именно как я описал. Разностью сумм - это я уже делал...
Это называлось Eierlegende Wollmilchsau, что в переводе означает яйцекладущая шёрсто-молочная свинья.
Re: Задача про ресурсы и процессы
Офигеть! Forward спасибо огромное! Я и не думал, что там настолько всё запутано будет... думал, что максимум - цикл в цикле!
-
Forward
- professional
- Сообщения: 337
- Зарегистрирован: 03 мар 2008, 12:41
- Награды: 3
- Версия LabVIEW: 2010
- Откуда: Кишинев
- Контактная информация:
Re: Задача про ресурсы и процессы
Ну там и получается цикл в цикле.
Проще - это разность сумм элементов массива. А если ты хочешь один в один реализовать свой алгоритм - то это уже макароны. Хотя наверняка можно и проще. Это первое, что пришло мне в голову, попробуй оптимизировать.
Проще - это разность сумм элементов массива. А если ты хочешь один в один реализовать свой алгоритм - то это уже макароны. Хотя наверняка можно и проще. Это первое, что пришло мне в голову, попробуй оптимизировать.
Re: Задача про ресурсы и процессы
Кстати, ошибочка какая-то имеется в алгоритме :-|
Попробуй значения 10,8,6,5 и 7,3,6,4... должно получаться 9, а выводит 5...
Попробуй значения 10,8,6,5 и 7,3,6,4... должно получаться 9, а выводит 5...
-
Forward
- professional
- Сообщения: 337
- Зарегистрирован: 03 мар 2008, 12:41
- Награды: 3
- Версия LabVIEW: 2010
- Откуда: Кишинев
- Контактная информация:
Re: Задача про ресурсы и процессы
Ну да.. я там закинул ненужный инкремент:
Так а чем тебя не устраивает вычислять разность сумм элементов массива?
Так а чем тебя не устраивает вычислять разность сумм элементов массива?
- Вложения
-
- r2.1.png (6.11 КБ) 7153 просмотра
-
- resource2.1.vi
- (19.78 КБ) 147 скачиваний