Имя: Пароль:
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) в пластиковых заводах все это уже придумано. сам видел.
обсчет изделий, расчет резки, отправка на станок.