Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
Заблокирован

Сколько надо купить заготовок длиной 150 см?

27.05.2016, 20:46. Показов 1964. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Помогите, пожалуйста, с решением задачи. Принципиально важно узнать: хватит ли 93 заготовки?

Линейный раскрой прутков. Сколько надо купить заготовок длиной 150 см, чтобы выполнить полностью заказ?
- длина 33 см — количество: 151 штука;
- длина 27 см — количество: 206 штук;
- длина 19 см — количество: 163 штуки.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.05.2016, 20:46
Ответы с готовыми решениями:

Старинная задача. Сколько можно купить быков, коров, телят, если на 400 рублей надо купить 100 голов
Старинная задача. Сколько можно купить быков (бык стоит 10 рублей), коров (по 5 рублей), телят (по 2 рубля), если на 400 рублей надо купить...

Сколько можно купить быков, коров и телят, если на 100 руб. надо купить 100 голов скота
Всем участникам форума привет! И сразу перейду к делу. Есть задача: Составить алгоритм решения задачи: сколько можно купить быков,...

Сколько можно купить быков, коров и телят, если на 100 руб. надо купить 100 голов скота
6. Составить алгоритм решения задачи: сколько можно купить быков, коров и телят, платя за быка 10 руб., за корову — 5 руб., а за теленка —...

17
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
28.05.2016, 13:06
Что в твоём понимании "помогите"?
Тупо выполнить твоё учебное задание?
Или уже есть собственные попытки? Выкладывай - помогу!
А вообще-то воспользуйся поиском по форуму. Тема была. Есть решение.
Просто набери в поиске по форуму "Раскрой" и выбери раздел бейсик!
1
Заблокирован
30.05.2016, 21:56  [ТС]
Цитата Сообщение от Alex77755 Посмотреть сообщение
Тупо выполнить твоё учебное задание?
Или уже есть собственные попытки? Выкладывай - помогу!
Alex77755, ловлю на слове!

Вроде нашей беседы:
- поели теперь надо бы поспать!
- ...
- ну вот, поспали, теперь надо бы поесть!
- не хочу больше есть!
- ну, тогда давай опять спать!
- и спать не хочу!
- тогда тебе надо учиться…

(из мультфильма «Дюймовочка»).

Спорный код от SoftIce
Visual Basic
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
Private Sub Command1_Click()
     Dim arr(), res, ArrB() As typeBrd, k As Long, dL As Long, t0 As Long, tL As Long, st As String
     Dim n As Long, i As Long, j As Long, LB As Long, sum As Long, s As String
     Call GetData(ArrB(), n)
     LB = Val(Text3.Text): List1.Clear: Label2.Visible = True: txtRes.Text = "": txtRes1.Text = "": Command1.Enabled = False: DoEvents
     ReDim arr(1 To 1)
     For i = 1 To n
         For j = 1 To ArrB(i).CntB
            k = k + 1
            ReDim Preserve arr(1 To k): arr(k) = ArrB(i).LenB
         Next j
     Next i
m:   Do
       sum = 0: s = ""
       Call compRes(arr, k)
       res = LongSumEl(arr(), LB, dL)
       If VarType(res) = 8195 Then
          For i = LBound(res) To UBound(res)
               If res(i) <> 0 Then
                   s = s & res(i) & "   ": sum = sum + res(i)
                   For j = 1 To k
                        If res(i) = arr(j) Then res(i) = 0: arr(j) = 0  '
                   Next j
               End If
          Next i
          Label2.Caption = Val(k / 100): DoEvents
          If sum = 0 Then GoTo m1
          st = st & tL + 1 & "." & vbTab & s & "   Отходы  " & LB - sum & vbCrLf
          t0 = t0 + (LB - sum): tL = tL + 1
       Else
          If sumRes(arr, k) < LB And res <> LB Then
            For j = 1 To k
                  If arr(j) <> 0 Then s = s & arr(j) & "   ": arr(j) = 0
            Next j
            st = st & tL + 1 & "." & vbTab & s & "   Отходы  " & res & vbCrLf
            t0 = t0 + Val(res): tL = tL + 1
            GoTo m1
          End If
          Exit Do
       End If
    Loop
    
    If dL <= maxL(ArrB(), n) Then dL = dL + 5: GoTo m
m1:
    'Вывод результата
     On Error Resume Next
    List1.AddItem " "
    List1.AddItem "Всего потребуется заготовок " & tL
    List1.AddItem "Отходы (всего ) " & t0
    List1.AddItem "Отходы (заготовки, шт) " & Round(t0 / LB, 2)
    List1.AddItem "Отходы (всего, %) " & Round(((t0 / LB) / tL) * 100, 2)
    txtRes.Text = st
    Label2.Visible = False: Command1.Enabled = True: DoEvents
    txtRes1.Text = compStr(st)
    
End Sub
Private Function compStr(s As String) As String
    Dim st, i As Long, j As Long, n As Long, tmp1 As String, tmp2 As String, k As Long
    st = Split(s, vbCrLf): n = UBound(st)
    tmp1 = Split(st(0), vbTab)(1)
    k = 1
    For i = 1 To n
        If st(i) <> "" Then
         tmp2 = Split(st(i), vbTab)(1)
         If tmp1 = tmp2 Then
             k = k + 1
         Else
             compStr = compStr & k & " раз " & vbTab & tmp1 & vbCrLf
             k = 1
             If st(i) <> "" Then tmp1 = Split(st(i), vbTab)(1)
         End If
        End If
    Next i
    compStr = compStr & k & " раз " & vbTab & tmp1 & vbCrLf
End Function
Private Sub compRes(res, n As Long)
    Dim a() As Variant, i As Long, k As Long
    ReDim a(1 To 1)
    For i = 1 To n
        If res(i) <> 0 Then k = k + 1: ReDim Preserve a(1 To k): a(k) = res(i)
    Next i
    res = a: n = k
End Sub
Private Function sumRes(a(), n As Long) As Long
    Dim i As Long
    For i = 1 To n
        sumRes = sumRes + a(i)
    Next i
End Function
Private Function maxL(ArrB() As typeBrd, n) As Long
    Dim i As Long: maxL = ArrB(1).LenB
    For i = 1 To n
        If ArrB(i).LenB > maxL And ArrB(i).CntB > 0 Then maxL = ArrB(i).LenB
    Next i
End Function
Private Sub GetData(ArrB() As typeBrd, n As Long)
     n = 5
     ReDim ArrB(1 To n)
     Dim i As Long
     For i = 1 To n
         ArrB(i).LenB = Val(Text1(i - 1).Text)
         ArrB(i).CntB = Val(Text2(i - 1).Text)
     Next i
End Sub
 
Function LongSumEl(arr(), sm As Long, Optional ds As Long = 0)
 
    Dim out&(), i&, j&, k&, n&, L&, sm1&
    
    n = sm ' + ds
    sm1 = sm - ds
    
    If n > 80000000 Or n < 0 Then Exit Function
    ReDim a&(n)
    For i = 1 To n: a(i) = -1: Next i
    For i = 1 To UBound(arr)
        For j = n - arr(i) To 0 Step -1
            If a(j) >= 0 Then
                k = j + arr(i)
                If a(k) = -1 Then a(k) = j
                If k >= sm1 Then
                    Do
                        L = L + 1
                        ReDim Preserve out&(1 To L)
                        out(L) = k - a(k)
                        k = a(k)
                    Loop While k
                    LongSumEl = out
                    Exit Function
                End If
            End If
    Next j, i
    For i = sm To 1 Step -1
        If a(i) >= 0 Then Exit For
    Next i
    LongSumEl = sm - i
End Function
Речь о серьёзных вещах. Почему код SoftIce не является оптимальным?
1) У него получается:
Требуется заготовок — 94 шт. Отходы — 4580 мм. Процент отходов — 3,25%.

2) Правильно, как оптимально:
Требуется заготовок — 93 шт. Отходы — 3080 мм. Процент отходов — 2,21%. (3080/139500*100)
330*151 + 270*206 + 190*163 = 136420 мм.


Кто сможет написать правильный код?
Ну и зачем, нужно было смотреть прежние решения? Душа просится к звёздам.
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
30.05.2016, 22:03
Ну так, получается, помогать буду SoftIce
Но он не просил о помощи!
А вообще вопрос интересный. Несколько раз обсуждался.
Будет время подумаю тоже
0
Заблокирован
30.05.2016, 22:31  [ТС]
Цитата Сообщение от Alex77755 Посмотреть сообщение
Будет время подумаю тоже
Подумаю, здесь звучит — как посмотрю сквозь стену! Вам не по силам.

Год назад и преподы «МГТУ им. Н.Э. Баумана» были ни в зуб ногой, смотрите http://engbul.bmstu.ru/doc/775784.html

Прощай, немытая Россия…
Жаль только — жить в эту пору прекрасную.
Уж не придется — ни мне, ни тебе
0
 Аватар для Sasha_Smirnov
5562 / 1370 / 150
Регистрация: 08.02.2009
Сообщений: 4,109
Записей в блоге: 30
30.05.2016, 23:38
Такие по Канторовичу надо, по Канторовичу!
Цитата Сообщение от m-ch Посмотреть сообщение
Знающему человеку не составит труда реализовать его на любом языке программирования.

Ссылки на методологию с использованием линейного программирования я дал в 23 посте
(и дальнейшие соображения и выкладки М. Чехова (m-ch) в теме неугомонного нашего Willi2001)

Замечу, что, на мой взгляд, это мудрейшие из мудрейших (пусть и не чуждые самопиара — не продюсеров же им нанимать!).
1
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
31.05.2016, 00:00
Вам не по силам.
Ну тогда и смотреть не стану!
Решай сам! Мудрейший ты наш!
0
6180 / 945 / 313
Регистрация: 25.02.2011
Сообщений: 1,381
Записей в блоге: 1
31.05.2016, 21:53
Лучший ответ Сообщение было отмечено Infinity20_5 как решение

Решение

Цитата Сообщение от Infinity20_5 Посмотреть сообщение
хватит ли 93 заготовки?
Хватит, даже остаток останется длиной 131 см
Вложения
Тип файла: xlsx 150.xlsx (49.9 Кб, 11 просмотров)
1
6180 / 945 / 313
Регистрация: 25.02.2011
Сообщений: 1,381
Записей в блоге: 1
31.05.2016, 23:29
Цитата Сообщение от Infinity20_5 Посмотреть сообщение
Кто сможет написать правильный код?
Вероятно, я смогу.
Вопрос, задача учебная или практическая?
Если учебная, то браться за нее не буду, если практическая, то приложите перечень реальных исходных данных.

Цитата Сообщение от Infinity20_5 Посмотреть сообщение
Год назад и преподы «МГТУ им. Н.Э. Баумана» были ни в зуб ногой, смотрите
Данная задача, с этими исходными данными была подробно рассмотрена здесь: http://al-vo.ru/spravochnik-ex... excel.html
Я там выложил два примера решения: с максимизацией полезного остатка и с минимальным количеством переходов (различных схем раскроя)
1
Заблокирован
01.06.2016, 01:14  [ТС]
Цитата Сообщение от Alex77755 Посмотреть сообщение
Решай сам! Мудрейший ты наш!
Вода дырочку найдёт!

Цитата Сообщение от m-ch Посмотреть сообщение
Вопрос, задача учебная или практическая?
Не то и не другое, скорее хобби. Нравятся сложные алгоритмы. Поражаюсь полёту мысли.

Если Вам не трудно, попробуйте сделать намётки к задаче Перебор по раскрою квадрата в Visual Basic 6.0
Понимаю, сразу её не решить — она сырая. Может, за полгода, не торопясь — возникнет прообраз решения. Уж очень нестандартная.
Миниатюры
Сколько надо купить заготовок длиной 150 см?  
0
6180 / 945 / 313
Регистрация: 25.02.2011
Сообщений: 1,381
Записей в блоге: 1
01.06.2016, 16:09
Задача по линейному раскрою больше не актуальна?

Цитата Сообщение от Infinity20_5 Посмотреть сообщение
Принципиально важно узнать: хватит ли 93 заготовки?
Ответ на поставленный вопрос получен?

А задача по раскрою квадрата меня не заинтересовала
1
Заблокирован
01.06.2016, 23:19  [ТС]
Цитата Сообщение от m-ch Посмотреть сообщение
А задача по раскрою квадрата меня не заинтересовала
Жалко. Вы, по сравнению со мной, в совершенстве владеете Solver Excel.
В задаче "по перебору вариантов раскроя квадрата" приведённые варианты найдены любителями. Никакой математической модели, вроде строгой "семь мостов Кенигсберга" (Эйлера) — пока в раскрое нет.
Детям и взрослым было бы любопытно убедиться, что существует и "четвёртый вариант". Предлагаю Вам его найти.

Цитата Сообщение от m-ch Посмотреть сообщение
Ответ на поставленный вопрос получен?
До сих пор были "детские шалости", а не условия. В жизни часто сложнее, по-другому.
Попробуйте решить такое.
Линейный раскрой прутков. Сколько надо купить заготовок длиной: 150 см, 128 см и 113 см — чтобы выполнить полностью заказ при минимальных отходах?
- длина 33 см — количество: 151 штука;
- длина 27 см — количество: 206 штук;
- длина 19 см — количество: 163 штуки.


P.S. Только просьба, не в службу, а в дружбу: пожалуйста, сообщите сколько у Вас ушло времени на решение задачи при "трёх типах заготовок".
По-моему, Вам придётся не сладко. Интересно, за день управитесь?
0
6180 / 945 / 313
Регистрация: 25.02.2011
Сообщений: 1,381
Записей в блоге: 1
01.06.2016, 23:29
Лучший ответ Сообщение было отмечено Infinity20_5 как решение

Решение

Цитата Сообщение от Infinity20_5 Посмотреть сообщение
По-моему, Вам придётся не сладко. Интересно, за день управитесь?
30 секунд - ввод данных
1 секунда - расчет
1-2 минуты написание поста и подготовка скриншота
Миниатюры
Сколько надо купить заготовок длиной 150 см?  
1
6180 / 945 / 313
Регистрация: 25.02.2011
Сообщений: 1,381
Записей в блоге: 1
02.06.2016, 00:06
Цитата Сообщение от Infinity20_5 Посмотреть сообщение
До сих пор были "детские шалости", а не условия. В жизни часто сложнее, по-другому.
Примеры, которые Вы выкладываете - очень простые для линейного программирования, решаются очень быстро.

Попробуйте найти решение для следующих данных (взято из реального производства, заказ на раскрой рамы):
Размер профиля - 6500
Ширина реза - 0, размер кромки - 0 (для упрощения модели)
Перечень деталей:
Кликните здесь для просмотра всего текста
Длина - кол-во
3071 - 4
2726 - 2
2526 - 2
2206 - 2
2116 - 2
2106 - 2
2096 - 2
2056 - 6
1956 - 2
1656 - 4
1641 - 4
1446 - 2
1436 - 4
1426 - 6
1406 - 8
1396 - 6
1386 - 4
1376 - 4
1366 - 2
1306 - 8
1286 - 2
1276 - 4
1196 - 2
1106 - 6
1086 - 2
1006 - 4
906 - 4
816 - 2
806 - 2
756 - 6
736 - 4
696 - 2
676 - 2
666 - 2
606 - 2
406 - 2

Решение - 27 хлыстов
Вопрос, какой максимальный полезный остаток можно получить при раскрое?
1
6180 / 945 / 313
Регистрация: 25.02.2011
Сообщений: 1,381
Записей в блоге: 1
06.06.2016, 13:40
Цитата Сообщение от Infinity20_5 Посмотреть сообщение
Попробуйте решить такое.
Infinity20_5, Вы не отписались по предложенному решению.
Решение устроило?
0
Заблокирован
07.06.2016, 04:59  [ТС]
Цитата Сообщение от m-ch Посмотреть сообщение
Infinity20_5, Вы не отписались по предложенному решению.
Вы, молодец, проделали большую интересную работу. Ознакомился с Вашими архивами (вложениями), в разных темах. Решение полностью устраивает.

О чём ещё писать, если тема себя исчерпала?
0
6180 / 945 / 313
Регистрация: 25.02.2011
Сообщений: 1,381
Записей в блоге: 1
07.06.2016, 07:28
Ну если тема себя исчерпала, то выкладываю решение по исходным данным из 14 го поста.

Решение, которое мне удалось найти:
Суммарный размер деталей - 173 664 мм
Использовано 27 заготовок по 6500 мм (6500*27 = 175 500 мм)
Удалось сохранить полезный остаток 1826 мм
Потери составили 175500 - 173664 - 1826 = 10 мм (потери всего 1 см на 175,5 метров заготовок).
Схема раскроя во вложении.

Ни одна из специализированных программ по раскрою, которые я протестировал, не смогли найти подобного решения
Вложения
Тип файла: xlsx LinRaskrLP пример.xlsx (58.3 Кб, 12 просмотров)
1
 Аватар для Sasha_Smirnov
5562 / 1370 / 150
Регистрация: 08.02.2009
Сообщений: 4,109
Записей в блоге: 30
21.07.2016, 04:51
Цитата Сообщение от Alex77755 Посмотреть сообщение
Решай сам! Мудрейший ты наш!
Цитата Сообщение от Sasha_Smirnov Посмотреть сообщение
на мой взгляд, это мудрейшие из мудрейших
Это же о мастерах линейного программирования, а вовсе не об Infinity20_5!
Цитата Сообщение от m-ch Посмотреть сообщение
Ни одна из специализированных программ по раскрою, которые я протестировал, не смогл…
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.07.2016, 04:51
Помогаю со студенческими работами здесь

сколько надо купить ВС?
Сколько нужно взять ссылок на САПЕ для продвижения основного запроса (около 10 000 запросов /мес. в Яше) в топ? По другим постам я понял...

Определить, сколько досок надо купить, чтобы поставить сплошной забор
Помогите написать программу: Имеется садовый участок, имеющий форму прямоугольника со сторонами A метров и B метров. Сколько досок надо...

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

Сколько существует способов составить отрезок длиной 1 метр из отрезков длиной А и В см?
Сколько существует способов составить отрезок длиной 1 метр из отрезков дли- ной А и В см?

Определите, сколько заготовок нарисовал Урфин Джюс
ЗДРАСТВУЙТЕ ПОМОГИТЕ ПЛЗ ОЧЕНЬ НУЖНО Имя входного файла: rect.dat Имя выходного файла: rect.sol Ограничение времени: 1 с ...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru