|
Заблокирован
|
|
Выполнение оптимизации на VB6.0 по раскрою08.09.2015, 21:44. Показов 8879. Ответов 34
Метки нет (Все метки)
Здравствуйте! Прошу помощи.
Научите, пожалуйста, бегло решать оптимизационные задачи на раскрой материалов с помощью Visual Basic 6.0 Условия. На рынке имеется неограниченное количество досок, длиной 350 см. Нам нужно подсчитать оптимальную закупочную партию для выполнения заказа, чтобы отходы, оставшиеся обрезки — были минимальные. По принципу одного дня: купили, распилили и продали. Нет склада, где хранить обрезки — поэтому все остатки вывозятся на свалку, как мусор. По заказу клиента нужны следующие заготовки: 1) длина заготовки № 1 = 185 см, количество — 127 штук; 2) длина заготовки № 2 = 165 см, количество — 178 штук; 3) длина заготовки № 3 = 143 см, количество — 335 штук; 4) длина заготовки № 4 = 87 см, количество — 526 штуки; 5) длина заготовки № 5 = 26 см, количество — 958 штуки.
0
|
|
| 08.09.2015, 21:44 | |
|
Ответы с готовыми решениями:
34
Перебор по раскрою квадрата в Visual Basic 6.0 Резак для бумаги применительно к раскрою стеклотекстолита Windows 2000 Rus VB6, VB6 Resource Editor отсутствует |
|
Заблокирован
|
|
| 09.09.2015, 00:55 [ТС] | |
|
Вроде бы "детская задача" для компьютера. Искал более 3-х часов аналог кода на любом языке программирования. Тщетно. Пытался сделать упор на ведущие языки. Впустую. Немного призадумался: чему же учат в вузах? Альтернативность сейчас очень актуальная тема.
Google: программа С++ для оптимального раскроя партии досок (труб) Google: программа Java для оптимального раскроя партии досок (труб) Трудностей не боюсь. Скачиваю любые программы. Бесполезно. Например: снимок ниже. Cutting Line version 2.49. 23 July 2007 ~ 2500 Kb download http://www.cuttinghome.com/Downloade.html
0
|
|
|
Заблокирован
|
|
| 09.09.2015, 03:18 [ТС] | |
|
От досады решил посчитать вручную на калькуляторе, думаю: за 15 минут управлюсь. Засек время.
Решение: 127 досок l=350: 127 * [350 - (185 + 165)] = 0 (178 – 127)= 51 доска l=350: 51 * [350 – (165 + 2*87)] = 561 335/2 = 162(1) доски l=350: 162 * [350 – (2*143 + 2*26)] = 1944 (526 – 2*51)/3 = 141(1) доска l=350: 141 * [350 – (3*87 + 3*26)] = 1551 (958 – 2*162 – 3*141)/13 = 211/13 = 16(3) досок l=350: 16 * [350 – (13*26)] = 192 Покрываем остатки: 1 доска l=350: 1 * [350 – (1*143 + 1*87 + 3*26)]= 42 Потребуется досок l=350: 127 + 51 + 162 + 141 + 16 + 1 = 498 штук В том числе пойдут на отходы: (0 + 561 + 1944 + 1551 + 192 + 42)/350 = 4290/350 = 12,26 штук Процент отходов: 12,26/498 * 100% = 2,46 % Считал чуть меньше часа.
0
|
|
|
es geht mir gut
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
|
|
| 09.09.2015, 08:56 | |
|
Общая длина заготовок: 171440 метров
171440/350 = 489.82 - это минимально необходимое количество досок А у Вас "Потребуется досок = 498 штук" Если вычесть отходы 498-12,26 = 487,74 Что-то не сходится. Или я неправильно понял Ваши расчёты?
1
|
|
|
|
||
| 09.09.2015, 09:18 | ||
Сообщение было отмечено Willi2001 как решение
РешениеПрограмму написал Никита Однороб Результат выводится в файл в папку с программой ( UTF-8 кодировка) и на экран. Исходник на PureBasic, сама программа и результат работы можно скачать.
0
|
||
|
Заблокирован
|
|
| 09.09.2015, 11:28 [ТС] | |
|
Pro_grammer! SoftIce! Огромное спасибо.
Сейчас скачаю дистрибутив PureBasic. Попытался перепроверить свои рассуждения и подсчёты. А) По условию: 1) 185 * 127 = 23495 см 2) 165 * 178 = 29370 см 3) 143 * 335 = 47905 см 4) 87 * 526 = 45762 см 5) 26 * 958 = 24908 см (23495 + 29370 + 47905 + 45762 + 24908)/350 = 171440/350 = 489,83 штуки 498 – 489,83 = 8,17 штуки 489,83/498 * 100% = 98,36 % — как КПД Процент брака: 100% – 98,36% = 1,64 % (?) — возникает противоречие: 1,64 ≠ 2,46 — см. выше! Б) Проверка досок балансовым способом: 1) l=185: 127 * 185 = 23495 см 2) l=165: 127 * 165 + 51 * 165 = 178 * 165 = 29370 см 3) l=143: 162 * 2 * 143 + 1 * 143 = 335 * 143 = 47905 см 4) l=87: 51 * 2 * 87 + 141 * 3 * 87 + 1 * 87 = 526 * 87 = 45762 см 5) l=26: 162 * 2 * 26 + 141 * 3 * 26 + 16 * 13 * 26 + 3 * 26 = 958 * 26 = 24908 см Итого как НЕТТО: 23495 + 29370 + 47905 + 45762 + 24908 = 171440 см Отходы: 0 + 561 + 1944 + 1551 + 192 + 42 = 4290 см Итого как БРУТТО: 171440 + 4290 = 175730 см Удельный вес отходов по БРУТТО: 4290/175730 * 100 = 2,44 % Переводим в общее количество досок при закупке: 175730/350 = 175730/350 = 502,09 (!?) штуки Здóрово!! Полный… "крах идеи предпринимательства"! Погорели! Придётся покупать 503 доски. Удельный вес отходов по ФАКТУ: (4290 + 350)/(350 * 503) * 100 = 2,64 % — возможно ошибаюсь. Пояснение. Путаюсь в русском языке. Как писать "штук" или "штуки"? Наверно надо по аналогии с килограммами: При смешанном числе — 12,5 килограмма. При целом числе — 12 килограммов. Прошу объяснить правописание "штук(и)" тех, кто силён в грамматике.
0
|
|
|
Заблокирован
|
|||||||||||
| 09.09.2015, 21:56 [ТС] | |||||||||||
|
Всем, добрый вечер!
locm, спасибо за Русификатор для PureBasic 5.31! Русификация среды программирования PureBasic Ребята, давайте попробуем переделать авторскую программу Никита Однороба для VB6. По-моему, он справится! Пока выкладываю все наработки по проблеме. Программа Никиты Однороба для PureBasic (не вижу кода PureBasic в заголовке) Кликните здесь для просмотра всего текста
Данные Pro_grammer по решению задачи в программе, сокращениями. Подсчитываю и корректирую бегло в уме, возможны ошибки! Кликните здесь для просмотра всего текста
На картинке запуск программы Никиты на моём ПК. Скачал демо-PureBasic5.31.
0
|
|||||||||||
|
Заблокирован
|
||||||||
| 10.09.2015, 03:16 [ТС] | ||||||||
|
Внёс исправления в "Данные Pro_grammer по решению…" Кликните здесь для просмотра всего текста
Добавлено через 4 часа 37 минут Кликните здесь для просмотра всего текста
335/2 = 167(1) доски l=350: 167 * [350 – (2*143 + 2*26)] = 2004 см
(526 – 2*51)/3 = 141(1) доска l=350: 141 * [350 – (3*87 + 3*26)] = 1551 см (958 – 2*167 – 3*141)/13 = 201/13 = 15(6) досок l=350: 15 * [350 – (13*26)] = 180 см Покрываем остатки: 1 доска l=350: 1 * [350 – (1*143 + 1*87 + 4*26)]= 16 см И ещё необходима доска, т. к. в остатке у "26 см" было 6 штук, а пока покрыли 4 штуки. 1 доска l=350: 1 * [350 – (2 * 26)] = 298 см Потребуется досок l=350: 127 + 51 + 167 + 141 + 15 + 1 + 1 = 503 штуки В том числе пойдут на отходы: (0 + 561 + 2004 + 1551 + 180 + 16 + 298)/350 = 4610/350 = 13,17 штук Процент отходов: 13,17/503 * 100% = 2,62 % Проверка: КПД = 171440/(503 * 350) = 171440/176050 = 0,9738 или 97,38 % Совпадает: 2,62% + 97,38% = 100,00 % Да, плохой у меня получился результат.
0
|
||||||||
|
es geht mir gut
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
|
|
| 10.09.2015, 11:36 | |
Сообщение было отмечено Willi2001 как решение
Решение
Посмотрите такой вариант (пока еще "сырой").
0
|
|
|
Заблокирован
|
||
| 10.09.2015, 11:57 [ТС] | ||
|
Информация в Интернете крайне скудная. Выбирать не приходится. Прошу тех, кто имеет иное мнение указать конкретные ссылки. Встретил только как аналог, где приводится вариант расчётов через Excel, слишком муторно. Как всё упростить и показать напрямую через Visual Basic 6.0? Какой будет код? Курсовая работа: Решение экономических задач с помощью VBA http://ref.by/refs/67/15203/1.html Кликните здесь для просмотра всего текста
5) Задание на нахождение оптимального раскроя
Для построения математической модели в программе производится перебор всевозможных вариантов раскроя рулона стандартной длины на рулоны требуемой для этого в программе используются следующие переменные: i1,i2,i3,i4 – переменные циклов a1,a2,a3,a4 – переменные которым присваиваются значения заказанных длин рулонов. t – переменная которой ф-ция Floor возвращает наибольшее целое число, не превышающее данное. M – минимум среди заказанных длин 2.3.6 Задание на нахождение оптимального раскроя Составляем таблицу, в которой будут приведены остатки от раскроя на заказ при различных вариантах раскроя. Например, по условию в соответствии с вариантом стандартная длина раскроя равна 28 метров, т.е. первый вариант раскроя будет составлять 0 рулон длиной 4 м, 0 рулонов длиной 6м и 4 рулона длиной 9 м, рулонов длиной 11 м. не будет, что в сумме даст 27, следовательно: отходы будут составлять 1 метр. Второй вариант, когда 1 рулон по 6 м и два по 11 м, в этом случае остатков не будет и т.д. Всего получается 19 вариантов раскроя. В программе это будет выглядеть таким образом: l = 28 a1 = 4: a2 = 6 a3 = 9: a4 = 11 r = 4 m = Application.Min(a1, a2, a3, a4) t = Application.Floor(l / m, 1) For i1 = 0 To t For i2 = 0 To t For i3 = 0 To t For i4 = 0 To t s = 28 - a1 * i1 - a2 * i2 - a3 * i3 - a4 * i4 If s >= 0 And s < m Then Cells(r, 1).Value = r - 3 Cells(r, 2).Value = i1 Cells(r, 3).Value = i2 Cells(r, 4).Value = i3 Cells(r, 5).Value = i4 Cells(r, 6).Value = s r = r + 1 End If Next i4 Next i3 Next i2 Next i1 На листе это будет выглядеть так: | Длина рулонов на заказ | |Х |4 |6 |9 |11|Х | |1 |0 |0 |3 |0 |1 | |2 |0 |1 |0 |2 |0 | |3 |0 |1 |1 |1 |2 | |4 |0 |3 |1 |0 |1 | |5 |1 |0 |0 |2 |2 | |6 |1 |1 |2 |0 |0 | |7 |1 |2 |0 |1 |1 | |8 |1 |2 |1 |0 |3 | |9 |1 |4 |0 |0 |0 | |10 |2 |0 |1 |1 |0 | |11 |2 |0 |2 |0 |2 | |12 |2 |1 |0 |1 |3 | |13 |2 |3 |0 |0 |2 | |14 |3 |1 |1 |0 |1 | |15 |4 |0 |0 |1 |1 | |16 |4 |0 |1 |0 |3 | |17 |4 |2 |0 |0 |0 | |18 |5 |1 |0 |0 |2 | |19 |7 |0 |0 |0 |0 | Пусть Xj – кол-во стандартных рулонов, разрезанных по варианту j, где j[1..19]. Ограничения, налагаемые на переменные Xj, связаны с требованием обеспечить изготовление заказанного кол-ва нестандартных рулонов. Ф-ция цели учитывает суммарные отходы, получаемые при выполнении заказа. Таким образом имеем следующую мат. модель: Минимизировать: Z=x1+2x3+x4+2x5+x7+3x8+2x11+2x12+2x13+x1 4+x15+3x16+ +2x18 + 4(x5+x6+x7+x8+x9+2x10+2x11+2x12+2x13+3x1 4+4x15+4x16+4x17+5ч18+7x19- 220)+ 6(...-210)+9(...-350)+ +11(...-380) Отведем диапазон ячеек (i4:i22) под переменные . Введем в диапазон ячеек (j3:m3) левые части ограничений, определенные слежующими формулами: =СУММПРОИЗВ($I$4:$I$22;B4:B22) =СУММПРОИЗВ($I$4:$I$22;c4:c22) =СУММПРОИЗВ($I$4:$I$22;d4:d22) =СУММПРОИЗВ($I$4:$I$22;e4:e22) В ячейку N4 введем ф-цию цели: =СУММПРОИЗВ($I$4:$I$22;F4:F22)+B3*(СУММП РОИЗВ($I$4:$I$22;B4:B22)- J3)+C3*(СУММПРОИЗВ($I$4:$I$22;C4:C22)-K3)+D3*(СУММПРОИЗВ($I$4:$I$22 4 22)-L3)+E3*(СУММПРОИЗВ($I$4:$I$22;E4:E22)-M3) где в ячейки B3:E3 введены длины, а в ячейки J3:M3 – кол-ва заказанных рулонов Выберем команду сервис – Поиск решения — заполним открывшееся диалоговое окно Поиск решения (Solver): - Установим целевую ячейку – N4 - Изменяя ячейки I4:I22 - Ограничения: $I$4:$I$22=целое $I$4:$I$22>=0 $j$4:$m$4>=$j$3:$m$3 - Функция = минимизация |Количество рулонов| |220|210|35|38|Отходы| | ххх|ххх|0 |0 | ххххххх | |220|210|35|38|49,99996| | ххх |ххх|0 |0 | ххххххх | Примечание. Willi2001 бегло вносил корректуру, поскольку были сильные искажения текста из-за форматирования.
0
|
||
|
Заблокирован
|
|
| 10.09.2015, 12:47 [ТС] | |
|
SoftIce, спасибо! Отлично!
Как можно посмотреть сам код программы? Открыл через Notepad: File.exe — ничего не понятно. Если не трудно напишите, пожалуйста, как можно увидеть саму программу на Visual Basic 6.0? И ещё: как можно попросить VB6.0? чтобы иногда "он писал как бы короче", например очень много повторов: 1. 165 185 Отходы 0 2. 165 185 Отходы 0 3. 165 185 Отходы 0 4. 165 185 Отходы 0 5. 165 185 Отходы 0 6. … 127. 165 185 Отходы 0 Он сможет просто указать одной строкой, для удобного нашего восприятия: 1. 165 185 Раз: 127 Отходы 0
0
|
|
|
es geht mir gut
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
|
|
| 10.09.2015, 13:09 | |
Сообщение было отмечено Willi2001 как решение
Решение
0
|
|
|
Заблокирован
|
|
| 10.09.2015, 20:51 [ТС] | |
|
Catstail! Если вернуться с Луны на Землю, то реальность печальная.
Форум C# для начинающих всегда многолюдный — жизнь бьёт ключом. Появляется простая задача Оптимальный линейный раскрой Кликните здесь для просмотра всего текста
Требуется
1. Решить данную задачу оптимальным алгоритмом. Если можно на простом примере объяснить оптимальный алгоритм. Только такие наборы бывают посложнее и побольше 400мм 20шт. 1200мм 12шт. Все надо разместить данные отрезки на отрезкаъ длинной не более 6000мм. Расстояние между отрезками = 5мм. Все участники разом онемели, будто Автор (hulk45) попросил что-то непотребное. Больше года длилось молчание. Наконец, совсем недавно, другой участник предложил, перечислив все известные алгоритмы… решение в MS Excel. И опять наступило полное забвение.
0
|
|
|
es geht mir gut
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
|
|
| 10.09.2015, 21:00 | |
|
Это тебе не яйца рисовать, тут головой думать надо
1
|
|
|
es geht mir gut
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
|
|
| 10.09.2015, 21:07 | |
|
1
|
|
|
Заблокирован
|
||
| 10.09.2015, 22:42 [ТС] | ||
|
Чуть позже покажу работу программ Калашникова Александра — #2 (permalink), скачал и другие его поделки. Если деликатно, то вызывают недоумение. Для новичков пояснение: каждый раз мой Антивирус при встрече с файлами "exe" несётся к ним со всех ног, стараясь тут же уничтожить, как вредителя. Приходится давать ему подписку на восстановление "убитого файла", тогда он выпускает из Карантина. Вчера сцепился с целой бандой IObit. Бились на смерть около двух часов, проникли "под маркой установщика". Мы победили. Антивирус предупреждал — нельзя. Не придал значения.
0
|
||
|
Заблокирован
|
||
| 11.09.2015, 08:46 [ТС] | ||
|
Программа А. Калашникова FastLinearCutting имеет объём 468 Кб — всего один исполняемый файл. Кликните здесь для просмотра всего текста
Быстрый линейный раскрой http://freesoft.ru/bystryy_lineynyy_raskroy
скачать FC_demo_26.msi - Быстрый линейный раскрой http://freesoft.ru/bystryy_lin... si/getpage Быстрый линейный раскрой для Windows Автор: Калашников Александр Лицензия: Демонстрационная версия Язык: Русский Дата: 2004-03-16 / 2015-04-23
0
|
||
| 11.09.2015, 10:44 [ТС] | ||
|
Не по теме:
Если в душе живёт романтический рыцарь, жаждущий приключений — то легко и с лихвой найдёте их по этой ссылке Кликните здесь для просмотра всего текста
Эта Portable-сборка была создана из дистрибутива "PureBasic 5.11 Windows x86". Она не оставляет следов работы в системе и может работать со съемных носителей информации, например внешнего жесткого диска или флешки.
Из дистрибутива ничего не вырезано. Были добавлены наиболее часто используемые библиотеки функций http://soft376.ru/portable/312... table.html
0
|
||
| 11.09.2015, 14:19 | ||
|
Не по теме:
Любая его копия при запуске с ключом PureBasic.exe /PORTABLE является таковой из коробки, что и предусмотрено автором PureBasic Всё остальное шарлатанство и попытка втюхать что то лишнее.
0
|
||
| 11.09.2015, 14:19 | |
|
Помогаю со студенческими работами здесь
20
Как ускорить выполнение кода? (Получение цвета пикселя, сравнение и выполнение действия)
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|