powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Непростая задачка. Нужны хотя бы идеи.
25 сообщений из 33, страница 1 из 2
Непростая задачка. Нужны хотя бы идеи.
    #34646970
Bag09
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имеется N рулонов лент длиной L(i).
Нужно разрезать их по заданным размерам R(j) так, чтобы остатки лент по каждому рулону были минимальны (естественно, кроме последнего рулона).
Есть ли у кого какие-нибудь идеи алгоритма?
...
Рейтинг: 0 / 0
Непростая задачка. Нужны хотя бы идеи.
    #34647060
zloy den
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тут был усложненный вариант этой задачи с раскройкой прямоугольного куска ткани
...
Рейтинг: 0 / 0
Непростая задачка. Нужны хотя бы идеи.
    #34647099
Bag09
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В поиске ничего не нашел. Может вспомнишь поточнее где искать
...
Рейтинг: 0 / 0
Непростая задачка. Нужны хотя бы идеи.
    #34647124
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bag09Есть ли у кого какие-нибудь идеи алгоритма?По крайней мере, перебор никто не отменял. Если R не в очень много раз меньше, чем L, то количество вариантов будет вполне потребным.
Правда, еще надо более точно сформулировать понятие "остатки лент по каждому рулону были минимальны". Что более "минимально" - куски 2 метра и 3 метра или 1 метр и 4 метра?
...
Рейтинг: 0 / 0
Непростая задачка. Нужны хотя бы идеи.
    #34647146
Святогор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Классическая задача динамического программирования, похожая на задачу о рюкзаке. Гугл в помощь!
...
Рейтинг: 0 / 0
Непростая задачка. Нужны хотя бы идеи.
    #34647233
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
симплекс метод?


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Непростая задачка. Нужны хотя бы идеи.
    #34647260
Bag09
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Более точно: сумма остатков всех рулонов (кроме последнего должно быть минимальным).
Примерные значения переменных: N=20, L(i)=50, R(i)=2.
Первоначально я пытался решить следующим образом:
1. Находим все перестановки N рулонов.
2. Для каждой перестановки берем i-ый рулон и находим для него (также перестановками) такой расклад, при котором получается min остаток ленты.

Однако это не всегда выдает лучший результат
...
Рейтинг: 0 / 0
Непростая задачка. Нужны хотя бы идеи.
    #34647285
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bag09Первоначально я пытался решить следующим образом:
1. Находим все перестановки N рулонов.Я бы стал искать все перестановки кусков при фиксированном (неважно каком именно) порядке рулонов.
Хотя, если последний(-ие) остаток(-и) должен быть максимален, то рулоны отсортировал бы в порядке возрастания длины.
...
Рейтинг: 0 / 0
Непростая задачка. Нужны хотя бы идеи.
    #34647308
1........
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
изучайте Сиплекс-метод
...
Рейтинг: 0 / 0
Непростая задачка. Нужны хотя бы идеи.
    #34647345
Lunx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
решить задачу методом Монте-Карло. вероятность выбора следующего рулона известна, задачка - найти вариант выбора рулонов в котором сумма отрезков минимальна. по крайней мере быстрее чем делать перестановки. Хотя честно говоря, я бы сам так делать не стал - сам бы писал перестановки.
...
Рейтинг: 0 / 0
Непростая задачка. Нужны хотя бы идеи.
    #34647374
Alex88
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Машины сейчас быстрые, а рулонов, наверное, не бесконеное число. Решать это дело прямым перебором вариантов: просто, надежно и оптимальный результат гарантирован. Даже если программа будет работать 2 часа (это маловероятно), то ничег8о страшного
...
Рейтинг: 0 / 0
Непростая задачка. Нужны хотя бы идеи.
    #34648781
Valer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
задача называется линейный раскрой
запускаем google
набираем линейный раскрой
получаем не менее 5 отечественных программ
...
Рейтинг: 0 / 0
Непростая задачка. Нужны хотя бы идеи.
    #34650626
MX -- ALEX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Valerзадача называется линейный раскрой
запускаем google
набираем линейный раскрой
получаем не менее 5 отечественных программ

100 EURO
ввод исходных данных - через EXCEL
решение выдает тоже в EXCEL
время < 5 сек
mx@enters.eu
...
Рейтинг: 0 / 0
Непростая задачка. Нужны хотя бы идеи.
    #34650635
Фотография Хрюхрюшкин.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ога, на сраном МУМПсе =)
...
Рейтинг: 0 / 0
Непростая задачка. Нужны хотя бы идеи.
    #34650939
Bag09
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MX -- ALEX

100 EURO
ввод исходных данных - через EXCEL
решение выдает тоже в EXCEL
время < 5 сек
mx@enters.eu

На самом деле нужна не готовая программа, а только алгоритм, т.к. там есть еще другие нюансы, которые надо реализовать. Но если, имеются исходные тексты, и есть возможность посмотреть демо можем поговорить.
...
Рейтинг: 0 / 0
Непростая задачка. Нужны хотя бы идеи.
    #34651722
Valer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MX -- ALEX

100 EURO
ввод исходных данных - через EXCEL
решение выдает тоже в EXCEL
время < 5 сек
mx@enters.eu

а 100 100 EURO - зачем?
можно и freeware и быстрее
...
Рейтинг: 0 / 0
Непростая задачка. Нужны хотя бы идеи.
    #34651821
MX -- ALEX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Bag09 MX -- ALEX

100 EURO
ввод исходных данных - через EXCEL
решение выдает тоже в EXCEL
время < 5 сек
mx@enters.eu

На самом деле нужна не готовая программа, а только алгоритм, т.к. там есть еще другие нюансы, которые надо реализовать. Но если, имеются исходные тексты, и есть возможность посмотреть демо можем поговорить.

оптимальный раскрой бруса для евроокон сделан вместе с
производственными нюансами
заказчик (Tallinn) вроде бы доволен
исходников нет - все команды (все 7 штук) сидят в ячейках EXCEL
и видны невооруженным глазом
но считает их "виртуальный EXCEL интегрированый в базу данных"
поэтому быстро
...
Рейтинг: 0 / 0
Непростая задачка. Нужны хотя бы идеи.
    #34654209
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На самом деле формулировка "чтобы остатки лент по каждому рулону были минимальны" не корректна, так как задача скорее всего не имеет решения на получение нескольких минимумов одновременно. Корректнее говорить, что сумма остатков минимальна. Но если мы режем некие S лент, то как бы не комбинировали в них R(j) получаем одну и ту же сумму остатков. Единственное за счет чего можно "выиграть":
1. уменьшать число лент (некие не резать)
2.выбрать наименее длинный набор (ленты то разной длины)
...
Рейтинг: 0 / 0
Непростая задачка. Нужны хотя бы идеи.
    #34654262
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NafНа самом деле формулировка "чтобы остатки лент по каждому рулону были минимальны" не корректнаЯ по это уже писал, но автор это благополучно проигнорировал. Ну и пусть, значит настолько нужно.

NafКорректнее говорить, что сумма остатков минимальна.Сумма остатков будет константой (если включать и нерезанные рулоны).
...
Рейтинг: 0 / 0
Непростая задачка. Нужны хотя бы идеи.
    #34654497
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftСумма остатков будет константой (если включать и нерезанные рулоны).
Согласен, я имел ввиду конечно только резаные. Экономический смысл конечно другая тема. Если лента только "чуть подрезана", то это не отход
...
Рейтинг: 0 / 0
Непростая задачка. Нужны хотя бы идеи.
    #34654555
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот решение на Делфи, только что наваял :-)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
 type 
  TDoubleArray= array   of  double;
  TIntegerArray= array   of  integer;

 //получение раскроя лент на заданные куски с минимальной длиной отрезанных лент (нетронутые не учитываются) 
 //Рекурсия. Динамическое программирование 
 //куски и ленты нумеруются с 0 
 //Number - очередной рассматриваемый кусок (в начале выбирается 0) 
 //Lines - массив длин лент 
 //Pieces - массив длин кусков 
 //LinearNumbers - массив указания куска в разрезе: j-й кусок отрезается от LinearNumbers[j] 
 function  Cutting( const  Number:integer;  const  Lines,Pieces:TDoubleArray;  var  LinearNumbers:TIntegerArray):boolean;
 var 
  i,j,n,m:integer;
  Remnants:TDoubleArray;    //остатки лент 
  LinearNumbers2:TIntegerArray;  //аналог LinearNumbers для передачи в рекурсии 
  MinSum,Sum:double;  //текущай и минимальная длина остатков лент 
 begin 
  n:=Length(Lines);
  m:=Length(Pieces);
  MinSum:= 0 ;

   //инициализация LinearNumbers2 элементами LinearNumbers 
   //расчет текущих остатков лент 
  SetLength(Remnants,n);
  SetLength(LinearNumbers2,m);
   for  i:= 0   to  n- 1   do 
   begin 
    Remnants:=Lines[i];
    MinSum:=MinSum+Lines[i];
   end ;
   for  i:= 0   to  Number- 1   do 
   begin 
    Remnants[LinearNumbers[i]]:=Remnants[LinearNumbers[i]]-Pieces[i];
    LinearNumbers2[i]:=LinearNumbers[i];
   end ;
  SetLength(LinearNumbers, 0 );

  Result:=false;

   [i]//перебор возможных позиций для очередного куска 
   for  i:= 0   to  n- 1   do 
   begin 
     if  Remnants>Pieces[Number]  then    [i]//кусок умещается в остаток ленты 
     begin 
      LinearNumbers2[Number]:=i;
       if  Number<m- 1   then    //если это не последний кусок, то пердаем в рекурсии 
        Result:=Cutting(Number+ 1 ,Lines,Pieces,LinearNumbers2)
       else 
        Result:=true;
       if  Result  then    //если удалось получить разбиение, то посчитаем длину остатков 
       begin 
         //получение остатков после рекурсии 
         for  j:=Number  to  m- 1   do 
          Remnants[LinearNumbers2[j]]:=Remnants[LinearNumbers2[j]]-Pieces[j];
         //сумма длин остатков 
        Sum:= 0 ;
         for  j:= 0   to  n- 1   do 
           if  Lines[j]>Remnants[j]  then 
            Sum:=Sum+Remnants[j];
         //проверка на минимальность     
         if  MinSum<Sum  then 
         begin 
          MinSum:=Sum;
          LinearNumbers:=LinearNumbers2;
         end ;
       end ;
     end ;
   end ;
 end ;
...
Рейтинг: 0 / 0
Непростая задачка. Нужны хотя бы идеи.
    #34656667
Bag09
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft NafНа самом деле формулировка "чтобы остатки лент по каждому рулону были минимальны" не корректнаЯ по это уже писал, но автор это благополучно проигнорировал. Ну и пусть, значит настолько нужно.

NafКорректнее говорить, что сумма остатков минимальна.Сумма остатков будет константой (если включать и нерезанные рулоны).


Я уже писал (см.выше): речь идет о минимизации суммы остатков кроме ПОСЛЕДНЕГО рулона,
...
Рейтинг: 0 / 0
Непростая задачка. Нужны хотя бы идеи.
    #34656702
Bag09
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nafвот решение на Делфи, только что наваял :-)



Спасибо. Надо проверить.
...
Рейтинг: 0 / 0
Непростая задачка. Нужны хотя бы идеи.
    #34656800
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bag09Я уже писал (см.выше): речь идет о минимизации суммы остатков кроме ПОСЛЕДНЕГО рулона,Т.е. нерезанными должны остаться рулоны с максимально возможной длиной?
...
Рейтинг: 0 / 0
Непростая задачка. Нужны хотя бы идеи.
    #34656837
Bag09
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft Bag09Я уже писал (см.выше): речь идет о минимизации суммы остатков кроме ПОСЛЕДНЕГО рулона,Т.е. нерезанными должны остаться рулоны с максимально возможной длиной?

Не совсем. Практически все рулоны имеют длину 50-60 м. И не так важно какой рулон остался в конце: 50 или 60 метровый. Важно, чтобы обрезки от предыдущих лент, которые придется выкидывать были минимальны (точнее их сумма)
...
Рейтинг: 0 / 0
25 сообщений из 33, страница 1 из 2
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Непростая задачка. Нужны хотя бы идеи.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]