|
1 / 1 / 1
Регистрация: 11.04.2016
Сообщений: 7
|
|
Метод генерации столбца11.04.2016, 19:36. Показов 2329. Ответов 2
Метки нет (Все метки)
Здравствуйте.
У меня такой вопрос. Я сделал применил метод генерации столбца для задачи одномерного раскроя. Но в одной из задач у меня на определенной итерации получилась нулевая строка! Что делать в этом случае? Вот здесь все подробно описано! ссылка удалена Задавал вопрос на другом форуме, но там что то на него не могут ответить, да и в интернете все перерыл
0
|
|
| 11.04.2016, 19:36 | |
|
Ответы с готовыми решениями:
2
Метод генерации всех возможных комбинаций слова. |
| 12.04.2016, 00:18 | |||||||
0
|
|||||||
|
1 / 1 / 1
Регистрация: 11.04.2016
Сообщений: 7
|
|
| 12.04.2016, 12:46 [ТС] | |
|
Вчера не смог привести пример и сам принцип алгоритма, по которому сделал программу.
Сначала принцип. Сам принцип такой: составляю исходные варианты раскроя, где кол-во вариантов равно количеству заготовок. В каждый вариант входит только одна очередная заготовка. Далее запускаю симплекс (назовем этот шаг симплекс1), полученные оценки передаю в модуль решения задачи о неограниченном рюкзаке, получаю данные. Проверка что сумма произведения всех оценок на соответствующие результаты задачи о рюкзаке была больше единицы, в противном случае останов, т.к найдено оптимальное решение. Далее подставляю результат задачи о рюкзаке в качестве свободных членов текущей задачи лин. программирования Получаю результат (назовем это симплекс2). А дальше нахожу минимальное отношение симплекс1/симплекс2 чтобы определить какой столбец заменяется данными задачи о рюкзаке. Однако на некоторых тестовых данных программа не могла дальше продолжить решение, потому что система ограничений становилась несовместимой. Начал делать трассировку. Оказалось что появляется нулевая строка! Т.е коэффициенты все по нулям, все ограничения стандартно имеют знак в правой части ">=" а свободный член в правой части больше нуля. Тут то и возникает конфликт с другими ограничениями. Требуем чтобы оно было больше определенного значения, а все коэффициенты по нулям. Вот и хотел спросить что нужно делать дальше? Причем я заметил чем больше заготовок берется, то вероятность появления строки возрастает. Второй вопрос связан со скоростью. Я сравнил на одних и тех же данных обычный симплекс и симплекс с генерацией столбца. Первый работает быстрее, скорость ощущается именно когда данных становиться больше. Незнаю может это связано с тем что задача о рюкзаке реализована методом динамического программирования , а он не так быстр при больших данных? Хотя преимущество метода генерации столбцов очевидно на больших данных, когда перебор всех вариантов неразумен. Теперь пример Длина раскраиваемой заготовки L=8000 Даны следующие заготовки и их количества: 2392-6 000 шт. 946-14 000 шт. 2256-6 000 шт. 78-12 000 шт. 178-12 000 шт. Теперь определяю сколько каждого размера укладывается целое число раз в длину 8000: 2392 - 3 [8000/2392] 946 - 8 [8000/946] 2256 - 3 78 - 102 178 - 44 Таким образом получилось 5 вариантов раскроя (по количеству заготовок) и составляются ограничения задачи линейного программирования: 3 0 0 0 0 >= 6 000 0 8 0 0 0 >= 14 000 0 0 3 0 0 >= 6 000 0 0 0 102 0 >= 12 000 0 0 0 0 0 >= 12 000 Целевая функция все время минимизируется и коэффициенты при неизвестных равны единицам. Решив данную задачу симплекс-методом получаю значения: 2000, 1750, 2000, 2000/17, 3000/11 и следующие оценки: 1/3, 1/8, 1/3, 1/102, 1/44 Теперь решаю задачу о неограниченном рюкзаке (т.е каждый предмет можно брать несколько раз): Z=1/3*x1+1/8*x2+1/3*x3+1/102*x4+1/44*x5 Решение задачи о рюкзаке:2392*x1+964*x2+2256*x3+78*x4+178*x5<=800 0 x1=0, x2=1, x3=3, x4=1, x5=1 Так как Z>1, то продолжаем решениеПодставляю найденные значения в качестве свободных членов в предыдущую задачу лин. прогр. 3 0 0 0 0 >= 0 0 8 0 0 0 >= 1 0 0 3 0 0 >= 3 0 0 0 102 0 >= 1 0 0 0 0 0 >= 1 Решив данную задачу симплекс-методом получаю значения: 0, 1/8, 1, 1/102, 1/44 Теперь нахожу наименьшее значение между предыдущим значением симплекс решения и найденным только что: [2000/0] [1750/(1/8)] [2000/1] [(2000/17)/(1/102)] [(3000/11)/(1/44)] Наименьшее отношение выделено жирным шрифтом (2000/1).Соответствено третий столбец заменяется значениями задачи о рюкзаке и получаем новую задачу лин. прогр. 3 0 0 0 0 >=6 000 0 8 1 0 0 >=14 000 0 0 3 0 0 >=6 000 0 0 1 102 0 >=12 000 0 0 1 0 44 >=12 000 Далее все делается также и я не буду расписывать так подробно, а буду приводить матрицу, где жирным шрифтом будет выделен столбец, замененный значениями задачи о рюкзаке 3 0 0 3 0 0 8 1 0 0 0 0 3 0 0 0 0 1 6 0 0 0 1 2 44 Далее 3 0 0 2 0 0 8 1 3 0 0 0 3 0 0 0 0 1 0 0 0 0 1 2 44 И наконец, последняя задача лин прогр. где получилась нулевая строка 3 0 0 2 0 0 8 0 3 0 0 0 0 0 0 0 0 102 0 0 0 0 0 2 44 Вот здесь то я и не пойму что делать дальше. Симплекс-метод дальше не решает т.к система ограничений несовместна. Вообще в методе генераци столбцов возникают ли такие ситуации (или только у меня так получилось) и что делать при этом. Добавлено через 5 минут там небольшая помарка в примере, где только составляется матрица исходных вариантов раскроя, значение в пятом столбце пятой строки значение не ноль , а 44 , по кол-ву заготовок пятой заготовки. А вот книга, по которой я сделал алгоритм Взял тот же пример из книги, его пошагово проверил, все данные и ответ совпали. Я где то видел еще одну реализацию метода генерации столбцов, но там почему то столбцы добавляются в задачу при каждой итерации, здесь же просто заменяется столбец , а размер матрицы не меняется Есть какие нибудь мысли по этому вопросу? Может где то дополнительная проверка должна быть или что то добавить в сам алгоритм?
0
|
|
| 12.04.2016, 12:46 | |
|
Помогаю со студенческими работами здесь
3
Линейный конгруэнтный метод генерации псевдослучайных чисел. Рекурсия Для автоматической генерации элементов коллекций в классе надо определить статический метод Объявление xml в модели для генерации столбца с форматом xml в БД Численный метод решения задачи генерации случайных чисел по нормальному закону распределения на одномерное и двумерное пространство Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
|
Запрет удаления строк ТЧ документа при определенном условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
|
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут
Суть:
- Группа наркоманов из 10 человек.
- Только один инфицирован ВИЧ.
- Колются одной иглой.
- Колются раз в день.
- Колются последовательно через. . .
|
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
|
|
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
|
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . .
а удачный момент так и не приходит.
|
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица.
Задача: зафиксировать три левых колонки в отчете.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
/ / . . .
|
Настройки VS Code
Loafer 13.04.2026
{
"cmake. configureOnOpen": false,
"diffEditor. ignoreTrimWhitespace": true,
"editor. guides. bracketPairs": "active",
"extensions. ignoreRecommendations": true,
. . .
|