Linux за българи: Форуми

Хумор, сатира и забава => Кошче => Темата е започната от: go_fire в Jul 17, 2018, 18:28



Титла: Софтуер за изработване на комбинации
Публикувано от: go_fire в Jul 17, 2018, 18:28
Здравейте,

Обръщам се най-вече към инжѝнерите. Ddantgwyn гледам към теб.

Трябва ми нещо, може дори на bash да е, какво да е, но нещо, което може да създава (генерира) комбинации от определени условия.

Това за мен е нова материя. Нямам идея от къде и как да започна търсене. Нямам идея, какво може да представлява. Представям си, че в работата е вложена някаква случайна величина или величини. Понеже е математика (и може би статистика), се опасявам, че решението може да се казва R или Octave. От това настръхвам.

Като да ме сърби, ама да не ща сам да се почешам, че ще заболи.

Някаква надежда?

=*=

За съжаление решението не се казва Либре офис. Мога да твърдя, че познавам Цалц поне около средно ниво и не ми идва на идея, как може да се изпълни там.

Понеже не съм най-бос по Информатика, предполагам, че това може да стане със система от рангове. Сега да не си помислите, че помня нещо от часовете в техникума?

Нищо подобно. Просто това е ръчния начин за филтриране и сортиране в споменатия Цалц. От там го знам. И понеже Цалц наподобява Excel, а Excel е щуротия на M$, то това е много обемна и бавна задача. Струва ми се невъзможна за разгръщане до много условия и много данни.

=*=

А какъв е моя случай? Прозаичен. Може да се нарече модерно-средновековен. Оказвам се в една абсурдна ситуация. Трябва да изготвя отчет за продажби. И незнайно защо е възможно на тая планета да има обект, в които всичко не влиза и излиза с barcode. И още по-малко вероятно е, как това се случва на мен.

Ситуацията е много проста. За който не е имал досег до касов апарат, това е просто един дълъг бон, който се изкарва в края на месеца.

В него има записана много проста информация. Ама проста, та проста. Като за праисторията. Вътре име група артикули и за всяка група, какво точно количество е продадено, и за колко пари общо.

И тук идва катастрофата. Защото задачата е, от това да се измислят, повтарям да се измислят, истинските продажби.

А се измислят, защото зад тази група артикули могат да седят съвсем реални сто неща, на сто различни цени и със сто различни наличности. Нямаш информация, кое точно от стоте е продадено, какво количество от него е продадено и дори на каква цена. Единственото, което знаеш е, че нещо е продадено, общата бройка на нещата, които са продадени и за колко общо пари. А ти трябва да си магьосник, врачка или извънземен, за да възстановиш фактическото положение.

Идея си нямам, как са се справяли хората преди мен с тази задача. Само съм чувал легенди за разправяне с лентички по цял месец. И вече вярвам. Днес, като видях това и бях на път да получа сърдечен пристъп. Това е една от най-големите идиотщини, които съм виждал. А подозренията ми са, че в нашата татковина е масова практика.

После, ако попитате, защо икономиката ни не върви, ето ви една причина. Ако нямаш информация, какво се случва, няма и как да го анализираш. Ако не анализираш, ти си един шибан комарджия. Цяло, билейско чудо е, че може с десетки години да съществува бизнес с подобни практики.


Титла: Re: Софтуер за изработване на комбинации
Публикувано от: Naka в Jul 17, 2018, 19:29
На мен ми стана интересно.... Може нищо да не помогна ама поне ще поспамя >:D

Значи това което майче разбрах.
Знаем:
S - общата цена
N - общият брой проданени артикули в групата (S)
s1, s2, s3, s4...... Цената на всеки артикул


ТърСим
n1, n2 n3, n4...... Бройката продадени артикули от всеки вид.

Това ли е заданието???

Ако е това тогава
S=n1*s1 + n2*s2 + n3*s3 + n4*s4 +....
N=n1 + n2 + n3 + n4 +...
N  и   n1 n2 n3 n4.... Са целочислени. Не може да продадеш 1.3 артикула

Пс има още дапиша... Така ли е засега?


Титла: Re: Софтуер за изработване на комбинации
Публикувано от: go_fire в Jul 17, 2018, 19:37
Мъничко по-различно.

Знаем, за колко пари общо са продадени стоки. 30 бр. за 300 лв. Но от това не следва, че сме продали 30 неща по 10 лева бройката. Може да сме продали 1 за 10, 2 за 5, 10 по 2 лева и 10 по 20 лв. И всякакви други комбинации.

Точно това ми е проблема. Да имам нещо, което може да ми каже възможни комбинации, без да се налага на ръка да ги сборувам и измислям. А тук слагаме и още едно ограничение. Нямаме безкрайни бройки. От всяко нещо имаме точно определени. Например в примера горе двете неща по 5 лв., може да имаме само една налична бр. Значи не можем да продадем две. Трябва да измислим нова комбинация.

СПАМА Е ВИНАГИ ДОБРЕ ДОШЪЛ!!!


Титла: Re: Софтуер за изработване на комбинации
Публикувано от: stealth01 в Jul 17, 2018, 19:41
go_fire, здрасти! ;D

Има фирми, където всичко си се води, както трябва. Но неофициално. Официално артикулите се обединяват в няколко общи групи и пада мъглата. В последствие разбрах и каква точно е целта, но това е друга тема.

А ако трябва да се стъкмява всичко за всички реални артикули, които са по-сериозно количество (1000, 10000...)... аз дори не бих почвал да го мисля. Вероятно е възможно да се направи нещо де, но само ако има много подобни фирми, от които можеш да вземеш неброени пари... Иначе е много работа за нищо.

П.П. Аааа... ама ти само продажбите на каса ли ще измисляш? Това е по-лек частен случай :)


Титла: Re: Софтуер за изработване на комбинации
Публикувано от: Naka в Jul 17, 2018, 19:45
Мъничко по-различно.

Знаем, за колко пари общо са продадени стоки. 30 бр. за 300 лв. Но от това не следва, че сме продали 30 неща по 10 лева бройката. Може да сме продали 1 за 10, 2 за 5, 10 по 2 лева и 10 по 20 лв. И всякакви други комбинации.

От един арткул или говориш за различни артикули?
Да не искаш да кажеш че един артикул може да е продаден на някого с отстъпка и цената на който му е продан не съответства на цената под която е заведен в склада. - малките s-чета.

Ако етака гориш. Щях дати предложа да извъртиш един  цикъл(и)

S=n1*s1 + n2*s2 + n3*s3 + n4*s4 +....

 и евентуално да намериш много възможни решения. (почти го измислих ::))
s1, s2, s3, s4...... Константи ли са?


Титла: Re: Софтуер за изработване на комбинации
Публикувано от: ddantgwyn в Jul 17, 2018, 20:18
Здравейте,

Обръщам се най-вече към инжѝнерите. Ddantgwyn гледам към теб.

Трябва ми нещо, може дори на bash да е, какво да е, но нещо, което може да създава (генерира) комбинации от определени условия.

Това за мен е нова материя. Нямам идея от къде и как да започна търсене. Нямам идея, какво може да представлява. Представям си, че в работата е вложена някаква случайна величина или величини. Понеже е математика (и може би статистика), се опасявам, че решението може да се казва R или Octave. От това настръхвам.

Като да ме сърби, ама да не ща сам да се почешам, че ще заболи.

Някаква надежда?

Дискретна математика, респективно комбинаторика. Но определено е математика ::)

Искаш да направиш някакъв набор от артикули, сумата от цените на които да дава някаква точно определена крайна сума. Това ли е задачата?


Титла: Re: Софтуер за изработване на комбинации
Публикувано от: ddantgwyn в Jul 17, 2018, 20:26
Мъничко по-различно.

Знаем, за колко пари общо са продадени стоки. 30 бр. за 300 лв. Но от това не следва, че сме продали 30 неща по 10 лева бройката. Може да сме продали 1 за 10, 2 за 5, 10 по 2 лева и 10 по 20 лв. И всякакви други комбинации.

Да не искаш да кажеш че един артикул може да е продаден на някого с отстъпка и цената на който му е продан не съответства на цената под която е заведен в склада. - малките s-чета.

Доколкото схващам, идеята е от n на броя артикули с m на брой цени да се сглоби такъв набор от n*m, който да съвпада с някаква крайна стойност. Като един артикул трябва да бъде продаван по повече от веднъж :)

Тогава може би е по-добре да се работи направо с цените.


Титла: Re: Софтуер за изработване на комбинации
Публикувано от: go_fire в Jul 17, 2018, 20:32
Точно така са заведени и в склада. Какво нещо е, на каква цена. Да речем код 101001 Това означава хляб (101) за 1 лев (001). Не е хранителен магазин, но за онагледяване.

Иначе и аз забелязах, че нещо заведено с продажна цена 3,50 да речем може да бъде продадено, за 3; 3,33; 3,50; 4,00 според клиента, отстъпката и закупеното количество. Само като си помисля за това и ме заболява глава.

Но преди да решавам тоя въпрос, поне да реша основния. Да имам някакви, поне някакви полуготови комбинации, отколкото да изписвам листи по бабашкия метод да натъманявам нещо и да преглеждам десетки страници с наличности.


Титла: Re: Софтуер за изработване на комбинации
Публикувано от: Naka в Jul 17, 2018, 20:33
Цитат
Доколкото схващам, идеята е от n на броя артикули с m на брой цени да се сглоби такъв набор от n*m, който да съвпада с някаква крайна стойност. Като един артикул трябва да бъде продаван по повече от веднъж :)
Ами аз същото написах

S=n1*s1 + n2*s2 + n3*s3 + n4*s4 +....

Примерно върти един цикъл по всички възможни комбиации на n1, n2, n3, n4
Смята се сумата дали съвпада на S
Ако съвпада (или е много близка) значи това   n1 n2 n3 n4    едно от възможните решения
Ако не съвпада се продължава нататък

Междувременно се отхвърлят всичи комбинации за коитто
  n1 +n2 +n4 +n4 != N   т. Е на общият брой продажби.


Титла: Re: Софтуер за изработване на комбинации
Публикувано от: go_fire в Jul 17, 2018, 20:37
А, да. Продажбите по банка (но само в общия случай) имам, какво точно е купено, какви бройки и на каква цена. И там се намират фактури, в които нищо не е уточнено, но в повечето случаи имам инфо. Но продажбите в брой са много, много повече от тези по банка и това не ми помага особено.

S1, S2, SN цени ли са? Да речем, че са константи, защото ми става лошо, като се замисля и за това.


Титла: Re: Софтуер за изработване на комбинации
Публикувано от: remotexx в Jul 17, 2018, 20:43
Подсказка
http://putridparrot.com/blog/the-vending-machine-change-problem/

https://en.wikipedia.org/wiki/Change-making_problem

като не забравяме че има и наличност т.е. не може да продадеш 100 х 1 лв. при положение че към тая (предна) дата е имало налични само 50 бр.

Проблема си е баш тоя от линка - даже там имат варианти - 1) с мин бр. 2) с макс бр. и т.н. единственото което няма в линка е ако исккаш/знаеш напр. твърдо че някои неща са продадени , да ги зачукаш тях да не ги маха т.е. да почва от някакво знайно състояние и вече да работи с наличностите е склад

..иначе то най-лесно , ако имаш артикул по 1 ст. - само изписваш необходимия бр. ст. ... т.е. бройки :-)

П.П. ето жив /нагледен/ пример - не знам само колко време ще стои на тоя сайт (щото е безплатен) т.е. който иска да копира кода веднага (ще върви и на .Net Core а то е безплатно - също като джава) - сори ама от бързане нямам време за друго

https://dotnetfiddle.net/GAWqFw

Алгоритъна е алчен и ще гледа да минимизира бройките т.е. първо ще блъска по-скъпите неща докато може...

П.П.П. за който няма (и/ли не му се инсталират) /Куорове, жаби и пр./ може да ги пуска напараво от тоя (и подбните му) сайт... за .. до няколко хил. артикула няма да направят проблем ..предполагам  >:D


Титла: Re: Софтуер за изработване на комбинации
Публикувано от: Naka в Jul 17, 2018, 20:45
Ами да цени са. Да кажем че са константни цени.  [_]3 [_]3
Схвана ли идеята?

Например. За четири артикула товаможе да стане с четери вложени цикикъла един в друг по n1 n2 n3 n4.

n1
   n2
      n3
          n4


Като всяко n върти от 1 до бройката в склада.
Както каза това е още едно ограничение защото не може да продадеш повече от единартикул от колкото имаш в склада. Но това не е ограничение ами е голямо опростяване щото цикъла става по малък и ограничен.


Титла: Re: Софтуер за изработване на комбинации
Публикувано от: ddantgwyn в Jul 17, 2018, 20:45
Цитат
Доколкото схващам, идеята е от n на броя артикули с m на брой цени да се сглоби такъв набор от n*m, който да съвпада с някаква крайна стойност. Като един артикул трябва да бъде продаван по повече от веднъж :)

Ами аз същото написах

Ама аз не те упреквам.

Иначе задачата си плаче за дипломна работа на някой магистър от ФМИ (примерно) :D


Титла: Re: Софтуер за изработване на комбинации
Публикувано от: Naka в Jul 17, 2018, 21:14
Например. За четири артикула товаможе да стане с четери вложени цикикъла един в друг по n1 n2 n3 n4.

n1
   n2
      n3
          n4
           n1 +n2 +n4 +n4 != N

           n1*s1 + n2*s2 + n3*s3 + n4*s4
           равно ли е (прилича ли) на S
         


Като всяко n върти от 0 до бройката в склада.
В най вътрешният първо отхърляш всични невъзможни комбинации за N.
След това смяташ сумата S. Ако прилича на S изпринтваш n1, n2, n3, n4

Така си ги представям нещата на първо четене. Но понятие си нямам какво би станало ако има случайна величина някъде и как трябва да се подходи в този случай?


Титла: Re: Софтуер за изработване на комбинации
Публикувано от: remotexx в Jul 17, 2018, 21:34
Аз не разбрах
това няма ли да свърши работа
или... ще искаме първо от по-евтините артикули да се отървем

https://dotnetfiddle.net/GAWqFw

или сега ще искаме е динамично програмиране - щото напр. накрая (на месеца) установяваме че сме продали 100 бири обаче индивидуално фактурирани само 50 т.е. можем да разпърснем по "общите"-като сума фактури макс. 50 бири - макар че, това става и с гормия код - само задаваш в касичката 50 монети със ст-т на една бира като налични т.е. Coins ще съдържа само едичнни цени и налични бр, (но само налични за разпределяне - т.е. след като си установил че липсват 100 бири ама 55 имаш "поименно" фактурирани някъде, ще вкараш като налични 45)

иначе опираме до още по-сложен проблем (с баща ми бояджията)
https://en.wikipedia.org/wiki/Partition_problem
http://www.techiedelight.com/k-partition-problem-print-all-subsets/
https://en.wikipedia.org/wiki/Knapsack_problem


Титла: Re: Софтуер за изработване на комбинации
Публикувано от: go_fire в Jul 17, 2018, 21:36
Почва вече да ме цепи глава, колко съм тъп. Поне знам, какво ще правя събота и неделя. Ще препрочитам темата и ще въртя цикли в Пърл (най-много ми е по сърце).

Ще погледна и „вендинга“ на Ремо, че сефте чувам за това.

Хубавото на продажбите в брой е, че „Отчет по продажби“ се вади последния ден на месеца и съдържа всичко от месеца. Демек може да се ползва всичко налично в склада, защото никой не знае, освен, какво е продадено и кога е продадено.

Ако изобщо има нещо хубаво в това да правиш имитация на отчетност.


Титла: Re: Софтуер за изработване на комбинации
Публикувано от: go_fire в Jul 17, 2018, 21:40
Remo e писал заедно с мен.

Я малко раздухай. Че не разбирам от Windows. Това поне на външен вид ми прилича на C#. Това доколкото знам е полу-интерпретуем език. Сиреч трябва да се транслира до псевдо-машинен, двоичен код.

Има ли начин това да се случи без Studio?

Едно време M$ раздаваха безплатен компилатор за C++, който работеше от конзола. Има ли такъв за .Net Framework?


Титла: Re: Софтуер за изработване на комбинации
Публикувано от: Naka в Jul 17, 2018, 21:44
Когато не стават сметките умножаваш по коефициента на Нагласенко и много олеква :D [_]3
И мен ме заболя главата.


Титла: Re: Софтуер за изработване на комбинации
Публикувано от: remotexx в Jul 17, 2018, 21:48
Remo e писал заедно с мен.

Я малко раздухай. Че не разбирам от Windows. Това поне на външен вид ми прилича на C#. Това доколкото знам е полу-интерпретуем език. Сиреч трябва да се транслира до псевдо-машинен, двоичен код.

Има ли начин това да се случи без Studio?

Едно време M$ раздаваха безплатен компилатор за C++, който работеше от конзола. Има ли такъв за .Net Framework?

Има си всичко - ама що да инсталираш локално като може и направо на сайта
https://dotnetfiddle.net/

за малки сметки/фирми като вашата едва ли ще има проблем, няма да ви усетят даже
Само си копирай кода още сега, че не знам колко ще седи там (безплатната версия)

иначе това е C# - би трябвало да върви и на .Net Core, а то е напълно безплатно

За да нямаш (имаш по-малко) проблеми винаги първо започвай с най-големите суми/фактури и завършвай с най-малките т.е. тогава ще са ти останали най-малките деноминации ама пък с тях всичко можеш да удовлетвориш е... верно ще излгежда леекинко подозрително последната/ните фактури с по 100 неща за по 1 ст. а първите с по 1 нещо за по 100 лв., ама пак по-добре така отколкото ако почнеш с малките и свършиш по-дребните купюри и накрая дойде едно нещо забравено за 1 ст. а пък ти имаш само 100 лв. на цяло  ;D

..за който го интересуа теорията
https://en.wikipedia.org/wiki/Change-making_problem


и за всеки сл. - мин. пример ...ако случайно речеш да си дръпнеш .Нет Кор 2.х локално
https://www.microsoft.com/net/download/dotnet-core/2.0


Код
GeSHi (C#):
  1. using System;
  2. using System.Collections.Generic;
  3.  
  4. namespace VendingM
  5. {
  6.    public class Program
  7.    {
  8.        public static void Main(string[] args)
  9.        {
  10.            List<Coin> coins = new List<Coin>
  11.                    {
  12.                        new Coin(50, 2),
  13.                        new Coin(20, 1),
  14.                        new Coin(10, 4),
  15.                        new Coin(1, int.MaxValue),
  16.                    };
  17.  
  18.            IList<Coin> results = VendingMachine.Calculate(coins, 98);
  19.            foreach(Coin c in results)
  20.                Console.WriteLine(""+c.Denomination + " x " + c.Count);
  21.            Console.WriteLine("Press [Enter]...");
  22.            Console.ReadLine();
  23.        }
  24.    }
  25.  
  26.    public class Coin
  27.    {
  28.        public Coin(int denomition, int count)
  29.        {
  30.            Denomination = denomition;
  31.            Count = count;
  32.        }
  33.  
  34.        public int Denomination { get; set; }
  35.        public int Count { get; set; }
  36.    }
  37.  
  38.    public static class VendingMachine
  39.    {
  40.        public static IList<Coin> Calculate(IList<Coin> coins, int change, int start = 0)
  41.        {
  42.            for (int i = start; i < coins.Count; i++)
  43.            {
  44.                Coin coin = coins[i];
  45.                // no point calculating anything if no coins exist or the
  46.                // current denomination is too high
  47.                if (coin.Count > 0 && coin.Denomination <= change)
  48.                {
  49.                    int remainder = change % coin.Denomination;
  50.                    if (remainder < change)
  51.                    {
  52.                        int howMany = Math.Min(coin.Count,
  53.                            (change - remainder) / coin.Denomination);
  54.  
  55.                        List<Coin> matches = new List<Coin>();
  56.                        matches.Add(new Coin(coin.Denomination, howMany));
  57.  
  58.                        int amount = howMany * coin.Denomination;
  59.                        int changeLeft = change - amount;
  60.                        if (changeLeft == 0)
  61.                        {
  62.                            return matches;
  63.                        }
  64.  
  65.                        IList<Coin> subCalc = Calculate(coins, changeLeft, i + 1);
  66.                        if (subCalc != null)
  67.                        {
  68.                            matches.AddRange(subCalc);
  69.                            return matches;
  70.                        }
  71.                    }
  72.                }
  73.            }
  74.            return null;
  75.        }
  76.    }
  77. }
  78.  


Титла: Re: Софтуер за изработване на комбинации
Публикувано от: go_fire в Jul 17, 2018, 21:51
Служебните ни компютри (от съображения за сигурност), нямат достъп до Интернет. Това няма да мога да го изпълнявам на работа.

Макар по начало плана ми да беше на работа да събера данните, а вкъщи да се опитам някак си да ги скалъпя.

п.п. Клиентите ни наистина са малки, направо мизерни. Такива са и таксите ни. От което следва, че и заплатите не са европейски. Но това не означава, че работим малко.

Това не е първия склад, който ми поверяват. Но предишните имаха от няколко десетки до няколко стотин позиции. Това означава до десетина възможни комбинации, които могат да се правят ad hock.

Този има 4-5 хиляди позиции, които нарастват всеки месец (появява се нова стока на нови продажни цени, какво да правиш, инфлация). Това значи стотици комбинации, ако не и хиляди. Не е възможно да ги нацелваш на момента с молив на лист хартия.


Титла: Re: Софтуер за изработване на комбинации
Публикувано от: remotexx в Jul 17, 2018, 22:14
не само комилатора, целия феимуърк е безплатен и има версия за много платформи
кеф ти напрао от конзола, кеф ти през свободния редактор/IDE VisualStudio Code - нали сега имаш як комютър - можеш да си го позволиш.
..макар че той кода доволно прост - може да го пренапишеш на всичко вкл. С, С++, Пърл, Пхп и т.н.

https://www.microsoft.com/net/learn/get-started/linux/

избираш от списъка някоя поддържана дистрибуция и следваш стъпките

към края ако искаш да си караш само на една(та) гола конзола може и да прескочиш последните 2 точки
4. Get an editor
5. Keep learning

ако ли не - препоръчвам инсталиране и на IDE и добавката към него за C#
https://code.visualstudio.com/Download?wt.mc_id=DotNet_Home
https://marketplace.visualstudio.com/items?itemName=ms-vscode.csharp

и още примери от официалната страница
https://docs.microsoft.com/en-us/dotnet/core/get-started?tabs=windows


Титла: Re: Софтуер за изработване на комбинации
Публикувано от: go_fire в Jul 17, 2018, 22:17
Май съм по-навит, ако ще е Dot Net да е на виртуална машина. Няма да се учудя, Core да го има в Дебиан или поне някъде да има готови пакети за Дебиан.

Но от един момент нататък решението, което избистря (по-скоро, което вие туко що избистрихте и ми дадохте сложна теория за четене за една година напред), трябва да стане production. Сиреч нещото трябва да се инсталира в крайна сметка на Windows. А все има някакви разлики между Core и Full.

Защото първите опити, мога да ги правя от вкъщи, но след това ще се налага да го правя всеки месец. Не мога да си позволя непрестанно да работя от вкъщи. Не, че не го правя и в момента, но семейството ми се сърди, че не им обръщам внимание, а само гледам някакви таблици с цифри.


Титла: Re: Софтуер за изработване на комбинации
Публикувано от: remotexx в Jul 17, 2018, 22:23
Май съм по-навит, ако ще е Dot Net да е на виртуална машина. Няма да се учудя, Core да го има в Дебиан или поне някъде да има готови пакети за Дебиан.

Но от един момент нататък решението, което избистря (по-скоро, което вие туко що избистрихте и ми дадохте сложна теория за четене за една година напред), трябва да стане production. Сиреч нещото трябва да се инсталира в крайна сметка на Windows. А все има някакви разлики между Core и Full.

Защото първите опити, мога да ги правя от вкъщи, но след това ще се налага да го правя всеки месец. Не мога да си позволя непрестанно да работя от вкъщи. Не, че не го правя и в момента, но семейството ми се сърди, че не им обръщам внимание, а само гледам някакви таблици с цифри.

Няма нужда от виртуалка!

Не се притеснявай, накрая само му даваш deploy target - Windows всичко е ток и жица, че и безжично даже  ;D
и обратното става (въобще с .Нет Кор всичко става) от Уиндос да зададеш deploy target Linux и си генерира всичко необходимо, даже мисля имаше и опция да е без runtime т.е. да си е standalone executable и съм го виждал да слага вътре бая големшки библиотеки (ама тогава тества под Уин да таргетирам Линукс и си тръгна на линукса без проблеми, ама беше просто приложение, също като това по-горе)

и за другите, който му е интересно
https://docs.microsoft.com/en-us/dotnet/core/deploying/
Framework-dependent deployments (FDD)
Self-contained deployments (SCD)

и преди да са заваляли оплакванията (и оправданията) - ама не може ли през.. оная табота.. конзолата де
кеф ти от конзола
https://docs.microsoft.com/en-us/dotnet/core/deploying/deploy-with-cli
кеф ти през ..оная другата работа... аа-а-а- IDE-то де
https://docs.microsoft.com/en-us/dotnet/core/deploying/deploy-with-vs


https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-publish?tabs=netcore21


Титла: Re: Софтуер за изработване на комбинации
Публикувано от: Naka в Jul 17, 2018, 22:28
Какво означава 4-5 хиляди позиции? Артикула?
Иначе в примера който дадох, има малка грешка. Циклите трябва да въртят от 0 до складовата наличност - щото може от някой артикул из0бщо
Да няма продажби. А не от 1...

Но подозирам че в тези проблеми колкото повече входни данни има (повече артикули). Толкова повече решения ще има. да не са милярди?

Определено не ми се чете теория. Искам някой да ми го смеле и да го каже с две приказки.


Титла: Re: Софтуер за изработване на комбинации
Публикувано от: remotexx в Jul 17, 2018, 22:31
кой каза Дебян
https://www.microsoft.com/net/learn/get-started/linux/debian9

както казах избира се от падащ списък - има даце Сузе

А ако имаш жица - не ти и трябва инсталация
https://www.microsoft.com/net/learn/in-browser-tutorial/1

мани другото ами сега с тия новите компилатори и вирусите ще идват на изходен код...


Титла: Re: Софтуер за изработване на комбинации
Публикувано от: go_fire в Jul 17, 2018, 22:46
Какво означава 4-5 хиляди позиции? Артикула?
Иначе в примера който дадох, има малка грешка. Циклите трябва да въртят от 0 до складовата наличност - щото може от някой артикул из0бщо
Да няма продажби. А не от 1...

Но подозирам че в тези проблеми колкото повече входни данни има (повече артикули). Толкова повече решения ще има. да не са милярди?

Чак милиарди не са. 4-5 хил. означава, че има около (под) 400 вида стоки. Те от своя страна в касовия апарат са обединени до около 40. Всичко останало е вариация на тема продажна цена.

Складовата програма, която се ползва е тъпа и стара. При нея всичко е плоско. Сиреч трябва да съм групирал нещата извън нея и на нея да дам готови данни.

И понеже пак от Ремо знам за Autohotkey, а последния може да работи със CSV, то в идеалния вариант ще го докарам до такъв изход и няма да въвеждам нищо въобще.

А колко по-лесен щеше да е живота, ако ползвахме правилно програмно обезпечение, а клиентите ни не бяха галфони, които водят тефтерна отчетност???

=*=

Започнах да позачитам теорията, която е дал Ремо. На първо четене, реализацията изобщо не я схващам. Но срещам познати думички като алчни алгоритми и най-малка възможна бройка. Последното ще ми е особено полезно, ако в крайна сметка вкарвам готовия резултат на ръка. Тъпата програма не е дурако-устойчива. Миг загуба на концентрация и следва затъркване на базата, възстановяване от архив и въвеждане на ново всичко отначало. Или поне от началото на месеца.

=*=

Интересно, че аз в началото си го представях съвсем някакво друго. Например да следя, кое е влязло последно да го изпиша първо или обратно да изпиша най-старото. Или да следя къде има повече оборот. Затова споменах и статистика в началото.

Едно е сигурно. Не трябва да свалям бройките до нула. Но не мога и да оставям всичко на по една бройка. Работата е там, че като изкарвам инвентаризиционен списък, той трябва да е дълъг. А за да е дълъг, в него трябва да има наличности. Което е точно обратно на натурата ми. Аз не обичам да държа салда и ги закривам. А тук нарочно трябва да имам такива.


Титла: Re: Софтуер за изработване на комбинации
Публикувано от: remotexx в Jul 18, 2018, 02:16
Тъкмо си мислех че почвам да разбирам.. и ти пак ми омота понятията, какво общо имат разни наличности и натури и т.п. аз доколкото разбрах накрая на месеца имаш едни "общи" фактури дето нямат редове, а е продаван по повече от един артикул и ти се опитваш да нагласиш там разликата между наличното в/изписаното от склада (за месеца) и изписаното по правилните, поредово фактури и търсиш алгоритъм който да го разпредели точно.

Ако числата съвпадат точно тогава ти трябва к-партишънинг алгоритъма и то с неправилни интервали, който е доста тежък и иска динамично програмиране отгоре на всичко, а и както сам каза, имало и отстъпки, отделно цени се променяли незнайно как през месеца, така че забрави който й да е алгоритъм да сработи...

За по лесно работи си с коефициент на Нагласенко
т.е. предлагам следното
1. правиш сметката какво е излязло от склада - като бр.
2. изваждаш от горната сума бройките по фактури - само тези които имат редове и описват поименно
3. вече имаш Сума.бр.Остатък.Склад.неописан.поредово.нийде и Сума.пари.по.всички.общи.фактури (такива без редове) и целта е да се разхвърлят бройките по фактури с някакви отстъпки/надценки за да съвпаднат сумите - нали така (аз поне така разбрах)

- сега при положение, че напр. клиент1 е имал отстъпка 20% а клиент2 30% поради разликата в закупеното количество и понеже ситуацията с отстъпките е подобна (не се знае кой с колко) - няма точен алгоритъм - само с Нагласенко
като най-добро приближение е следното
4. подреждаш всички кофти фактури по сума в намаляващ ред
5. обръщаш бр. от т.1 в пари за 1 бр. (ср. притеглена сума за единица или каквото там ползвате в склада) и различните цени за 1 бр. за ти Coins масива от кода по-горе т.е. вкарваш ги всичките
6. пускаш на алгортъма най-скъпата кофти фактура - май ше трябва да се модифицира да прехвърля с малко (ако няма да има точно съвпадение) щото той в текущия вид търси точно "ресто"

..или ако искаш с калкулатора (верятно колегите ти така са го правили) вземаш най голямата деноминация и още и още и докато мачва, после от оставащите пак най-голямата и така докато запълниш сумата или я прехвърлиш с малко и излишъка го даваш като намаление

те така... сортирането и изпълнението от най-гояма към най-малка сума ти помага да не останеш накрая само с фактури с малки суми а продукти/монети с големи деноминации щото някой неща не могат да се продават на по половин бр.  ;D


Титла: Re: Софтуер за изработване на комбинации
Публикувано от: jet в Jul 18, 2018, 03:05
Аз бих го направил със симулация на реален склад/магазин, само, че на бързи обороти.
Вкарвам началните наличности и цени в една база (например Марийка) като за всеки артикул също задавам и за каква сума трябва да съм продал (нали това е по задание) и почвам с цикъл да имитирам реални клиенти, но с генератор на случаини числа - грабвам случаен артикул със случаен брой - пиша в един лог какво съм направил стига да е =< от наличността и продадената сума да е също =< заложената докато продадените суми станат 0.
От получения лог мога да ти вадя каквито си искам справки и разрези, както и групирания и експорти.
Обяснението стана малко куцо, ама става малко като брут форс.


Титла: Re: Софтуер за изработване на комбинации
Публикувано от: 4096bits в Jul 18, 2018, 07:04
Няколко реда от примерен csv? Какво включва? Например: артикул,наличност,цена?


Титла: Re: Софтуер за изработване на комбинации
Публикувано от: go_fire в Jul 18, 2018, 08:09
Джет и аз нещо такова си го представях в началото. Тогава опирам единствено до това, колко случаен да е всеки фактор, така, че да имам „нормално разпределение“ на стоката в края. Сиреч не от едно да съм продал много, а от друго нищо. Ето тук според мен е ролята на съветските учени Нагоденко и Нагласенко.

=*=

4 кб, Autohotkey прави нещо много просто. То просто щрака по екрана и дава вход от клавиатура. Подобна симулация има вградена в XWindow с цел за изпитания.

Аутохоткей обаче е създаден с друга цел. Понеже Windows по подразбиране е „non scriptable“ то се търсят начини за автоматизация. И понеже почти всичко е графична програма, то затова се ползват и толкова странни методи.

В моя случай (скоро става почти година) идеята е да избегна ползването на едно конкретно програмче. Защото то е писано за съвършени хора във времената, когато мъжете бяха мъже, жените жени, а педалите правеха свирки по кенефите на пияни хора.

И понеже в никакъв случай не съм безгрешен, първоначално мислех да го избегна, като пиша направо в базата през ел. таблица. Тогава Ремо (на лични) ме охлади, че вътре сигурно е пълно с изчислими полета (както се и оказа в последствие), а закръглянията няма шанс да ги докарам същите. И той я измъкна от някъде тази програма.

С напредване на кариерата ми, се оказа, че в онази програма не можеш да вкарваш неща неподготвен. Първо трябва си сигурен, какво точно ще вкараш и след това да го вкараш. Колежките ми са възпитавани в старата школа (макар сред тях да има двадесет годишни) и правят нещото на ръка, на лист, с елка и молив.

Аз обаче съм роден след седемдесетте години на миналия век, сиреч по времето, когато вече е имало електронни таблици. И поради тази причина избягвам да правя, какво да е на ръка.

И така опряхме до случая, в който ми повериха най-тежкия склад. Този склад преди е правен от две жени в продължение на месец. Забележи били са млади, нераждали и бързи като в светкавици. Аз за да докарам заплатата си, трябва да го правя за няколко дни, сам. Аз съм бавен в мисълта, бавен в ръцете, изобщо спрял еволюцията си. И да спя там, все тая. Времената са се променили, но обема работа не е.

Та понеже се отклоних. Въпросния cvs просто представлява списък, какво след какво трябва да се щракне. Сиреч, когато имам готови за въвеждане данни, е много лесно между тях да вкарам с vba вълшебни думички като <tab> и <enter>, самите данни да обвия в кавички и да стане магия.

=*=

Ремо! ТИ ЖИВЕЕШ В НОРМАЛНИЯ СВЯТ! Добре дошъл в реалния. Или по-точно грозната реалност в милата ни татковина. Тук нищо не е нормално. Добре, програмистите ни са нормални, но те са изключение.

Въпросния обект съдържа десет или двадесет хиляди артикула. Никой не знае точната бройка. Защото артикулите в нашата база са разделени по цени, но зад това спокойно се крият от два до двадесет (почти) подобни (незадължително) взаимозаменими артикула.

Никой не знае реалните наличности от нищо там. Понеже това не са храни (не е развалима стока) и не е техника (не остарява морално), то няма проблем нещо да седи с години. Единствения проблем е, че имаме пишман бизнесмен, който вярва, че прави нещо.

За да се установи, какво има, то трябва да се направи инвентаризация в рамките да речем на месец. Не съм убеден, че последните двадесет години там е правена дори една инвентаризация. Какво остава да се прави всеки месец. Шибания Кауфланд прави всеки месец инвентаризация във всеки свой обект (имат над 50).

=*=

Не ме интересува, какво пише на фактурите в брой. Те влизат в бройката на касовия апарат. А и в 99,999% от случаите там пише – продадени стоки. Това е така, защото СЕ ПИШАТ НА РЪКА!

Още ли си жив? Защото аз не съм. Имаш 20 хил. артикула, с обща наличност, която не мога да си предсавя (защото е нормално от едно нещо да са от няколко десетки до няколко стотици бройки), нямаш компютър и пишеш фактури от кочан!!! Аз говоря за баркодове. Нещо съм слънчасал.

Така опираме до ситуация, в която имаме точна, пълна, ясна, изчерпателна информация, какво е влязло в склада, но никой, вкл. собственика няма никаква идея, какво е излязло. Знае се приблизително, ама толкова приблизително, че чак е отдалечително.

Добре, как аджеба се правят заявки?!

Дръж се да не паднеш. Шефе, а бе еди кое си ми намалява. Ей онова ми го търсят (ама това се сещаш е субективно). Или шефа просто е видял нещо на тънкаж (прѝмоцийка) и оти да не го купи. Е, ама сега трябва и да го продаде. Подробности.

А аз някак си трябва да докарам цялото безумие до това, че еди кой си код са продадени еди колко си бройки за еди колко си пари.

Чакай момент! Това не беше ли същата информация, която се съдържа в касовия бон на края на месеца??? Ами беше. Само дето трябва от 40 неща да ги разпръсна на 4 000.

После питай, защо работим на никакви такси срещу смешни заплати. С такива клиенти е цяло чудо, че изобщо успяват да съберат пари за такса.

Описания случай е най-тежкия ни случай, но и другите не са по-стока.


Титла: Re: Софтуер за изработване на комбинации
Публикувано от: Naka в Jul 18, 2018, 10:31
Въпрос - Крайната сума трябва ли да съвпада с точност до стотинка?

Между другото се сещам за един хинт.
Ако крайната цифра (в цената) е 1 или 9 то при събирането последната цифра на сумата може да приема всяка една цифра 0,1,2,3,4,5,6,7,8,9.

за 1 е ясно. Не случайно имаме 1 стотинка монета. За 9 обаче не е.
например:

1.49лв *1 = 1.49
1.49 * 2 = 2.98
1.49 * 3 = 4.47
1.49 * 4 = 5.96
1.49 * 5 = 7.45
1.49 * 6 =  8.94
1.49 * 7 = 10.43
1.49 * 8 = 11.92
1.49 * 9 = 13.41
1.49 * 10 = 14.90
1.49 * 11 = 16.39

Това не е така с числа завършващи на другите цифри. Например 1.45 както и да го събираме все ще получаваме кратно на 0 или 5.

Мисълта ми е такива цени завършващи на 1 или 9 (1.41 или 1.49) и малки по стойност да се използват във вътрешните цикли. Така по лесно ще може да се наглася поне крайната стотинка >:D





 


Титла: Re: Софтуер за изработване на комбинации
Публикувано от: 4096bits в Jul 18, 2018, 10:37
Имаше едни задачи, как в камион с определен обем товарно пространство или тонаж, да се натовари стока с оптилно отношение към обема/теглото на товара към цената. Ма не помня, как се правеше. Иначе може да се стъкми нещо с machine learning, ма и това не съм правил.


Титла: Re: Софтуер за изработване на комбинации
Публикувано от: ddantgwyn в Jul 18, 2018, 10:49
Джет и аз нещо такова си го представях в началото. Тогава опирам единствено до това, колко случаен да е всеки фактор, така, че да имам „нормално разпределение“ на стоката в края. Сиреч не от едно да съм продал много, а от друго нищо. Ето тук според мен е ролята на съветските учени Нагоденко и Нагласенко.

=*=

4 кб, Autohotkey прави нещо много просто. То просто щрака по екрана и дава вход от клавиатура. Подобна симулация има вградена в XWindow с цел за изпитания.

Аутохоткей обаче е създаден с друга цел. Понеже Windows по подразбиране е „non scriptable“ то се търсят начини за автоматизация. И понеже почти всичко е графична програма, то затова се ползват и толкова странни методи.

В моя случай (скоро става почти година) идеята е да избегна ползването на едно конкретно програмче. Защото то е писано за съвършени хора във времената, когато мъжете бяха мъже, жените жени, а педалите правеха свирки по кенефите на пияни хора.

И понеже в никакъв случай не съм безгрешен, първоначално мислех да го избегна, като пиша направо в базата през ел. таблица. Тогава Ремо (на лични) ме охлади, че вътре сигурно е пълно с изчислими полета (както се и оказа в последствие), а закръглянията няма шанс да ги докарам същите. И той я измъкна от някъде тази програма.

С напредване на кариерата ми, се оказа, че в онази програма не можеш да вкарваш неща неподготвен. Първо трябва си сигурен, какво точно ще вкараш и след това да го вкараш. Колежките ми са възпитавани в старата школа (макар сред тях да има двадесет годишни) и правят нещото на ръка, на лист, с елка и молив.

Аз обаче съм роден след седемдесетте години на миналия век, сиреч по времето, когато вече е имало електронни таблици. И поради тази причина избягвам да правя, какво да е на ръка.

И така опряхме до случая, в който ми повериха най-тежкия склад. Този склад преди е правен от две жени в продължение на месец. Забележи били са млади, нераждали и бързи като в светкавици. Аз за да докарам заплатата си, трябва да го правя за няколко дни, сам. Аз съм бавен в мисълта, бавен в ръцете, изобщо спрял еволюцията си. И да спя там, все тая. Времената са се променили, но обема работа не е.

Та понеже се отклоних. Въпросния cvs просто представлява списък, какво след какво трябва да се щракне. Сиреч, когато имам готови за въвеждане данни, е много лесно между тях да вкарам с vba вълшебни думички като <tab> и <enter>, самите данни да обвия в кавички и да стане магия.

=*=

Ремо! ТИ ЖИВЕЕШ В НОРМАЛНИЯ СВЯТ! Добре дошъл в реалния. Или по-точно грозната реалност в милата ни татковина. Тук нищо не е нормално. Добре, програмистите ни са нормални, но те са изключение.

Въпросния обект съдържа десет или двадесет хиляди артикула. Никой не знае точната бройка. Защото артикулите в нашата база са разделени по цени, но зад това спокойно се крият от два до двадесет (почти) подобни (незадължително) взаимозаменими артикула.

Никой не знае реалните наличности от нищо там. Понеже това не са храни (не е развалима стока) и не е техника (не остарява морално), то няма проблем нещо да седи с години. Единствения проблем е, че имаме пишман бизнесмен, който вярва, че прави нещо.

За да се установи, какво има, то трябва да се направи инвентаризация в рамките да речем на месец. Не съм убеден, че последните двадесет години там е правена дори една инвентаризация. Какво остава да се прави всеки месец. Шибания Кауфланд прави всеки месец инвентаризация във всеки свой обект (имат над 50).

=*=

Не ме интересува, какво пише на фактурите в брой. Те влизат в бройката на касовия апарат. А и в 99,999% от случаите там пише – продадени стоки. Това е така, защото СЕ ПИШАТ НА РЪКА!

Още ли си жив? Защото аз не съм. Имаш 20 хил. артикула, с обща наличност, която не мога да си предсавя (защото е нормално от едно нещо да са от няколко десетки до няколко стотици бройки), нямаш компютър и пишеш фактури от кочан!!! Аз говоря за баркодове. Нещо съм слънчасал.

Така опираме до ситуация, в която имаме точна, пълна, ясна, изчерпателна информация, какво е влязло в склада, но никой, вкл. собственика няма никаква идея, какво е излязло. Знае се приблизително, ама толкова приблизително, че чак е отдалечително.

Добре, как аджеба се правят заявки?!

Дръж се да не паднеш. Шефе, а бе еди кое си ми намалява. Ей онова ми го търсят (ама това се сещаш е субективно). Или шефа просто е видял нещо на тънкаж (прѝмоцийка) и оти да не го купи. Е, ама сега трябва и да го продаде. Подробности.

А аз някак си трябва да докарам цялото безумие до това, че еди кой си код са продадени еди колко си бройки за еди колко си пари.

Чакай момент! Това не беше ли същата информация, която се съдържа в касовия бон на края на месеца??? Ами беше. Само дето трябва от 40 неща да ги разпръсна на 4 000.

После питай, защо работим на никакви такси срещу смешни заплати. С такива клиенти е цяло чудо, че изобщо успяват да съберат пари за такса.

Описания случай е най-тежкия ни случай, но и другите не са по-стока.

От всичко написано по-горе, оставам с усещането, че трябва да решиш тези две задачи:

1. да разпределиш някаква крайна сума между краен брой цени, тоест да намериш такава комбинация от единичните цени, която да ти дава крайната сума, като една единична цена може да се среща повече от един път, даже е желателно да е така.

2. да разпределиш така намерената комбинация от единични цени между различните артикули с еднаква цена

Нормално разпределение на цените, означава грубо казано, че артикулите с цени в двата края на интервала (най-ниски и най-високи) се срещат по-рядко, отколкото тези с цени около средата на интервала.

Нямам идея доколко продажбите на която и да е фирма имат някакво нормално разпределение. така че е добре да го провериш това. За мен по-скоро нямат нормално разпределение, но понеже съм прост инженер, може и да греша.


Титла: Re: Софтуер за изработване на комбинации
Публикувано от: ddantgwyn в Jul 18, 2018, 10:57
Въпрос - Крайната сума трябва ли да съвпада с точност до стотинка?

Доколкото ги знам счетоводителите — трябва :)


Титла: Re: Софтуер за изработване на комбинации
Публикувано от: ddantgwyn в Jul 18, 2018, 10:59
Имаше едни задачи, как в камион с определен обем товарно пространство или тонаж, да се натовари стока с оптилно отношение към обема/теглото на товара към цената. Ма не помня, как се правеше. Иначе може да се стъкми нещо с machine learning, ма и това не съм правил.

Това е друго.

И засега не сме стигнали до там Наката да намери оптимално решение. Нека първо се намери някакво работещо решение, пък после, ако трябва, ще се търси неговата оптимизация (imho).

Или казано с други думи — първо трябва да намерим целевата функция, а после да я оптимизираме.


Титла: Re: Софтуер за изработване на комбинации
Публикувано от: Naka в Jul 18, 2018, 11:15
За вендинг машината какво си мисля. Там алгоритъма работи с целочислени числа, щото монетите са цели стойности. А той работи с числа с запетайка 1.49лв.
Но това не е голям проблем, просто може да умножи всичко по сто и вместо с левчета да работи само в стотинки.

new Coin(149, 100),
new Coin(5023, 10),
new Coin(201, 25),

Проблема според мен е друг. Вендинг алгоритъма доколко разбирам се стреми да минимизира броя монети (артикули) от които да се получи сумата. Т.е много артикиули ще имат 0 продажби. На него това не му трябва. Престави си
набиеш наличностите и цените на 200 артукула.
new Coin(149, 100),
new Coin(5023, 100),
new Coin(201, 100),
....
..
пуснеш алгоритъма и той каже , хоп готово. тази сума се получава само от комбинация на 5 артикула.

Но може да се опита да видим какво ще стане. ??? Тъй и тъй е готово. 





Титла: Re: Софтуер за изработване на комбинации
Публикувано от: go_fire в Jul 18, 2018, 13:07
На въпросния монетен апарат, това е едно от двете неща, които ми допадат. Стреми се с най-малко артикули (монетки) да получи крайно съотношение.

За мен това е добре, защото са по-малко на брой записи. Все още не е ясно дали накрая все пак няма да въвеждам резултата на ръка. По-малко записи са по-малко време, което и без това не ми се плаща. Аз споменах ли, че нищо от това не се плаща??? Това е труд за прошка от небесата. Нито аз, нито работодателя ми, печелим. Въпроса е да минимизираме загубата.

Второто, което ми харесва е, че тръгва от скъпите неща. В нормалния живот е точно обратното. По-евтиното винаги ще се харчи повече и на всякъде, не само в бедната ни татковина.

Но тънката врътка е, че по-скъпите неща имат по-малка надценка. Така изкарвам по-малка печалба, респетивно по-малък данък. Нашите клиенти са много свидливи и не обичат да плащат.

А може и да не вярвате, но ако нещо струва 20 ст., то най-вероятно надценката му е 20 ПЪТИ. Ако струва 100 лв., то е много възможно надценката му да е 10%.


Титла: Re: Софтуер за изработване на комбинации
Публикувано от: Naka в Jul 18, 2018, 14:32
На въпросния монетен апарат, това е едно от двете неща, които ми допадат. Стреми се с най-малко артикули (монетки) да получи крайно съотношение.

За мен това е добре, защото са по-малко на брой записи. Все още не е ясно дали накрая все пак няма да въвеждам резултата на ръка. По-малко записи са по-малко време, което и без това не ми се плаща. Аз споменах ли, че нищо от това не се плаща??? Това е труд за прошка от небесата. Нито аз, нито работодателя ми, печелим. Въпроса е да минимизираме загубата.

Второто, което ми харесва е, че тръгва от скъпите неща. В нормалния живот е точно обратното. По-евтиното винаги ще се харчи повече и на всякъде, не само в бедната ни татковина.

А как ще се реши въпросът, че броят издадени монетки трябва да съответстват на броя продажби N във финансовият отчет?

Или трябва някакси да се модифицира алгоритъма, че да продължи да търси докато се изпълни и това условие?


Титла: Re: Софтуер за изработване на комбинации
Публикувано от: stealth01 в Jul 18, 2018, 17:01
Сериозно мислене пада тук. Връзки за четене и т.н. Извинявам се, че не съм прочел всичко, но да метна и аз нещо.

go_fire, имаш ли (можеш ли да вземеш и обработиш лесно) данни от минал период? Или дори да не е от минал период - началните стойности за периода.
Имаме, примерно, продажби за миналата година на N-ският артикул с количество X и стойност Y. Имаме продажби за текущият месец на стойност Y', съответно за въпросният месец ще имаш продадено количество X', което е равно на (X*Y')/Y. Тоест получаваме някакво количество базирано на стойности от предишни периоди. Което с всички условности е приемлив резултат за стъкмистиката. А условности много. Когато базираме изчисленията си на някакви предишни стойности трябва да вземем предвид дали включват ДДС и/или печалба, и ако да, да го отразим във формулата. С количествата също трябва да се внимава - по-лесно ще се смятат, ако са цели числа (и закръгляме до по-малко), но е възможно да има артикули, които се продават на кг./л./м. и т.н., които не са цели. Точно те пък могат да помогнат за доизкусуряването на точен резултат в края.


Титла: Re: Софтуер за изработване на комбинации
Публикувано от: go_fire в Jul 18, 2018, 18:25
Ами той миналия период е правен пак по схемата Нагоденко. Иначе имам за последните шест години данни. Това, което казваш е отлична отправна точка за проследяване на продажбите, ако тези продажби са истински. И е задължително условие за вземане на решения. Но у нас това е само в книжките по бизнес-статистика.

Нака може би аз не съм разбрал как работи „монетния апарат“. От съвсем повърхностното четене останах с впечатление, че е това е алгоритъм подобен на алгоритмите на банкоматите. Но сега се сещам, че те банкоматите, че и монетните апарати са едномерни пространства, а аз работя в двумерно.

Освен, че трябва да докарам парите до стотинка, то трябва да наглася и бройките. Което ме навежда на мисълта, че трябва да гоня парите само приблизително, а бройките точно. Това приблизително да е малко под желаното. След, което да завиша с някакъв процент всички продажби, така, че да докарам и парите.

Обаче това ме вкарва в хипотезата да му изкарам по-голяма печалба от реалната. Може би трябва да направя обратното. Малко (възможно най-малко) да надвиша парите и да свалям. така, че да не избягам от действителната норма на печалба.

п.п. За щастие точно в този случай нямаме насипна стока и всички мерки са точни единици.


Титла: Re: Софтуер за изработване на комбинации
Публикувано от: luda_glawa в Jul 19, 2018, 09:45
go_fire, я ги накарай да направят една бърза ревизийка на склада и сравни наличностите преди и сега :D


Титла: Re: Софтуер за изработване на комбинации
Публикувано от: Naka в Jul 19, 2018, 11:05
Цитат
Но сега се сещам, че те банкоматите, че и монетните апарати са едномерни пространства, а аз работя в двумерно.

Освен, че трябва да докарам парите до стотинка, то трябва да наглася и бройките. Което ме навежда на мисълта, че трябва да гоня парите само приблизително, а бройките точно. Това приблизително да е малко под желаното. След, което да завиша с някакъв процент всички продажби, така, че да докарам и парите.

Заначи това дето ти го предложих върти (първо) комбинации по бройките - по n-овете а след това гледа парите дали ще излязат на някоя комбинация. Ако имаш в предвид това за многомерно - то е едномерно, щото върти по n.
(Само сега да не пръкне някой подкован математик и да каже че и двамата сме в грешка и било N-мерно пространство :o)

Предлагам ти следният варянт:

n1 [90-110]   
   n2 [ 40-50]
      n3 [10-20]
          n4 []
          if ( N != (n1 +n2 +n4 +n4) ) continue;

           n1*s1 + n2*s2 + n3*s3 + n4*s4
           равно ли е (прилича ли) на S?
         


В най-вътрешният първо отхърляш всични невъзможни комбинации за N.
След това смяташ сумата S. Ако прилича на S изпринтваш n1, n2, n3, n4 - това е едно от решенията.

В най-външният цикъл задаваш предполагаемите бройки продажби [90-110]  от 90 до 110 бройки, които трябва да върти за най-скъпият артикул.

Във следващият [ 40-50] на следващият по-малко скъп но все още ценен и т.н.
А в най-вътрешният са най дребните артикули с най-ниска цена и за тях може ако искаш изобщо да не задаваш тесен интервал на симулация ами да си бъде [0 - бройката_в–склада].

 

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

--------
Сега тука има едно Но:
Така със вложени един в друг цикли се извъртяват всички възможни комбинация. Това си е един брояч - подобен на километража на колите......

Но от практическа гледна точка за 100 артикула не може да имаш 100 вложени цикъла един в друг. Предполагам че това с вложените цикли може да се опише програмнно по друг начин. Някой тук от спецовете по програмиране ще знае как става.

Може би с рекурсия (но мен от рекурсия ме боли глава).






Титла: Re: Софтуер за изработване на комбинации
Публикувано от: go_fire в Jul 19, 2018, 12:45
go_fire, я ги накарай да направят една бърза ревизийка на склада и сравни наличностите преди и сега :D

Не възможно. Такава инвентаризация би била минимум седмица при тези първобитни условия. И защо? За да само след месец отново да имаме грешни данни.

=*=

Нака. Не знам за другите езици, но в Пърл категорично работи с до два вложени цикъла. Станат ли три, Пърл умира. Със сигурност твоето решение е разбираемо и просто. Чак се чудя, как сам не съм се сетил за него.

А ракурсията е само научна джвачка. В реалния свят е неприложима. Макар в последната Мария да се появи. Но никой не казва, колко бързо вади резултат.


Титла: Re: Софтуер за изработване на комбинации
Публикувано от: Naka в Jul 19, 2018, 13:06
Пърл категорично работи с до два вложени цикъла. Станат ли три, Пърл умира.

Аде бе :o Не може да е вярно ??? Аз пърл го зарязах още преди 20 години.
Но със сигурност има начин как циклите да се представят по друг начин.


Титла: Re: Софтуер за изработване на комбинации
Публикувано от: Naka в Jul 19, 2018, 14:28
Дойде ми на ъкъла още една идея.

Разделяш си сумата на две части S=S1+S2
S(N)= S1(N1) + S2(N2)   Като N=N1+N2

Първата сума S1 си я правиш на ръка, така като ти е кеф, с колкото си искаш и с каквито си искаш артикукули, без да се интересуваш точно колко ще излезе цената и броят артикули в нея.

Важното е обаче S1 да е по-малко от карайната сума S и бройките в нея N1 да са по малко от N.

Така отсявяш на ръка повечето важни артиули. В резултат ще остане една остатъчна сума S2 и определен, но много малък брой артикули които трябва да се нагласят.

Ами Тази S2,N2 и остатъчните артикули ги пускаш на симулация. Ако може да минеш с 5-6 вида артикули???? - повече дребни парчутийки, но с разнообразни стойности.


-----------------------------------------------------
ПС: между другото това е аналогично на
n1 [92]   
   n2 [ 112]
      n3 [47]
          n4 []
          if ( N != (n1 +n2 +n4 +n4) ) continue;

           n1*s1 + n2*s2 + n3*s3 + n4*s4
           равно ли е (прилича ли) на S?


Ако на първите цикли зададеш фиксирани стойности.


Титла: Re: Софтуер за изработване на комбинации
Публикувано от: 4096bits в Jul 19, 2018, 18:57
Python?


Титла: Re: Софтуер за изработване на комбинации
Публикувано от: laskov в Jul 19, 2018, 21:49
1. Извинявайте, че не съм прочел 3-те страници преди това. Сигурен съм, че има интересни идеи по темата.
2. Извинявайте, че няма да пиша по темата, а ще пиша по проблема. Друг е въпросът, че трябваше да проявя доста търпение, за да стигна до проблема на автора и понеже вече бях на ръба, го прочетох по диагонал.

Касовият апарат (КА) има нещо, което се казва "Електронна касова лента" (ЕКЛ).

Използвайки това нещо, не е необходимо да разчиташ на каквито и да са отчети, генерирани от КА.

Моят опит е с КА на Датекс. Датекс предоставят програма, с която по RS-232, можеш да си програмираш КА. Можеш също да си свалиш ЕКЛ и да си я запишеш в текстов файл.

ЕКЛ съдържа ВСЕКИ касов бон, отпечатан от КА и започва от датата на фискализацията му (може и отпреди това да е, ама не съм сигурен). Правиш си програмка, която да анализира този файл и да пълни данните в БД, с което можеш да имаш всяка отделна продажба и да си правиш каквито си искаш гимнастики с данните. Ако искаш, мога да ти предоставя такава, която търси отчетите по артикули, които предхождат всеки дневен финансов отчет.

ВНИмание! Прочитането на ЕКЛ с програмата на Датекс Е БАВНО! Може да ти отнеме часове, в зависимост от периода, който си задал. Начините да увеличиш бързодействието са:
1. Вдигаш скоростта на RS-232 на максималната 115200. Това става от КА. Не може от програмата да програмираш параметрите на RS-232 на КА.
2. При четенето, след като го стартираш, изкарваш някакъв прозорец на друга програма отпред, така че този на Датекс да не се вижда - скролването на прочетените данни и изписването на номера на прочетения ред бавят работата на програмата.
3. Въпреки тези трикове, четенето е бавно. Основният определящ фактор е броят линии, отпечатани за зададения период.

Надявам се да съм бил полезен.

ПС: Впрочем, защо темата е в кошчето?


Титла: Re: Софтуер за изработване на комбинации
Публикувано от: go_fire в Jul 20, 2018, 07:34
ПЪРВО! Да изкажа своята благодарност, че Ласков е писал в моя тема. Оценявам го високо.

Защо темата е в кошчето? Ами то почти всички мои теми ги създавам там. Софтуер за комбинаторика няма общо с ГНУ/Линукс или коя да е ОС. Това е математически проблем с алгометрична реализация.

Второ. Мога да те поздравя. Датекс е една от (ако не най) по-здравите физически марки. Дефектира много рядко. Държеливи са.

=*=

Следва OFFTOPIC.

На мен специално никога не ми е допадал външния им вид. Имам смътно подозрение, че дизайнера на Датекс е скрит фашист. Остри, неприветливи форми и създавано впечатление за агресия. Добре може би това не се отнася до този новия, „джобен“ банан с пижам', но за всички останали е в сила. А този новия е просто грозна версия на push-овете на DJ-те. Но е далеч по-красив, от всичко, което са правили, чак до легендарния А300.

Както казах преди време на Наката, сегашните ЕКАФП не са нищо повече от старите елки. Имат sim. Имат SD. Но това е. Технологично са в седемдесетте години на миналия век.

Ами ти сам го каза човек!!! Говорим за сериен порт! Между другото последното е измама. Всъщност въпросния порт не е сериен в смисъла на аналогов. Той е USB 2 B. Но е направен да имитира сериен!!! Едвам се сдържам да не богохулствам. Физически е достатъчно бърз, но поради древната технология, ти не можеш да се възползваш от това. А и няма смисъл. В паметта на тези ЕКАФП буквално няма нищо. А това нищо е записано върху бавен носител (древни SD, не си мислете за десятки, мислете си за началото на века) и се обработват от още по-бавен AVR или друго безумие. В общия случай е AVR.

Сам го каза, там има записана дата и продажба, заедно със стойността ѝ. Ситуацията е толкова глупава, че в днешно време всички апарати записват и стойността на ДДС, дори ако предприятието не е регистрирано по реда на ЗДДС. А това преди не бе така. Спестили са си един разход.

То бива наглост от производителите, но това не бива. Значи имаш държавно гарантиран бизнес, които засяга всички икономически обекти.
Продаваш, на каквито цени не те е срам. Всички производители сте в явен картел, по-явен и от този на безнзинджийте. Умишлено пробутваш първобитни технологии, ако изобщо могат да се нарекат технологии. И накрая си спестяваш дори това. А нам всьо равно. Всички клиенти са еднакви. Телетата под ножа!

Още по-голям OFFTOPIC.

По-модерно е да се каже, овцете и козите. Макар и това  да е смешен плач. Да сме спасели стадата. А ве, какво точно да им спасяваме? Ти не си някакъв благотворител. Ти ги гледаш тия животни, за да ги заколяш. Сега просто ще се случи по-рано от предвиденото. Много съжалявам, че не мога да ти съчувствам. Воден си от същите мотиви, каквито и министъра. Ама ти се бориш за сто кинта, а министъра да гушне сто милиона? И за това не мога да ти съчувствам. Той е по-хитър от теб и те прецаква по правилата. Играта е същата.

=*=

Да се върнем в темата. Отново да благодаря за включването на Вальо!

Толкова рядко го прави напоследък. Поласкан съм, че е в моя тема.

И съм повече от сигурен, че информацията изнесена от него, е полезна за много хора, защото това не са неща, които ги пише в документацията.

Обаче на мен това не ми върши работа. Нямам физически достъп до апарата. Той е на обекта, аз съм в кантората и в общи линии, тяхното работно време е по-дълго от моето, като освен в часове включва и дни, които за мен са почивни.

Но дори да предположим, че може да се организира такова нещо в неделя да речем. Всяка последна на месеца или по-скоро първата на следващия. Не е много вероятно, но ей така за хипотезата.

Какво ще прочета вътре? Вътре ще прочета всяка една продажба, чието обобщение е лентичката. Това на пръв прочит е добре. Смалява възможните комбинации от няколко стотици (оптимистично десетки) на вид продажба до 1, 2, 5. Но вече имам не 40, 2 000 (грубо по 500 реални продажби) обекта за комбиниране. Ръчната обработка на тези данни в никакъв случай няма да е по-бърза от лентичките. Пак ще ми е необходима софтуерна комбинаторика.

Нямаше да е проблем да го правя, ако това бе единственото ми задължение за месеца. Но, както споменах: Тази „услуга“ не е предвидена в настоящите ни условия за обслужване. Но резултата от нея все така е изискуем.

Трябва да правя нещото възможно най-малко време, за да смаля загубата за работодателя ми (изразяваща се в заплатата ми). На моя работодател определено ще му е по-евтино да се освободи от този клиент и мен като служител. Безкрайно съм доволен, че още не узрял за идеята.

=*=

В момента почти съжалявам, че в първи курс (девети клас приравнено) не седях много на дупето си и не учих вариации, комбинации и сие. Спомените ми са повече от слаби и не особено полезни.

Ако нямах и толкова крайно отношение към статистиката, щях да съжалявам, че над нея не залягах особено в техникума и след това.

Последното е защото задачата може да се сведе до разпределение. Което е обратното на статистиката. Малко вид дедукция. Нещо подобно на транспортните задачи или SCADA.

Добре то разпределението може и да не е нормално. Просто да е някакво. Схемата си я представям сумата и бройките да се разделят на две. Половината да се опитвам да ги съединя от по-малките цени, другата от по-големите, така леко по леко да свалям обхватите надолу, докато стигна до някакви крайни стойности.

Обаче така да речем при шестнадесет обхвата може да имам ст-ст да речем 1,43, която да не се покрива от обхвата, към който да е насочена, но да може от друг. Понеже на всяка врътка, ще цепя на две, то стойностите ще си остават константни (макар и намаляващи), а ще се променят ценовите обхвати, в които да влязат. Омотал съм се не като пиле, а оттатък.

Първия проблем е, че аз не съм програмист (направо никакъв не съм) и идея не ми идва, как да реализирам подобна логика. Писал съм само портали и графични програми. Ламерия. Със сериозни задачи искащи теоретично подковаване, никога не съм се занимавал.

Не знам, какво да направя и как да го направя. Единствено този bruteforce на Наката ми дава основание, че е постижимо. Единственото ми опасение е, че той ще вади твърде подобни резултати един на друг.

И те така. Побърквам се. Днес живот и здраве започвам работата (до вчера ме занимаваха с други глупости, включително за шибаняците от НСИ). До къде ще я докарам, не знам.


п.п. Ако харесвам нещо на ЕКАФП, то е, че могат да се ползват единствено като принтер, реалната работа да се върши на компютър. Но и това не е необходимо. Можеш да си вземеш фискален (демек данъчен) принтер за една трета от цената на цялото изделие. Да знам, че е обир, но когато имаш държавен монопол подобен на енергоизточниците и водата, то няма, как да не те одират. Поне успокоението ти е, че парите ти отиват в частни ръце, а не при хрантутниците.


Титла: Re: Софтуер за изработване на комбинации
Публикувано от: remotexx в Jul 20, 2018, 16:32
, Гого, объркал си се нещо... може би и аз те подведох, малко, ама щото и аз се подведох по първоначалното описание.
За да имаме работещи вариации и комбинации (разликата е само че едното е без повторения и е N x (N-1)/2 а другото е с N! Факториел итерации)
И двете крайно непрактични при 2000 х 500 елемента да разпределиш
1. На теб ще ти трябва това с факториела, или иначе ще трябва да извъртат и от двете страни т.е. трябва да набедил не само парите ами и стоките от др страна
Дори и да приемем че успееш да извадиш стоките продадени по тези фактури...
2. Тези алгоритми работят с точно разпределяне което е невъзможно
Пример.
40 лв. Обща фактура и стоки за разпределение от 1х20, 1х19, 2х11
Няма точно съвпадение, най близо е 20+19 обаче реалната продажба е била
4 х 11 с 10% отстъпка или 1х20 и 2х11 пак с отстъпка
Никакъв алгоритъм не може да го разкрие това , информацията за отстъпките...само от касовия апарат, както каза колегата...

Така че, повтарям, за да знаеш в какво се набутваш, точно възстановяване на оригиналното разпределение в т(в)оя сл. Е невъзможно.
И още, ако приемем, че няма отстъпки и знаем точните бр. И артикули по кофти фактури, както казах итерации са немислими , факториела, защото не е сам за една а за всички,

Алгоритми
1. Вендинг машината, ще смята факториела
2. Stuff-it софтуера, който го помни навремето, за наблъскани макс файлове на СД/ДВД така че да остане 0 байта свободни.... Вероятно и той ще хвърли кърпата.. той зачезна нещо напоследък тоя софтуер, дисковете станаха големи, ама потърси некой с богата колекция порно и все ще извади някоя стара версия...
Проблемът на горните 2 е че работят добре но на ниво единична фактура, т.е. за да натамънят най точно текущата, могат да те доведат до задънена улица после,...

3. Единственото което ми идва наум, и за в реално време е SA , Simulated Annealing там вече може да питаш старите леяри и/ли програмисти, но

Пак повтарям, не се навирай там, това е само при условие че точното разпределение е възможно, от всичко изписано досега мисля че НЕ е,. Карай си както и колегите при тебе, Нагоденко и Нагласенко и... спиш спокойно

Извинявам се предварително за ръкописните грешки, от автокорекцията на тел. Е.


Титла: Re: Софтуер за изработване на комбинации
Публикувано от: go_fire в Jul 20, 2018, 18:28
, Гого, объркал си се нещо...

Точно този отговор ми съсипа деня.

„Надежда всяка тука оставете.“

В касовия апарат няма инф. за отстъпки. Само за момент ще си представя, че отстъпки просто няма. В касовия апарат, какво се записва? Код, брой, обща цена. Само това, друго няма. И после на края на месеца апарата просто сборува всички бройки и цени за всеки код. Толкова. Но срещу този код при мен седят примерно сто кода.

Метода на Ласков ми дава допълнително разбиване на една продажба. Но там продължава да няма отстъпки, надценки и т.н.

Аз не търся оригиналното разпределение. Това е невъзможно. Търся някакво разпределение, а ако е и що годе правдоподобно, още по-добре.

В общи линии твоя отговор ме обрича да си избода очите, нищо да не постигна и да продължавам да работя от вкъщи, за да наваксвам недостижимото. Ами, като бях толкова горд да си мисля, че мога да се състезавам с младите, хак да ми е.

Ако нямах борчове за оправяне, просто можех да се откажа. Сега няма де да мърдам и ще си нося кръста. Благодаря все пак, че опита да помогнеш.

Оказва се, че имало математика, която е недостижима дори за компютрите.


Титла: Re: Софтуер за изработване на комбинации
Публикувано от: Naka в Jul 20, 2018, 18:56
Гога вземи едни реални данни с много малко артикули например до 7-8 (или 4-5) и пробвай. То мисленето е до един момент ама след това трябва да се види как се държат цифрите и дали изобщо става нещо.

С грубата сила може и да има отговор, може и да няма а може и да има твърде много решения. Ако няма решение трябва да се тунингова някой айтем с помоща на теорията описана в трудовете на руските учени Нагоденко и Нагласенко и пак да се пробва.
Ако има много възможни решения трбва да си избереш едно.

Аз например си мисля че при повече айтем-и брут форса ще  избълва много решения.
Сущо както при вендинг машината
Може да имаш отговор 20=10+10 а може да е 20=10+5+5 може дае 10+5+1+1+1+1+1 а може да е 20*1 или 5+5+5+5

От друга страна тея работи дето ги разправя
Ремо са много дълбоки води. Ако човек се задълбае в цялата теория дето е там, може и година да не му стигне.

Но само ти най добре знаеш какви ти са данните и какво трябва да постигнеш.






Титла: Re: Софтуер за изработване на комбинации
Публикувано от: go_fire в Jul 20, 2018, 19:05
Туко що ходих до Википедия да се образовам, защото не разбрах нищо от отговора на Ремо. Не, че разбрах нещо от Википедия, но поне разбрах, че и в заглавието на темата съм в грешка. Аз съм си представял комбинацията като нещо лингвистично, а не математическо.

Математическата комбинация се оказа, че не е нещо, което ми върши работа. Тя отново е едномерна. Може да ми каже как шест числа могат да се комбинират из между 49.

На всичкото отгоре има вид, при който се връща обратно в купа. Това го няма в реалността. Една бройка не може да се продаде два пъти. Сиреч с комбинаторика може да се каже, колко пъти може да се продаде едно количество спрямо общо такова, но не може да се каже, как едно количество на обща стойност може да се разпредели между други количества с други стойности.

Че съм слаб по математика е едно, но може би трябваше да проверя преди да пиша заглавието на темата. Сега се чувствам още по-тъп.


Титла: Re: Софтуер за изработване на комбинации
Публикувано от: go_fire в Jul 20, 2018, 19:08
Писали сме заедно с Наката.

Нака, това, което ми казва Ремо, е, че е невъзможно математически да се разцепят две стойности върху множество отделни стойности. Сиреч според математиката, какъвто и brute force да прилагаш, няма да изкараш не едно, нито едно решение няма да изкараш. И от това ми става още по-зле.

п.п. Иначе днес започнах да събирам стойности за единия месец. И ще ги нагаждам вкъщи тия дни. Но опасявам се, това е бавно, а моя случай е още по-бавно. Няма шанс да успея да направя сам нещо, което две млади, умни, бързи професионалистки са правили по месец. Шанса ми беше да използвам софтуер да свърши поне част от нещото. Оказа се, че такъв софтуер не може да съществува дори теоретично.


Титла: Re: Софтуер за изработване на комбинации
Публикувано от: Naka в Jul 20, 2018, 19:25
 Това не го разбрах за двете стойности.
Гога в грешка си нещо и си прегрял.
Щом може да се направи на ръка значи може да се направи и на компютър по същият начин.

Чакай малко че нещо пак не разбрах. Ти не комбинираш стойности, нито разцепваш стойнисти на две - в това дето ти предложих. Ти комбинираш количества (цели числа) и гледаш (между другото) да ли ще се пасне стойността. Къде е грешката в това и защо не става?


Титла: Re: Софтуер за изработване на комбинации
Публикувано от: go_fire в Jul 20, 2018, 19:42
Май вярно съм прегрял. Няма как да е невъзможно. Всъщност по този начин сваляме до едномерно пространство и става възможна задача. Май трябва да преспя и утре просто да пробвам.


Титла: Re: Софтуер за изработване на комбинации
Публикувано от: remotexx в Jul 20, 2018, 19:51
Отново... да дам своята лепта - последните си 5 ст.  ::)

Аз пак да потретя - без Нагоденко и Нагласенко няма как да мине
всички изброени алгоритми искат/търсят точно напасване - бр./цена към сума по фактура, но
има едно големо НО имало е отстъпки и надценки които са загубени завинаги - аз затова пред(по)ложих ..ако може да се извадят от касовия апарат тогава вече може да се търси точно напасване... (с истински монети винаги работи, но там винаги има 1 ст.)
т.е. ние даже  масива Coins не знаем с какви 'монетки' да го запълним - анадънмо
Ако го зпаълним със складови цени (т.е. преди отстъпките/надценките) повечето фактури няма да матчнат нищо вж. примера който дадох по-горе с 40 лв което напр. не мачва нищо като складова цена защото е било продадено напр. 4 х 11 лв. (10) с 10 % отстъпка или 20 + 2 х 11 лв (10) с 10% отстъпка.
Каквито и комбинации, вариации пр. да правиш само с монети от 11 ст./лв. няма как да докараш цена от 40 (а то такива ситуации ще има)

т.е. без реалните 'монетки' нищо няма да се напасне - без Н&Н

П.П. Единствентоо което мога да предложа като по-лесно е да се модифицира лекинко кода на ВМ (вместо == 0, да стане близо до 0-та) и да пуска, то ще му ги вади +/- 5 ст. (или там колкот си го нагласи) и ще им праска 5ст. надценка/отстъпка и ..те така...

По-правилния начин е, ако се знаят артикулите по тия фактури (няма как да се мине без инвентаризация), да се ползва SA алгоритъма, застопоряваш фактурите (в някакъв ред - да кажем най-скъпа, към най-евтина) и пробваш пермутации на цените само - алгоритъма за разлика от дугия който е брут форс, може да се спре по всяко време и да се принтира най-доброто решение (за момента) - като оптимизацията е върху всички фактури/цени едновременно т.е. всичките по-горни алгоритми работят 1 по 1 фактурите и не вземат предвид че натамънявайки баш тази, може да се прецакат в последствие - напр.
фактури: 11+7+4 = 22 = 11 + 7 + 4 (най-простото по един артикул)
(това е оригиналното разпредление, което не го знаем а се опитваме да отгатнем)
артикули/цена: 11 х 1, 7х1, 4х1
и алгортъма ако прецени да мачне напр. така първата и.. другите ще се прецакат
11 = 7х1 + 4х1
7 = ?? (от 11 на цяло)
4 = ?? (от 11 на цяло)
имайте предвид че горния пример е много опростен, но има и наличности т.е не можеш да продаваш повече отколкото имаш налично в склада, и точно те са тясното място, за прецакване... за пълнота представете си че в примера още имаме и налични 100 бр. по 5.50 - могат да развалят 11 на цяло на 2х5.5 и цялостното разпределение пак е прецакано, щото имало само 1 х 7 налично, ама то отишло за нещо друго.

така че, щеш не щеш, трябва да се търси (най-добро) напасване на всички фактури едновременно. SA ще свърши работа - 1) ще оптимизира на цяло - всичките наведнъж; 2) може да се прекъсне по всяко време а не да се чака да извърти N! факториел варианти - е, може и никога да не достигне оптималното решение (ама то както вече видяхме е невъзможно без истинските монети, след намаления и надценки от касовия апарат), но ще даде достатъчно добро приблиежение така че накрая с мин, Н&Н да се оправи човек и на ръка, тук бонбонче, там пиронче, де малко аванта де малко надценка да ги докара
- пълно възстановяване на оригиналнот състояние е невъзможно (не и без оригиналните 'монетки' където 'монета' е ед. крайна цена на артикул т.е. след намаление/надценка и т.п. т.е. ще има монети 3.50, 2.11 и т.н., а 1 ст. може и да няма въобще, ако има - да изписва всичко по 1ст N пъти, ама ще изглежда подозрително.

Толкоз от гл.т. на математиката.

П.П. Гого, не искам да те отказвам ама... СА не е от най-лесните алгоритми, по-скоро модни Вендинга или ползвай на колегата алгоритъма и накрая с малко Н&Н...
..подозирам че колегите ти (от ръчен труд и творчество) със МНОГО Н&Н са работили, а... традициите трябва да се поддържат

П.П.П. А каква е целта на цялото това занятие - аз така и не разбрах, за шефа ли (парите са се толкоз), за данъчни нещо... т.е. сумите (ама те си отговарят), за склада(джийката) нещо - ама там тъй като пак опираме до ЯКО Н&Н там па въобще няма да отговарят артикулите (дори и да го нагласиш някак си), та въпросът е открит - ЗАЩО? Наличностите в склада все няма да отговарят...

Признавам си без бой - убягват ми ненаучно базираните алгоритми  :o а тука вече яко навлязохме в сферата на ненаучната фантастика...


Титла: Re: Софтуер за изработване на комбинации
Публикувано от: go_fire в Jul 20, 2018, 22:50
Отстъпки, та отстъпки. Това са продажби на дребно и в брой. Много са малко клиентите, които не плащат по банка и получават отстъпка. И тази отстъпка винаги е 5 или 10 %. Ама това са наистина малко клиенти и могат да бъдат изброени поименно. На фона на стотиците други продажби, това е в рамките на статистическата грешка, дето се казва. Затова не ме притесняват.

Притеснява ме, че не мога да свърша тази работа бързо. Всичко на всичко в месеца имам около две седмици, които мога да разпределя за „странична работа“. По принцип вярвах, че мога да вместя това в едната.

=*=

Какъв е смисъла на упражнението? Смисъла е имитация на дейност. Икономическата отчетност е стара наука. А икономическата свобода е нещо ново. В световен план е под 50 год., а у нас малко над 20.

Когато учените глави са измисляли теорията, не е било възможно да почнеш реален бизнес с 200 лв. (законотвореца даже те лъже, че и с два е възможно, но това е измама). Освен това разнообразие не е съществувало. Разнообразието е рожба на свободния пазар. И най-добре заредения магазин не е имал повече от 100 вида стоки цифром и словом. И най-голямата фабрика не е произвеждала повече от пет артикула. И това е било буквално до 70-те години на миналия век. Японците променят всичко.

Днес в най-мизерното „левче“ има поне 5 000 различни артикула. Най-малкия, селски цех има над 100 модела продукция. Днес е невъзможно да се управлява складово стопанство без компютър. Казва го човек, на който кварталната му бакалия на десет метра от дома  му, с размерите на гараж, има и компютър и четец на баркодове. От там не излиза и един хляб, ако „не е чукнат“.

Обаче дори в днешните времена съществуват хора, които някак си вярват, че могат да въртят бизнес носещ им десетки хиляди лева годишна печалба, без да ползват чудесата на техниката. Против всякаква логика, даже успяват. Е такива хора обикновено са спонсорирани от труда на работниците им, но това е проблем на работниците им. А и техен не е, защото доброволно са се съгласили.

И тук идва моята роля. Тези клиенти са всички наши клиенти. Ние живеем, заради тях. Те не искат да водят нормална отчетност, ние сме техния посредник към щенията на държавата. А тя държавата и не иска много от тях. Тези хора не участват в схеми с ДДС. Обратното. Всеки месец спонсорират бюджета с прилични суми. Те плащат заплати. Плащат осигуровки. Редовно.

Държавата просто няма, за какво да ги търси. Техния бизнес е чист и законен.

Няма, за какво да ги търси, но все така си има безброй изисквания към тях. Както казах, някой трябва да поддържа илюзията, че има истинска отчетност. Тоя някой са канторите.

Едно от тези стотици изисквания е да декларират печалбата си. Човек може да не и чувал думата „икономика“, но знае, какво е печалба. Това е разликата между това, което е влязло и излязло от джоба ти. Ако в джоба ти все още има пари, значи не си на загуба.

Добре, как можеш да докажеш разходи? Разходи има всякакви и много. Може да имаш задължения към банки. Може да плащаш заплати. Може други неща. Срещу всичко това стои документ.

Но има едни документи, които доказват разходи за режийни (ток, вода, телефон), разходи за материали, разходи за производство, разходи за стока. Обикновено това се доказва с фактури, приемо-предавателни протоколи, касови бележки и други платежни документи (документи върху които има две страни и упоменати пари).

Част от нашите клиенти не произвеждат нищо, не предоставят услуги, а
 се занимават с чисто търговска дейност. Този случай е такъв. При производството и услугите е същото, но стъпките са повече.

Добре, той може да докаже разходи. Но, как ще покаже приходи? По същия начин, както и разходите. С платежни документи (две страни, пари) издадени от него.

Имаме разход. Имаме приход. Да формираме печалба или загуба. Как?

Вадим от едното другото. Нали? Почти.

Трябва да свържем прихода и разхода. Кой приход, към кой разход се съотнася. Аз това, което ти продавам може да съм го купил миналата година. Не съм направил сега разхода. Не мога да го съотнеса към текущите разходи. Трябва да е към точния.

Ето това е смисъла на упражнението. ЕДНА ОПЕРАЦИЯ. Каква част от разхода да бъде извадена от прихода в края на отчетния месец. Оставащия приход в края на отчетната година ще формира печалба. Върху тази печалба ще се дължи данък.

Трябва да мога да докажа с документи, защо точно толкова е тази една, единствена операция, а не нещо друго.

Иначе и без да се полага целия гигантски труд, може много лесно и бързо да се каже, каква е тази стойност. Ако знаеш например, че някой работи с 20% надценка, то със сигурност разхода, който трябва да извадиш от прихода е с 20% по-малък от него. Само дето не можеш да го докажеш. А държавата си има изисквания. Когато са правени държавите, свободен пазар не е имало. И всъщност докато има държави, истински свободен пазар няма да има.

От последното съм лично облагодетелстван. Ако нямаше държава, то и аз нямаше да имам хляб. Частниците ни дават подаяния, за да ги пазим от държавата.



Титла: Re: Софтуер за изработване на комбинации
Публикувано от: remotexx в Jul 20, 2018, 23:41
Я пак... аз пак не разбрах, защо трябва чак толкоз да издребнявате и да го разбивате по пера/артикули... ами нали си има там общата фактура с общата цена - те това му е разхода

отделно че сега се сетих и един неописан пример - ами ако си продал последния си артикул по такава 'обща' фактура, хубаво после ще вземеш тек. наличност в склада и ще насосаш нещо си и по нея фактура ама онова нещо вече го нямаш в наличност т.е. ще им зачукащ съвсем друго нещо/неща само и само да докараш същата сума?!?

Аз очаквах че бюрокрацията ще ги иска тия неща агрегирани (т.е. само сумите) а клиента ще има само разбивките, а ти сега казваш че е точно обратното - клиента има само общата сума а те му искат разбивка?!? Оруел...
..ама що ли не се учудвам - то в тая държава всичко е наобратно  ::)


П.П. за съжаление на БГ е много кратък превода на 'Симулирано закаляване' - както казах търси стари леяри/програмисти (с бради, без бради - каквито намериш)
https://bg.wikipedia.org/wiki/%D0%A1%D0%B8%D0%BC%D1%83%D0%BB%D0%B8%D1%80%D0%B0%D0%BD%D0%BE_%D0%B7%D0%B0%D0%BA%D0%B0%D0%BB%D1%8F%D0%B2%D0%B0%D0%BD%D0%B5

Я имало и литература на БГ (не знам кой от двата ще се отвори при тебе)
http://download.pomagalo.com/1023920/temi+po+metaevristika/?search=5
http://search.pomagalo.com/?keywords=%C3%E5%ED%E5%F2%E8%F7%ED%EE%20%F1%E8%EC%F3%EB%E8%F0%E0%ED%EE%20%E7%E0%EA%E0%EB%FF%E2%E0%ED%E5&s=1

другия вариант е да си купиш квантов компютър
https://money.bg/inovations/google-e-na-krachka-ot-neveroyaten-probiv-v-tehnologichnata-sfera.html

инак най-добре е обяснено на английски, с картинки, че даже и списък с алтернативни методи имат - и там който си харесаш, ама подозирам при теб избора ще е по-скоро м/у ненаучен/Н&Н/ и/ли научен метод  ???
https://en.wikipedia.org/wiki/Simulated_annealing#Related_methods

това е научният подход, инак алтерантивата я знаеш Н&Н - На...енко


Титла: Re: Софтуер за изработване на комбинации
Публикувано от: ddantgwyn в Jul 21, 2018, 00:08
Май вярно съм прегрял. Няма как да е невъзможно. Всъщност по този начин сваляме до едномерно пространство и става възможна задача. Май трябва да преспя и утре просто да пробвам.

Аз може да съм прост инженер и затова да не разбирам защо не обръщаш внимание на идеята за разделяне на големия проблем на два по-малки и отделното им решаване:

1. Имаш крайно множество от цени;
2. Имаш крайно множество от артикули (с цени от първото множество);
3. Имаш една крайна сума.
———
1. Намираш някаква комбинация¹ от цени, която да удовлетворява условието сумата от цените от тази комбинация да съвпада с крайната сума;
2. След това търсиш да намериш съответните артикули от множеството на артикулите, които да имат цени, попаднали в горната комбинация;
3. Генерираш отчета (фиктивен явно) за продажбите за съответния месец.
———
Има какво да се оптимизира, но за това по-нататък.
 
Сега по-ясна ли става идеята или пак нищо не съм обяснил?

———
¹ комбинация не е най-точният термин в случая, но засега ще го оставим така.


Титла: Re: Софтуер за изработване на комбинации
Публикувано от: remotexx в Jul 21, 2018, 03:09
Да де и аз това казвам, да не се хвърля направо у дълбоките води, ами да прецапа по плиткото.

..за съжаление не можах да изровя софтуерчето от преди време ама.. то и без тва за Усхадуя само (ма с ГУИ) ама изрових едно по-свободно (ма без ГУИ)

http://gaffitter.sourceforge.net/
https://sourceforge.net/p/gaffitter/wiki/Home/
http://nixbit.com/software/genetic-algorithm-file-fitter-review/

Edit: сега видях че той тоя тул има и опция да не правиш файловете ами да му ги подадеш от командния ред или да ги чете то файл (името на файла, както и размера му) - това вече може на пърл да го генерираш - да изгенерира неколко стотин командни реда дето ще ти натамънят складовете. Имай предвид че може да работят дълго - виж там за SIGHUP или др. стандартен начин за ранно терминирате с принтиране на най-доброто постижение до момента

Значи Гога - правиш 1 (или няколко) папки и вътре си фърляш по 100-тина файла (това ще са ти артикули и наличност в т.нар. склад) - най-добре да дам пример

Ако имаш артикули
Кис.Млеко 1.50
Хлеб бял 2.35
Хлеб чер 1.15
...
правиш 100 файл от всеки вид
кмлеко001 150 байта
кмлеко002 150 байта
кмлеко003 150 байта
...
кмлеко100 150 байта
леббел001 235 байта
...
леббел100 235 байта
лебчер001 115 байта
...
лебчер100 115 байта
 и фактура за 15 лв.
и пускаш програмчето да смести макс бр. от горните файлове във диск а размер 1500 байта
само гледай да не продадеш повече млекца отколкото имаш налични

е ся... верно резултата няма да е
10 х кмлеко001 (х1.50) = 15 лв.
ами ще е 10 реда
кмлеко001
кмлеко002
...
кмлеко010

ама само трябва да конвертираш
ама схващаш идеята...

сега... в повечето случаи ще намира нещо много близо ама отдолу напр. 14.98 или 14.99 вместо 15 и понеже предполагам ще предпочиташ да слагаш отстъпки отколкото надценки то тогава го пусни втори път ама с таргет 15.05 лв. и тогава ще го докара до 15 и малко отгоре, там ще си изпишеш вече отстъпката да го направиш точно 15

Схващаш идеята - ама аз те тоя ненаучен подход още в първото си изказване по темата го споменах ама ти си го пропуснал (е верно StuffIt вече е запазена марка на Апъл за друго приложение - архиватор, и вече трудно се намира баш такъвия софтуер - и вече не е със SA ами с генетичен алгоритъм - ама той пък един от заместителите на SA ако си прочел чак докрая и там секцията с препратките.. та предполагам че ще има опция за абнормално прекратяване ако се замисли много дълго време)

Сега - ако искаш с ГУИ - потърси приятел (с богата колекция пор..о т.е. картинки от ерата на флопи дисковете) със сигурност ще има таквизи софтуери

П.П. Честито на дебиянци - https://packages.debian.org/stable/utils/gaffitter
ама кой знае колко е старо, за по-добри резултати сваляй от сайта  :P

и нека забавлението започне сега!
https://xkcd.com/287/

..жалко най-близкото (до теб) което извадих е на смоко
https://stackoverflow.com/questions/3624580/finding-the-optimum-file-size-combination#
https://web.archive.org/web/20120407040035/http://zeta-puppis.com/2010/02/22/simulated-annealing/

че иначе опраш до брут форсе на ... combinatorial NP-hard проблем който е и NP-complete на всичко отгоре
https://en.wikipedia.org/wiki/Bin_packing_problem

П.П.П. Най накрая - Ура ..имало и за Пърл, ама ако не ти се учи/пише карай си с програмчето (с ГУИ или без се тая)
https://metacpan.org/pod/release/MSCHILLI/Algorithm-Bucketizer-0.12/Bucketizer.pm


Титла: Re: Софтуер за изработване на комбинации
Публикувано от: go_fire в Jul 21, 2018, 09:30
Първо да благодаря на Ddantgwyn. Сега през почивката ще си събера акъла, ще преразгледам темата и ще пробвам (колкото ми позволява ниския интелект) предложените варианти.

=*=

НЕ! Нашата държава може да е тежко корумпирана. Може в резултат на това да е бедна. Може да ни управляват алчни копелдаци, независимо от разцветките им. Може да имаме некадърна, мързелива, изнервена администрация. Може никой, нищо да не върши, но да краде за последно. ВСИЧКО МОЖЕ!

НО! Нашата държава не е ненормална. Съвсем стандартна си е. Всичко описано важи за всяка произволна страна от САЩ до РФ. Никаква разлика. Разлика може да има в това, че при нас неуредиците са „една идея“ повече. Политиците ни са крадливи „една идея“ повече. Администрацията ни е неработеща „една идея“ повече.

Добре де, последното го казах от патриотизъм. Идеите са цяла идеология.

Но в нищо не сме шампиони. Така, както крадат например съседните ни румънски политици, нашите не могат и да сънуват. Така както не работят африканските администрации, на светлинни километри сме. В Африка има много богати страни на които да завиждаме. А специално неуредиците ни са на някакво средно европейско ниво. Не сме най-уредената страна, но има и по-зле.

Например видя се, че белгийската и френската полиция не работят много повече от нашата. А ние мислехме, че нашите са некадърни.

=*=

На данъчната администрация реално не ѝ трябват данни от складовата програма. На нея и трябва отчета на касовия апарат, от който тръгнахме. Помниш ли, че не говоря за КА, а за ЕКАФП? Помниш ли, че споменах, че имат SIM?

Нека ти раздухам далаверата. Мобилния оператор дава годишен абонамент с отстъпка на завода. Завода прави и той някаква отстъпка на местния сервиз. Местния сервиз прибира пълната цена на абонамента от клиента. И така всяка година.

„Евтинийка“ петдесетина лева. 48, ако трябва да сме точни. И всички по веригата са повече от доволни.

За какво служи този абонамент? Защо даваш тези грешни пари?

За да може държавата всеки месец да получава регулярно отчета на паметта на касовия ти апарат. Това не е точно същия отчет, за който говоря. Защото производителите в некадърността си, са направили този отчет неточен. Той може да е точен само в случай, че ЕКАФП се ползва за фискален (данъчен) принтер. В никакъв друг. Имаш ли повече от 100-200 продажби и отчета по артикули моментално става грешен. Затова не се праща той, а един друг.

В другия отчет, за който говоря цифрите са разбити по дни. Там пише така: на тоя ден е запълнена тая клетка от паметта (служи единствено за сервизни цели), влезнали са толкова пари. Край. Това за всеки работен ден от месеца.

Вие умните ще сметнете колко килобайта информация са това. И как за пращането им всеки месец даваш едни 50 лв. годишна такса. Плаща всеки който извършва икономическа дейност и не е банка или застраховател. Но това е на апарат. Ако има два апарата, плаща двойно.

Оставаме на страна, колко безумно словосъчетание е „клетка памет“.

=*=

Така, че реално държавата не ми иска извлечения от склада, какво е влязло, какво е излязло и какво е налично. Забелязваш ли, че е юли месец, а все още в този склад няма въведена нито една цифра за 2018 год.? 2017-та е завършила преди седем месеца. Аз съм първия (и ако не ме уволнят последния), който ще въвежда цифри в него.

Добре. Ако държавата не ми го търси, защо да го правя???

Тънката врътка е, че по всяко едно време може да се сети да ми го потърси не само за тази година, а за всяка от последните пет назад, която не е ревизирана.

Държавата няма интелектуалния и човешки ресурс (следователно и техническото обезпечение) да държи всеки един икономически обект непрекъснато на къса верижка. Това е въпрос на време. Когато се откраднат достатъчно стотици милиарди, все пак държавата ще бъде в състояние да го прави. Може би се гони трилион. За сега сме далеч от цифрата. Май са изхарчени „само“ малко над 150 милиарда за електронно правителство.

Какво прави в действителност данъчната администрация? Ами държи на къса верижка само тези, които точат ДДС или не плащат на време осигуровки. Или има данни за тях в инспекцията по труда, икономическа полиция и други служби. Сиреч нещо се е размирисало.

Останалите са оставени да си живуркат, колкото могат в определено неблагоприятните условия за стопански живот.

Към тях се подхожда цецо-цветановски, кампанийно или както го наричахме през деветдесетте – мутренски.

Просто от време на време ги налазват.

Всичко, което вършим за тези клиенти (освен текущите задачи), е да се готвим за този момент, когато дойде.

Хубавото на цялата ситуация е, че на всички равнища в държавата¹, на всяко едно институционално звено, цари пълна некомпетентност по кой да е въпрос. Така, че, ако документално си докарал всичко да е такова, каквото те го искат, то в крайна сметка се отърваваш само с глобата, която са решили да събират преди да започне кампанията. Плащаш и не те търсят повече. 

Щеше да е още по-хубаво, ако от самото начало бяха дошли да кажат: трябва да ти съберем еди-колко си и следващата половин година до девет месеца да не те занимават с глупости и безброй изписани листи.

Последната кампания беше от пролетта. Тогава бяха подгонили фризьори, маникюристи, дребни хотелиери. Ще видим при есенната кампания, кои ще ударят.

Как е? Желаеш ли да се прибереш? Защото според правителството, всички напъват да се връщат и летище София не може да смогне.

-----
¹ / Общините по принцип не би трябвало да са част от нея, но де факто са нейно продължение. Затова ги включвам в сметката.


Титла: Re: Софтуер за изработване на комбинации
Публикувано от: Naka в Jul 21, 2018, 13:32
// първи offtopic

Браво бе. Почнахме да мерим млекото в байтове.  ;D То верно темата била точно за кошчето.  8)


Титла: Re: Софтуер за изработване на комбинации
Публикувано от: go_fire в Jul 21, 2018, 15:23
Щом аз участвам в някоя тема, то няма как тя обезателно да не е за кошчето. Какво остава, ако съм неин автор?

Днес цял ден мързелувам и чета emacs-devel. Противно на плановете да поработя. Просто май съм уморен от толкова цифри на работа и след това.

Доколкото разбрах от това, което обясни Ремо е, че оригинално тази програма е мислена, как да побира повече mp3 на CD. Вид архивиране. Дисковете бяха скъпи. И всъщност е доста оригинално решение. Ако някой ми не беше казал, нямаше да повярвам, че съществува такова парче софтуер. И то, забележи, оригинално е замислено за професията на Непроизносимия – Металознание.

Така, че си е в традицията да се ползва за нещо дето не е предвидено. И това е доста оригинално. Аз никога не бих се сетил да ползвам такава конвергенция. Може би защото съм прекалено захлупен и праволинеен.


Титла: Re: Софтуер за изработване на комбинации
Публикувано от: remotexx в Jul 21, 2018, 16:41
Ами тогава нямаше що да намесваш склада въобще - задачата е доволно проста, имаме един числа (цели фактури) да се разбият на произволен бр. по-малки числа, така че сумата им да е равна на тотала (по фактура) - мисля наскоро друг съфорумец търсеше нещо подобно и каза май че имал оригинална идея (само не каза че му тряба за склад а уж само за разбиване на числа на случайни подсуми - преди около годна беше ако се не лъжа ..или мой беше оня със 100-те % компресия), и после ръчно гледаш ако е близо +/- 10% до артикул плясваш него с 10% остъпка/надценка, ако е далеч изписваш 1бр. с тая цена (напр. инджектопляктор) и продадена и повеч нивгаш не купена и те така.... като дойдат после на проверка викаш - като старшината в казармата "няма, няма и в склада няма", е ще продадеш бая инджектопляктори ама след 3-5 г. кой ли ще му пука пък и щом не е свързано с инвентаризации на склада ..нямаше нужда да го намесваме

- дали ще мерим млякото в байтове или в стотинки все тая - важното е да софтуера да му свърши работа, щото другия вариант (рекурсивен и итеративен) с пълното изчерпване ще гони N! факториел итерации което... със стотинките е лесно имаш 7 деноминации само да нагласиш 1,2,5,10,20,50ст. докато със склада при 2000 артукила ще са 1500-2000 деноминации - 2000!

"...според правителството, всички напъват да се връщат и летище София не може да смогне."
Ха-ха, чакай да свърши сезона, да видиш как всички се заизнизват наобратно, ама те т'ва няма да ви го съобщят, щото нямаме медии ами СМИ

като спомена наште братя мамалигарите... та се сетих:
Между другото възстановяват радио Свободна Европа и то специално за Румъния и България, ама тая новина едва ли е стигнала до нашите медии/СМИ
https://pressroom.rferl.org/a/rferl-expands-to-romania-bulgaria/29374397.html


Титла: Re: Софтуер за изработване на комбинации
Публикувано от: go_fire в Jul 21, 2018, 17:14
Май вярно съм прегрял. Няма как да е невъзможно. Всъщност по този начин сваляме до едномерно пространство и става възможна задача. Май трябва да преспя и утре просто да пробвам.

Аз може да съм прост инженер и затова да не разбирам защо не обръщаш внимание на идеята за разделяне на големия проблем на два по-малки и отделното им решаване:

1. Имаш крайно множество от цени;
2. Имаш крайно множество от артикули (с цени от първото множество);
3. Имаш една крайна сума.
———
1. Намираш някаква комбинация¹ от цени, която да удовлетворява условието сумата от цените от тази комбинация да съвпада с крайната сума;
2. След това търсиш да намериш съответните артикули от множеството на артикулите, които да имат цени, попаднали в горната комбинация;
3. Генерираш отчета (фиктивен явно) за продажбите за съответния месец.
———
Има какво да се оптимизира, но за това по-нататък.
 
Сега по-ясна ли става идеята или пак нищо не съм обяснил?

———
¹ комбинация не е най-точният термин в случая, но засега ще го оставим така.

Преди да се обърна специално към теб, дължа нещо на другите включили се с неоценима помощ.

Направо отиди най-долу.

=*=

Все пак събрах малко сили и започнах да обобщавам темата за себе си.

Имам дадени решения от няколко човека.

БЛАГОДАРЯ НА ВСИЧКИ!!!

Решението на Ласков би ми дало най-близък до действителността отговор, но при тези условия не е съвсем осъществимо.

Решение ми беше дадено и от Стелт. То е работещо, ако и имахме истински данни. Но при неистински данни то ни отдалечава още повече.

Решение даде и Джет. Това решение изглежда „просто“, но изисква подготовка. Оставям си го за изпробване на един бъдещ етап, когато ще имам събран опит с този конкретен казус. Харесвам го и е близко до някои от първоначалните ми, блуждаещи мисли. А то моите всички са такива.

Както каза Дантгуин, първо да имаме някакво решение, пък после ще го донагласваме. Пък и това си е по закона на Линус.

Решение даде Ремо. Както се очаква от толкова висок професионалист, то е теоретично яко подковано, сложно, шармантно и удивително. Ще се опитам да го направя. Досегашния ми опит показава, че негови идеи ми трябва по година, за да стигна до етапа, където мога да ги реализирам. Но са винаги блестящи, просто аз съм кух и бавноразвиващ. Обезателно ще се пробва.

Решение даде Йордан. То е разлято върху поне десет страници, най-подробно документирано и с вложена много енергия. На всичкото отгоре е лесно осъществимо дори от тъпак от моя ранг.

Мисля, че до този момент на него забравих да му благодаря в темата. Това никак не е честно. Крайно време е да се поправя.

Ти си истински отдаден човек и за мен е чест, че те познавам. Повече от поласкан съм, че ми отдели толкова време и търпение. Благодаря!

=*=

Сега дойде ред да обърна внимание на решението, което предложи два пъти. Харесвам това в него, че не е комплексно сложно. Или поне е такова, докато не се запозная с детайлите.

=*=

Задължителния OFFTOPIC

Казваш, че си прост инженер, но прости инженери няма. Не може да си изучил всичко, което учи, кой да е инженер и да останеш прост, дори преди това да си бил такъв. А и преди това не си бил, защото не може да те приемат в произволен ТУ, ако преди това цял живот не си спал със сборниците от задачи по математика.

Обаче прости инженери може да няма, но икономисти има. Може на петнадесет да си играл на двора, на шестнадесет да си почнал да гониш срещуположния пол, да си се наквасил с прилично количество алкохол, след няколко години да се е паднала единствената тема, която да си чел, да са те приели на магия, да си изкарал на магия, докато си продължавал да се наливаш с алкохол и да гониш фустите.

Накрая незнайно как да станеш любимец на част от преподавателското съсловие и някак си почти да успееш да завършиш. Но това не става преди да си направил няколко деца, да си ходил да набиваш крак на плаца и други странични занимания. И накрая да развиеш за отрицателно време шеметна кариера, която да се срине из под теб, защото са настъпили неблагоприятни условия. Да караш криво-ляво и да завършиш някъде си, ако ти се е усмихнало щастието.

През цялото това време може да си спал, изобщо да не си се развил в нищо, да си надебелял, да си оплешивял, да си пуснал брада и единственото ти достойнство е, че тровиш хората по форумите с несвързани дрънканици. И то докато си трезвен, защото не можеш да си позволиш да дадеш 5,60 за 5 л фалшиво вино, а ти се пие като на Калин Терзийски, ама разликата е, че си по-млад и си типичен българин, сиреч можеш да носиш много.

=*=

След 15 стр. стигам до това, което искам да те питам. Твоето решение ми харесва и с това, че следва един от основните принципи в компютрите. Може да не съм програмист, но го знам. И той е, че проблема трябва да се разбие на малки и лесно решими проблеми.

Затова харесвам двустъпковто ти решение. То е просто или поне докато не съм навлязъл в него. И то разбива голям проблем на два по-малки.

Първата точка изглежда обещаващо. Тя много прилича на това, което се описва във Википедия като комбинация. Или поне това, което разбрах.

Нека те цитирам отново:

1. Намираш някаква комбинация от цени, която да удовлетворява условието сумата от цените от тази комбинация да съвпада с крайната сума;
2. След това търсиш да намериш съответните артикули от множеството на артикулите, които да имат цени, попаднали в горната комбинация.

Малко не схващам. Добре да решим, че имам следния интервал от цени:

{0,5; 0,7; 1; 1,2; 2; 3}

(май така се изписваха)

Имам 40 бр. и 100 лв. сума. Как намирам това?

Ако правилно съм разбрал Википедия, мога да намеря, колко пъти се намират 40 бр. във 100 лв. Мога да намеря възможни сборове от 0,5; 07; 1 и т. н. даващи 100. Но не мога да намеря и двете.

Къде греша???


Титла: Re: Софтуер за изработване на комбинации
Публикувано от: go_fire в Jul 21, 2018, 17:46
За горната задача решавам, че от всичко имам на разположение по 100 бр., сиреч от всички имам предостатъчно, за да е по-лесно

=*=

Ремо, не вярвам, че това ще има същия ефект като през миналия век. Българина не вярва вече на никой, не му пука за нищо и кара ден за ден.

А и от братска Америка идват много лоши сигнали. Сега на власт там е ревизионист. Управлява човек, който иска да унищожи всичко постигнато в резултат на две световни войни, незнайно колко икономически кризи и векове на тъмно средновековие. Човек, който иска да поставя граници и да създава роби. Малко ни беше, че другите две свръхсили се управляват от такива хора, но и страната на свободата вече не иска свобода.

Остава единствено ЕС, но той оставен на самотек, също ще се разпадне. Какво ще ни каже радио „Свободна Европа“? Край на свободата, добре дошли обратно в средновековието, очаквайте скоро да се завърне и робството.


Титла: Re: Софтуер за изработване на комбинации
Публикувано от: remotexx в Jul 21, 2018, 18:35
Гого пак прoменяш условието на задачата.... първо имаше склад, после нямаше, имаше само тотал и там... с колкото бр. го докараме тоя тотал важно беше само да съвпадат с нещо с точно такава цена в склада, а сега вече имаме и бройки да съвпадаме... други промени очкават ли се?

Математиката е точна наука, и за да ти изкара, макар и приближено решение, трябва (най-важното е) правилно формулиране на заданието/задачата

Трябва с това да почнеш - пълна абстракция (и забравяш за склaдове и пр. битовизми)
значи засега задачата е следната:
Дадено:
 сума - Тотал напр. S=100 лв.
 бройки - Тотал напр. N=40 бр.
 някакъв наличен инвентар Xi артикула с ед. цена Yi, i [1..M] къде 1..2000
Търси се:
Такава комбинация от N елемента (може и повторения - предполагам , освен ако пак не прoмениш условието по-натам че да не може) таква че X1 * Y1 + .... + Xn * Yn = S или да е макс. близко (щото са се променяли цени, давани са отстъпки и надецнки и пр.)

Това ли е задачата в края на краищата? или ще има още прoмени...

Аз досега не знаех че ще има и бр. (мислех че намесваш бройките само с цел да не изпишеш повече от наличността в склада)

Тук отново опираме до това, че (за съжаление) за една отделна фактура е 'сравнително' лесно, но понеже не се взема в предвид цялата картинка може към последните да не са ти останали правилните 'деноминации' и да стигаш доста далеч от целта S т.е. пак оптималното  решение е SA или генетичен и пр. алгортъм само че върху всички наведнъж, но и поотделно става, само че вече не става само с оная програмка за сгъчкването файловете ами ще трябва да се разпише (е освен ако програмката няма опция за задване и точен бр. на файловете - не съм ровил там тя е с отворен код може и да има)

всички др. варианти с пълно изчерпване пак опират до 2000! ако искаш и програмка да играе на тото си напиши - теглиш случайни 40 от 2000 и гледаш колко близо си до S, общо взето и SA прави нещо подобно  но си помни и най-доброто състояние и скача към по-добро като от време на време скача и към по лошо за късмет и според тек. температура, колкото повече се охлажда по малко поема риск и те така...


Титла: Re: Софтуер за изработване на комбинации
Публикувано от: go_fire в Jul 21, 2018, 18:41
Не мога да те разбера. Явно аз не мога да се изразявам ясно, за което се извинявам. Условието на задачката винаги е било едно и също.

Имаме обобщени данни. Те казват: имаш продадени 5 бр. салам за 20 лв.

Задачата е да се разпределят тези 5 бр. измежду 20 вида различни кремвиши, колбаси, наденица и т.н., като от кремвишите имаш налични 2, които струват по 2 лв., от колбасите имаш 20, които струват по лев и т.н.


Титла: Re: Софтуер за изработване на комбинации
Публикувано от: remotexx в Jul 21, 2018, 18:48
ами можеше да почнеш и с тоя пример, като не те бива по абстракциите  ;D

чисто теоретично, ..да дам и аз един пример защо трябва да се оптимизира на цяло т.е. всички фактури наведнъж... да кажем първите 100 изписваш всичките салами от по 1лв. и към края ти идва фактура за 1 бр. салам от 1 лв. и нямаш щото предните вместо 100 х 1лв. е трябвало 50 х 2лв да нахакаш вътре

т.е. последно уточнение - трябва ли да НЕ прехвърляме наличността в склада да кажем 100 бр салам или може и 1000 да изпишем па после ще кажем че сме ги купили т.е. един вид да приемем че склада има безкрайно много бройки от всичко но пък иначе само от застопорени т.е. към момента налични стоки (т.е. инджектопляктор няма и няма и да има) което е крайно нереална ситуация?!? т.е. аз мисля реалистично и според здравия разум - 1) трябва да можем да си купим инджектопляктор 1 бр. на какват цена си решим (като гледаме да ни натамъни точно някой фактура/и) и да го продадем и повече да не си купим; 2) да кажем към дн. дата имаме 100 салама и ги разпределим, но се окаже че към дата на продажба н а тая фактура (т.е. трябва ли да намесваме и дата сега) в склада не е имало 100 салама ами само 2 бр. - пък алгортъма каже че сме продали 100 (щото към дн. дата сме имали толкова)

т.е. като ще се лъжем... т.е. като ще е гарга, да е рошава
или 1) можем да си измисляме каквото си искаме че сме купили и продали вкл. и точно някъв нов артикул дето баш такъв ни трябва за баш ей тая фактура 50 бр. 100 лв. с ед. цена 100/50 = 2лв - като ще лъжем да лъжем на едро
или ако па хич няма да се лъжем,
2) ще ни трябва наличности и цени в склада към датата на продажба на всяка една фактура
3) твойто май не попада в нито една от горните категории и това ме обърква тотално
нещо като булката да е сааамо малко бременна - е такова животно нема

П.П. Аз да ти кажа в тоя сл. карай както колгеите преди тебе - като видиш че е 100 лв за 40 салама - отваряш на стр. с цени (не вярвам да са гледали чак и наличности) и чисто евристично докарваш на око сумата от 100 лв. там пляскаш салами, кренвирши, суджуци че иначе.. което ме подсети че сега па и йерархия на артикулите ще трябва да правим - като пише 100 лв. салами не може да продаваш 100 бр. болт м8 напр.


Титла: Re: Софтуер за изработване на комбинации
Публикувано от: ddantgwyn в Jul 21, 2018, 19:08

1. Намираш някаква комбинация от цени, която да удовлетворява условието сумата от цените от тази комбинация да съвпада с крайната сума;
2. След това търсиш да намериш съответните артикули от множеството на артикулите, които да имат цени, попаднали в горната комбинация.

Малко не схващам. Добре да решим, че имам следния интервал от цени:

{0,5; 0,7; 1; 1,2; 2; 3}

(май така се изписваха)

Имам 40 бр. и 100 лв. сума. Как намирам това?

Ако правилно съм разбрал Википедия, мога да намеря, колко пъти се намират 40 бр. във 100 лв. Мога да намеря възможни сборове от 0,5; 07; 1 и т. н. даващи 100. Но не мога да намеря и двете.

Къде греша???

Грешиш, че искаш да намериш решението с една итерация¹. А аз предлагам да го търсиш с две итерации.

На първата итерация намираш решение на уравнението:

0,5*x₁ +0,7*x₂ +1*x₃ + 1,2*x₄ + 2*x₅ + 3*x₆ = 100

Сумата от тези променливи² {x₁, x₂, x₃, x₄, x₅, x₆} може да е по-голяма от 100³. Те нямат нищо общо с броя артикули, които имаш в склада. Те ти показват колко пъти трябва да продадеш един артикул със съответната цена за да постигнеш крайната сума на продажбите, която в случая си посочил, че е 100 лева. В общия случай x₁, x₂, x₃, x₄, x₅ и x₆ ще се намират в интервала {1, 200} и винаги ще са цяло число⁴.

Тук трябва да се използват, според мен, инструментите, които ти дава дискретната математика. Дали бяха пермутации, вариации или нещо трето, вече не помня.

Това е първата итерация — имаш някакво разпределение на цени от множеството ти цени, с които разполагаш, което удовлетворява горното условие.

Следва втората итерация:

Понеже съм сигурен, че винаги ще има два или повече артикула с една и съща цена, на втората итерация правиш разпределение на тези артикули. Примерно, ако имаш три артикула с цена 0,5 лева и си намерил, че x₁ е 6, трябва да разпределиш това x₁ между тези 6 артикула — кои от тях ще се появят в списъка на продажбите за този месец. Тук вече може да използваш генератор на случайни неща или някакъв друг подход.

Сега стана ли ти ясна идеята или трябва да обяснявам още?

И не забравяй, че това е само една идея — до претворяването и в нещо работещо има още много работа. А и може да се окаже, че това е неосъществима идея ::)

———
¹ и за итерация не съм убеден, че е точният термин, но в момента не се сещам за друга, по-подходящ;

² нека ги наричаме засега така.

³ това 100 няма нищо общо със сумата 100 лева, да не се объркаш.

⁴ тип integer


Титла: Re: Софтуер за изработване на комбинации
Публикувано от: go_fire в Jul 21, 2018, 19:21
За да изглежда истинско, трябва да изглежда истинско. Сиреч не можем да извадим повече, от колкото имаме. Но за опростяване да решим, че имаме повече от достатъчно. Това казах и на Дантгуин.

Някъде назад някой ме попита: Е добре, като „салама“ не ти стигне, какво правиш? „Болтове“ ли изписваш. Отговора тогава не го дадох. Не беше нарочно. Но отговора е – да. Изписвам болтове. При такива фалшиви складове често попадаме в ситуация, когато нямаме наличност да изписваме нещо коренно различно.

Колкото по-фалшив е склада, толкова по-често се случва, всеки път. Този склад поне е действителен в първата си част, какво е влязло.

Защото обикновено е точно обратното. Обикновено гамените не вземат фактура за нищо, карат го напълно на черно, но после малоумниците чукат продажби, за да покажат приход. И става ужас. Това е в 90% от клиентите на коя да е кантора. Ей тия вече са за бесене. Не са за бесене. За набиване на кол са. Тук поне нямаме нищо сиво. Всичко е бяло. Само дето нямаме информация.

От всички клиенти имаме едва два (добре три), при които има пълна и точна информация, какво е влязло и какво излязло. А това е точно половин процент от всички наши клиенти. Всички от останалите, които не са регистрирани по реда на ЗДДС са в откровено черната икономика.

Да си го знаете. Ако си имате работа с някой, но той няма BG пред булстата си, то той е достоен наследник на бай ви Ганя Балкански. Лъже, маже, брише и все на дребно. От носа си не вижда половин милиметър. Търгаш и никаквец. Но си мисли, че като има закътани мускали в пояса е ебал дявола. Нищо не е направил. Това важи за точно всички без BG. За част от останалите също е почти вярно, но тях държавата в общи линии поне си дава вид, че ги превъзпитава.

На никой под 200 хил. лв.  годишен оборот не трябва да му е позволено да наема работници. И не трябва да бъде търсен за нищо. Той така или иначе няма да го плати, каквото и да е. Данъци, осигуровки, заплати. Няма значение. Няма да плати. Като направи 200 хил., тогава да влиза в документо-оборота.


Титла: Re: Софтуер за изработване на комбинации
Публикувано от: Yasen6275 в Jul 21, 2018, 19:34
Прекрасна държава си имаме.

Някой не си е свършил работата(дали е частично или изцяло няма никакво значение) както трябва и същия или някой друг губи своето или нечие друго време, обикновено за да спести едни пари. Обикновено неоправдано малко на фона на загубеното време и нерви. И по това не сме шампиони. Но съм убеден че не сме далеч от първото място. В се пак сме в държавата в която основните занимания са как да прекараш системата и да се оплакваш как системата не работи.


Титла: Re: Софтуер за изработване на комбинации
Публикувано от: remotexx в Jul 21, 2018, 21:16
нееее когато е свършил салама не значи че изписваме болтове, ако всичко си е било както си требе, това обик. означава че В МОМЕНТА е Свършил но към момента на продaжбата е бил наличен (това ако са биле в 2та % честни частници, ако са били в другите и въобще не са гледали като са фактурирали... предлагам да им предложите и фактурирането вие да им го правите)

та сега за целта на твоята програмка какво приемаме, че ще изписваме болтове ако няма ТЕКУЩО наличен салам или ще изписваме САЛАМ макар и сега да няма (допускайки че е бил честен частник и е имало салам към датата на фактуриране)

малей колкото писане изписах - аз досега щях да съм ти написал прогамчето (даже и с по-малко редове код) - ако бехме успели обаче да изясним заданието
значи да изясним
1) като няма салам изписваме болтове или допускаме че е имало и въобще не гледами текущи наличности ами направо си изписваме по категорията
2) за йерархията от категории
- всичко ли е 1 ниво
- на повече от едно ниво
- за целите на фактурирането на колко нива е т.е. дали е само на едно ако ще и 5 под нива да е в склада
3) дай CSV/TSV представителна извадка на склад - т.е. групи с малки цени, с големи, със случaйни и такива с макс. разлика мин-макс цена
и... да се фащаме и да я напишем, а


Титла: Re: Софтуер за изработване на комбинации
Публикувано от: go_fire в Jul 21, 2018, 22:57
В този случай не би трябвало да ни се налага да изписваме болтове, но това е нещото, което ще трябва да се прави. Не може да се изписва на червено. Програмата не го позволява. По-точно го позволява, но се случват странни неща и затова не го правим.

Иначе в нея всичко е на едно ниво. Имаме кодове от (например) 101001 до 999001. Според имената им си ги групирам настрана (в електронна таблица),  кое какво е. И преди казвах, че скадовата е доволно тъпа. Но за кантори е идеална. Там трябва нещо просто.

После на лично ще ти напиша още нещо.

=*=

Макар с Ясен често (винаги) да сме на различни позиции, сега само за идеята ще се опитам да се съглася с него. И в действителност дълги години мислех точно като него.

Но това не е всичко.

Забелязал съм, че всички тези всъщност вярват, че си вършат съвестно работата. До толкова се бях отвратил от това, че аз самия нямах мотивация да продължавам. Но самозаблудата не е нещо лошо. То ти помага да оцелееш.

Ясен е по-отдавна от мен тук, но е възможно да не знае за Митака от Катуница. Това беше един системен администратор, футболен хулиган и националист от ВМРО. В един момент го изби на фашизъм и също както на Злати му биха банана.

Та той казваше, че ако един работодател не плаща нормални заплати, то просто не трябва да го има. Дълги години бях напълно съгласен с него.

Но през това време просто не оценявах, че не живеем в идеален свят. Срам не срам, Адам е отхапал от ябълката и сега трябва да живеем в тази помийна яма Земята. А Земята, ако не си любовница на Борисов, не е рай. То и мис Гащи я съжалявам. Живота в златен затвор, едва ли може да се нарече живот.

Ако не се допускат компромиси, икономика просто няма да има. Държавата (всяка една държава без изключение) е направила всичко, за да не може да съществува икономика. Не можеш да упражняваш никакъв, ама никакъв бизнес, ако не спазиш някой закон, поне един, ако не десетина. Все ще има минимум един (а никога не е един) закон, който забранява може би единствения ти шанс да вършиш нещо.

Щеш не щеш, не можеш да работиш по правилата. Все няколко правила  няма да спазиш. Може дори да не знаеш, че не ги спазваш. Повечето хора толкова малко познават законите и толкова не им пука за тях, че дори не осъзнават, че ги нарушават.

А то всички закони да ги знаеш не е възможно. Не е възможно да знаеш дори само тези, които се отнасят до твоята дейност. Няма как. И професорите по търговско право не ги знаят. Нищо, че са ги писали. По-скоро преписвали. Ние нямаме наша правна школа.

Всеки допуска компромиси. И това не е само в икономиката. Стопанството е просто един от аспектите на живота. Не е отделена от целия социум.

И точно човека, който с право ме обвини, че заемам крайни позиции, не би трябвало да изпада в същата ситуация.


Титла: Re: Софтуер за изработване на комбинации
Публикувано от: go_fire в Jul 22, 2018, 10:01
Снощи на Ремо му дадох реални данни от реалния склад. Не се страхувам да му ги дам, защото е повече от да му вярвам. Но не мога да ги дам публично.

Въпроса е в това, че този клиент е известен в града. Не е политик, не членува в партии, просто бизнесмен е. Но е от видните хора на града. Дори, ако само кажа, с какъв точно вид търговия се занимава, пак ще го изложа на риск.

Града е малък, направо микроскопичен. Канторите са не повече от девет. А в тях сумарно има не повече от петима мъже. И аз май не познавам друг Георги. Кантората е известна и веднага може да се разбере коя е.

От друга страна в бизнеса на клиента са пак не повече от десетина. Но двама (плюс една) са по-големите. Така много лесно ще се разбере кой е.

От научаване на името му, не могат да последват сериозни щети. Но това е само на пръв поглед. Истината е, че в България дребния бизнес е на ръба на оцеляването. Само месец със занижен оборот (под очаквания) може да те изкара от пазара. Дори да си тези с по-сериозен дял. Сериозен дял от нищо, пак е нищо. На мен ми плащат да защитавам интереса на клиентите си, не да го накърнявам.

Затова се извинявам, че не давам публично реални данни.

=*=

Тази сутрин направих наблюдение. Отговарял съм на някои въпроси, но заради заливането с извънтемие, тези отговори са останали скрити. Хак да ми е.

Склад за данъчни и счетоводни цели не е точно реален склад. Разликата е в това, че е малко по-обобщен. Дава се по категории продукти, а не по отделни артикули. Друг е въпроса, че в този случай вместо например 400 категории имаме 4 000 заради разликите в цените, които също (което не е обичайно) са отразени в системата от категории.

Другата разлика произтича от отчетите по продажби. Както казах те са общи и в края на месеца. Така се записват и в склада за данъчни и счетоводни цели. Ако има движение по банка то също се дава сумирано с една дълга операция в края на месеца, като тя може да е омешана с продажбите в брой или отделна. В този случай като да съм да я давам отделно, защото за нея (в общи линии) имам точна информация и не ми се налага разпределение.

Обобщено:

1. Прихода в склада се дава на ниво фактура. С деня и с конкретното влязлото;

2. Разхода се дава общ в края на месеца;

3. Ако няма салам, се изписват болтове. Данъчните не трябва да виждат никакви минуси. В този случай едва ли ще се наложи. Зад всичко седи фактура, няма капка черна икономика. Но заради изписването по трудовете на Нагоденко, може все пак да се наложи;

4. Говоря за категории, но йерархия от такива има само извън склада. Склада е плоска структура.