С Новым годом! Форум программистов, компьютерный форум, киберфорум
Методы оптимизации
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
1 / 1 / 1
Регистрация: 11.04.2016
Сообщений: 7

Метод генерации столбца

11.04.2016, 19:36. Показов 2295. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.
У меня такой вопрос. Я сделал применил метод генерации столбца для задачи одномерного раскроя. Но в одной из задач у меня на определенной итерации получилась нулевая строка! Что делать в этом случае?
Вот здесь все подробно описано!
ссылка удалена
Задавал вопрос на другом форуме, но там что то на него не могут ответить, да и в интернете все перерыл
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.04.2016, 19:36
Ответы с готовыми решениями:

Создать в главном классе метод генерации
Доброго времени суток. Я создал в классе Cat конструктор так, чтобы можно было создать кошку с весом переданным в конструктор Мог...

Метод генерации дробных случайных чисел
Написать программу, которая содержит метод генерации дробных случайных чисел из диапазона 0-min.

Метод генерации всех возможных комбинаций слова.
Доброго всем утра/дня /вечера, у кого как. Подскажите пожалуйста добрые люди, как реализовать метод, который получает строку английских...

2
12.04.2016, 00:18
 Комментарий модератора 

Правила форума

4.7. Как можно более полно описывайте суть проблемы или вопроса, что было сделано для ее решения и какие результаты получены.

5.8. Запрещено публиковать ссылки на другие форумы, а также их пропаганда. Публикация ссылок на форумы допустима только в разделе "Готовые движки, cms и форумы" для решения технических проблем и с предварительного одобрения администрации.
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 , по кол-ву заготовок пятой заготовки.

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

Есть какие нибудь мысли по этому вопросу?
Может где то дополнительная проверка должна быть или что то добавить в сам алгоритм?
Вложения
Тип файла: pdf cuttingstock.pdf (571.8 Кб, 31 просмотров)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.04.2016, 12:46
Помогаю со студенческими работами здесь

Результаты генерации случайных чисел методами Class1 и Class2 должны выводиться в RichTextBox в 2 столбца
На форме размещено текстовые боксы: &quot;имя файла&quot;, &quot;К - количество элементов массива&quot;, &quot;Максимальный элемент&quot;,...

Линейный конгруэнтный метод генерации псевдослучайных чисел. Рекурсия
Товарищи, здравствуйте! Наткнулся на следующую задачу: &quot;Линейный конгруэнтный метод генерации псевдослучайных чисел заключается в...

Для автоматической генерации элементов коллекций в классе надо определить статический метод
Есть 2 класса Person (базовый класс) и Student (наследуемый класс). Для автоматической генерации элементов коллекций в классе Test...

Объявление xml в модели для генерации столбца с форматом xml в БД
В контроллере происходит генерация xml, как его добавить в базу данных (MS SQL Server) через модель, а для этого модель должна ожидать xml,...

Численный метод решения задачи генерации случайных чисел по нормальному закону распределения на одномерное и двумерное пространство
Приветствую! Собственно суть вопроса в заголовке. Требуется такой генератор. Есть ли какие-то методы решающие эту задачу у .NET, если нет,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru