Имя: Пароль:
1C
1С v8
Придумал алгоритм подсчета отходов погонных материалов. Куда выложить исходник?
0 YaroslavStr
 
10.07.13
16:10
Привет.
Придумал алгоритм подсчета отходов погонных материалов. Куда выложить исходник? Просто, думаю, кому-нибудь пригодится...
1 YaroslavStr
 
10.07.13
16:10
Может кто потестит...
2 Ненавижу 1С
 
гуру
10.07.13
16:11
расскажи на словах идею
3 acsent
 
10.07.13
16:15
на инфостарт
4 drcrasher
 
10.07.13
16:15
(0) разницу в словах "алгоритм" и "исходный код" видишь?
алгоритм - сюда, исходники - в дроп, гугл, ядиск, гитхаб
5 drcrasher
 
10.07.13
16:15
ну или в (3)

забыл про него совсем
6 YaroslavStr
 
10.07.13
16:16
Есть список деталей: ТЧ с колонками: Длина, Количество. Все это на форме документа. При внесении новой детали происходит вызов глобальной функции. В неё перед вызовом выгружается ТЗ со списком деталей (свернув перед этим) и Материал.длина в качестве параметров функции.

Возврат ТЗ со списком отходов. Плюс в глобальную переменную глКоличествоПолныхДлинМатериала записывается количество полных длин этого материала, который понадобится при раскрое.
7 YaroslavStr
 
10.07.13
16:17
Можно было через Массивы и Структура, но до них у меня руки не дошли.
8 YaroslavStr
 
10.07.13
16:18
(3) За Инфостарт забыл, что то...
9 acsent
 
10.07.13
16:20
(6) глобальная переменная? в топку твой алгоритм
10 Ненавижу 1С
 
гуру
10.07.13
16:21
(6) Давай так:
1. что дано
2. что найти
3. описание решения
сначала можно п.1 и п.2 только, но внятно
11 mikecool
 
10.07.13
16:21
(6) это не алгоритм
12 YaroslavStr
 
10.07.13
16:25
1. Дано на документе в ТЧ список деталей (алюминиевый профиль):
 1200  3
 600   5
 450   1

2. При порезке такого погонного материала надо вычислить возможные отходы для того, что пользователь мог их продать или не продать, в зависимости от того какова их длина и количество. А также по какой цене: если длина отходов мала и количество небольшое, то по продажной цене, а если длина отходов велика или велико их количество, то продать по цене себестоимости.
13 YaroslavStr
 
10.07.13
16:26
(11) Прости, не так выразился. Я в курсе что такое алгоритм.
14 YaroslavStr
 
10.07.13
16:27
В коде расписан весь алгоритм в виде комментария
15 YaroslavStr
 
10.07.13
16:27
//*****************************************************************************************
       //Перед обработкой строки проверим есть ли в списке отходы. Если нет - берем целые столешни
       //*****************************************************************************************
       НаличиеОтходовВСписке = 0;        
       Если ТЗОтходы.Количество() >= 1 Тогда
           НаличиеОтходовВСписке = 1;
           //Сообщить("В базе: "+ТЗОтходы.Количество()+ " строк с отходами!");
       Иначе
           НаличиеОтходовВСписке = 0;
           //Сообщить("В базе нет строк с отходами!");
       КонецЕсли;
       
       
       Если НаличиеОтходовВСписке = 1 Тогда    
           ШагКоличествоДеталей = 1;//переменная обозначающая количество деталей. Если количество данной детали больше или равно единицы
           
           
           ///*******************************************************************
           //цикл для обхода всех деталей и проверки их с наличием в базе отходов
           КоличествоОтобранныхКусков = 0;//количество деталей для которых в разных отходах нашлось свободное место для их порезки
           
           Пока (ШагКоличествоДеталей+КоличествоОтобранныхКусков) <= ТекСтрокаИзДетали.Количество  Цикл
                                           
               //надо вычислить влезет ли деталь на наибольший отход в списке отходов
               //********************************************************************                
               
               ТЗОтходы.Сортировать("Длина Убыв");
16 YaroslavStr
 
10.07.13
16:28
И далее в таком же духе, только комментарии по плотнее будут :)
17 YaroslavStr
 
10.07.13
16:31
(12) При каждой новой детали или изменении количества уже введенной, изменяется вид и количество отходов (динамично). То есть при каждом изменении ищется максимально выгодный раскрой.
18 samozvanec
 
10.07.13
16:32
(17) тот, кто режет, имеет тот же алгоритм по нахождению оптимального раскроя?
19 YaroslavStr
 
10.07.13
16:33
Да, он печатается на листке. Сам раскрой делается в другой программе. Я написал аналог, так как программа стара как мир, но работает на ура. При сравнении результат одинаковый.
20 YaroslavStr
 
10.07.13
16:35
(12) Функция универсальна, так что её можно использовать для любых погонных материалов любой длины.
21 YaroslavStr
 
10.07.13
16:36
Видимо придется написать обработку, что смогли потестировать
22 vde69
 
10.07.13
16:37
(17) прикинем, есть 10 заготовок по 6 метров,

надо скроить
1.5 м - 2шт
2 метра - 3шт
4 м - 2шт

сколько твоя программа посчитает если вводить по порядку ?

человек насчитает 3палки и остаток по 1 метру 2шт
23 shuhard
 
10.07.13
16:42
(15) не взлетит
24 vde69
 
10.07.13
16:43
(22)+ точнее будет так
1. 2+2+2 = 6
2. 1,5+4 = 5,5
3. 1,5+4 = 5,5

два полуметровых отхода
25 vde69
 
10.07.13
16:44
(24)или вот так


1. 2+4 = 6
2. 2+4 = 6
3. 1,5+1,5+4 = 5

один кусок в 1 метр
26 Klesk
 
10.07.13
16:47
(0) велосипед

линейное программирование
http://math.semestr.ru/simplex/optimal-cutting.php
28 YaroslavStr
 
10.07.13
16:55
29 YaroslavStr
 
10.07.13
16:57
(26) Кстати, спасибо за формулы. Искал - не мог найти подобное...
30 YaroslavStr
 
10.07.13
16:58
(25) Это неправильно.
31 vde69
 
10.07.13
16:59
(28) вот видиш херня получается, правильное решение (25) когда останется ОДИН метровый кусок...
32 vde69
 
10.07.13
17:00
(30) почему? там в последней строке ошибка вместо 4 нужно читать 2
33 YaroslavStr
 
10.07.13
17:03
1. 2+4 = 6
2. 2+4 = 6
3. 1,5+1,5+4 = 7 а не 5
34 YaroslavStr
 
10.07.13
17:10
(25) Да ты прав. Теоретически оно должно было посчитать именно по второму варианту. Поищу в чем причина... Спасибо.
35 assasu
 
11.07.13
07:00
(0) в пластиковых заводах все это уже придумано. сам видел.
обсчет изделий, расчет резки, отправка на станок.
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn