Példa:
Van 3 költség típusunk, melyeknél meg van a szabadságunk változtatni úgy, hogy a célzott költség a jelenlegi értékük és nulla közé essen. Havonta 100, 30 és 5 dollárba kerülnek. Ez összesen 135 dollár. Ezt a havi költséget szeretnénk levinni 80 dollárra. Tudjuk a súlyozást mindegyikhez, mely 5, 19, 40 értékű.
Mi adja a problémát?
Az, hogy nem lehet lineáris műveletekkel és sima súlyozott átlaggal kiszámolni a végeredményt úgy, hogy garantálni tudjuk, hogy soha semmilyen bemeneti kombináció nem okoz negatív értéket, vagy az eredetinél nagyobbat.
Ahogy egyre csökkentjük a kiindulási értékeket hogy elérjük a cél összeget, egyre lassulnia kell az értékcsökkenés sebességének, ahogy a nullát közelítjük. Másképpen fogalmazva, a csökkenés deriváltjának folyamatosan át kell mennie a súly értékéből nullába.
Miért van ez?
Azért, mert a súly független a kiindulási költségtől. Nézzünk két megoldási esetet.
1) Csökkentéssel számolva
Amikor felosztjuk a kezdeti költség összeg és cél összeg különbségét a súlyok alapján és mindegyik költséget ennyivel csökkentjük, akkor a súly független a kiindulási költségtől, ezért bármennyivel csökkentheti azt. Ha nagyobb a csökkenés mint az eredeti érték, akkor mínuszba mehet az eredmény.
A fenti példánál maradva a kiindulási összeg és cél összeg különbsége = ( 100 + 30 + 5 ) - 80 = 135 – 80 = 55. Tehát 55 dollárral kell csökkenteni az eredeti havi 135 dollárt. Ha az 55-öt felosztjuk a súlyok arányában, akkor 6.25, 23.75, 50 értékeket kapunk. Ha ezeket levonjuk a kiindulási költségekből, akkor a cél költségek 100 – 6.25, 30 – 23.75, 5 – 50 lesznek, amik 93.75, 6.25, -45.
Láthatjuk, hogy az utolsó értéknél az 5-ből -45 lett, vagyis mínuszba ment. Ez nem megengedett a kiindulásnál definiált feltételek alapján.
2) Növeléssel számolva
Ha fordítva csináljuk a cél összeg elérést és nem elkezdjük csökkenteni a kiindulási értékeket, hanem nulláról növeljük a súlyuk arányában addig, amíg el nem érjük a cél összeget, akkor meg túl nőhetnek az eredeti értéküknél. 100-hoz 6.25-öt kapunk, 30-hoz 23.75-öt és 5-höz 50-et. Látjuk, hogy az utolsó érték túlnő.
Mi a megoldás?
Az eredeti kiindulási költség szorzójának mindig 0 és 1 közé kell esnie. És mindenképpen szorzást kell végeznünk, hogy arányosságot tudjunk tartani. A 0 és 1 közé pedig egy faktor és a súly szorzójának kell esnie. És a végösszegnek el kell érnie a 80 dollárt.
Definíciók:
c → cost original (eredeti költségek)
t → cost total (végső költségek összege)
w → weight (költségek fontossága)
i → index (kiválasztja a költséget)
Tudjuk, hogy “t”-nek egyenlőnek kell lennie a végső költségek összegével, melyeket úgy kapunk, hogy egy “y” faktorral szorozzuk az eredeti költségeket és ezt a faktort állapítjuk meg később.
t = sum( ci * y )
Ebből az egyenkénti végső költségek értéke:
ci * y
Tudjuk, hogy az “y” faktornak 0 és 1 közé szabad csak esnie, mert ekkor az eredeti érték és nulla között fogja tartani a végső értéket. Viszont függenie kell az eredeti költség súlyától. Hogyan érem ezt el?
Egyrészt behajlítom “y” értékét egy olyan görbébe, mely az “x” tengelyen nulla pontból növekszik és aszimptotikusan közelíti 1-et. Lásd az alábbi linken a zöld görbét, mely hiperbolikus tangens, és a kék görbét, mely egy fordított hiperbola balra csúsztatva.
https://www.geogebra.org/graphing/hqcyy4xr
A kettő közül hiperbolikus tangens-t választom, mert az gyorsabban konvergál az 1-es érték felé és így majd később a felezéses közelítésnél jobban behatárolt felső limitből tudok indulni, nem pedig a végtelent közelítő értéktől. Erről később.
Tehát azt mondom, hogy:
y = tanh( x * wi )
Melyhez keresem “x” értékét. Mit érek el ezzel? A nagyobb súlyok feljebb lesznek (“y” értéke nagyobb lesz), a kisebbek pedig lejjebb. De csakis 0 és 1 között.
És “x” értékét pedig bináris lépésekkel keresem meg 0 és a felső limit között (logaritmikus keresés másképpen). Ha valaki nem ismeri, akkor lásd::
https://en.wikipedia.org/wiki/Binary_search_algorithm
Mi történik? Egy olyan adaptív mechanizmust csinálok ezzel, mely az “x” tengelyen húzkodja a súlyokat balra és jobbra az “x” faktor keresése közben. És úgy fogja beállítani őket az “x” tengelyen, hogy az “y” tengelyen megjelenő értékeikkel szorzott eredeti költségek összege pontosan a cél összeget adja.
Előny, hogy elég az “x” keresését relatíve alacsony értékből indíthatom, mert tanh(x) már a 20-as értéknél is túlcsordul és 1-et kapok a lebegőpontos ábrázolás felbontása miatt. Így az “x” kiindulási limitjét úgy határozom meg, hogy 20-at osztom a legkisebb súllyal és azt használom, ha nagyobb mint 20, egyébként pedig 20-at.
x_start = max( 20, 20 / w_min )
Eredmény:
A fenti példát beadva az eredmény így alakul, immáron túlcsordulás és negatívok nélkül:
100 → 45.91574882372393
30 → 29.08557143952188
5 → 4.998679736754175
Kerekítve:
100 → 45.9
30 → 29.1
5 → 5
Ellenőrizzünk:
45.9 + 29.1 + 5 = 80
Tehát tetszőleges költségeket tetszőleges súlyokkal csökkentettem tetszőleges végösszeget célozva.
Nézzünk egy másik random példát:
költségek = 215, 105, 100
súlyok = 2.24, 1.48, 4.08
kiindulási összeg = 420
cél összeg = 77.04
Eredmény:
215 → 34.4
105 → 8.44
100 → 34.2
Kiegészítés:
Ha költség növelésről van szó, az egyszerű. A növekedési különbséget felosztjuk a súlyok arányában és ezzel növeljük az eredeti költségeket.
- sinexton blogja
- A hozzászóláshoz be kell jelentkezni
Hozzászólások
Javits ki, de azt hiszem ez a knapsack (zsakolasi) problema egyik valtozata:
https://en.wikipedia.org/wiki/Knapsack_problem
Van ra megoldas (legalabbis az integer knapsackre), heurisztikus es egzakt is, erdemes volna osszehasonlitani nagyobb problemaknal a megoldast, azt hogy az ertek mennyire van kozel a maximumhoz egy adott adott konfiguracional, a pontos megoldas nem biztos hogy ugyanaz.
- A hozzászóláshoz be kell jelentkezni
Megnéztem és picit más a probléma ha jól nézem, de azért érdekes és nyugodtan jöhet bármi relevancia. Köszi.
Úgy látom, hogy knapsack-nél az értéket maxolják ki a súly függvényében. Nálam pedig nincs érték, csupán a súly függvényében akarom csökkenteni. Tehát a relációt egymáshoz képest a súlyok adják és az érték határok (max és nulla) korlátozzák.
Természetesen aktívan vizsgálom, hogy hogyan módosulnak a súlyok egymáshoz képesti viszonya a hip. tangens miatt. Kutatásom arra is irányul, hogy a másik, hiperbolikus megoldásnál hogyan módosulnak.
Még egy megoldás. Egy rugó lenyomás és felnyomásnak tudom szemléltetni, ahol a rugó spiráljainak egymástól való távolsága szemlélteti a súlyokat. És felnyomásból indulunk, ahol maximumra van felfelé összenyomva a rugó és így minden súly 1-es értékű. Tehát a teljes összeg nagyobb mint a keresett végösszeg.
Majd engedjük le amíg a legkisebb súly el nem éri a nullát vagy egy alsó limitet és keressük, hogy hol találjuk meg a pontos cél összeget. Ha nincs meg, akkor tovább lehet menni vele lenyomással, ahol a súlyok nullába konvergálnak. Itt a végösszeg nulla, tehát a teljes összes kisebb mint a keresett összeg.
Ezért a kettő között lesz a válasz. Tehát ez egy lineáris 2 fázisú eljárás. Viszont látni kell, hogy a súlyok egymáshoz képesti aránya itt is módosul, hiperbolikusan felgyorsuló és lecsengő fázissal.
- A hozzászóláshoz be kell jelentkezni
Meg ranezek erre a hetvegen, de ha jol latom itt torzulnak a sulyok, es az a kerdes mennyire szabad elterni a megadottol...
Nekem az az erzesem meg lehet ezt oldani sulyok torzulasa nelkul is, bar nem valoszinu hogy linearis lesz a megoldokeplet. A kenyszereket, hogy a vasarolt ertek ne legyen negativ sok felekeppen figyelembe lehet venni, pl negyzetek osszeget nezed. Ha a vegeredmeny nem is egyszeru keplet, de sokszor fix-pont keresesi modszerrel par iteracioval megvan.
- A hozzászóláshoz be kell jelentkezni
OK, érdekel mire jutsz.
Viszont az belátható szerintem, hogy ha a csökkentendő teljes összeget a súlyok arányában osztjuk fel, majd levonjuk a kiinduló értékekből, akkor némely esetben negatívot kell hogy kapjunk.
- A hozzászóláshoz be kell jelentkezni
A kommenteket olvasva sem teljesen egyertelmu nekem, hogy mit ertesz sulyokon.
Most T_orig = sum(c_i), de szeretned, ha T = 80 = sum(c_i* y ), ahol y egy kozos szorzo?
Miben hasznalod ilyenkor a sulyt? Hogy allapitod meg, hogy serult a sulyozas?
Vagy eseltleg a T = 80 = sum(c_i*y_i) kenyszer-egyenletben y_i, a suly, es szerentned ha y_i / sum(y_i) = w_i/sum(w_i) ? (tehat az eredeti T_orig-ban mindennek 1 a sulya, T-nel pedig y_i)
Vagy a T_orig - T csokkenest okozo Delta c_i vektor aranyos legyen a w_i-vel?
- A hozzászóláshoz be kell jelentkezni
OK, a kérdésed jó. Az "y"-t elírtam, helyesen "y_i", ahogy írtad is. Tehát:
t = 80 = sum( c_i * y_i )
És "y_i" minél kevésbé térjen el "w_i"-től, ha van rá mód. Ehhez egy közös faktort használtam, ami "x". Ahol:
y_i = tanh( w_i * x )
Az "x" közös faktor azért kell, hogy bináris kereséssel be tudjam állítani y_i értékét és elérjek a 80-as célösszeghez.
Nyilván külön is állíthatnád "x" értékét, a kérdés az, hogy mivel tudnak legjobban teljesülni a kiindulási feltételek.
Természetesen a súlyok torzulásának mértéke nem definiált, de pont itt van a megoldás szabadságának foka. Ha definiált lenne, akkor nincs kérdés és adott a megoldás. Tehát pont azt a kérdést kutatom, hogy hogyan torzuljanak a súlyok, ha szükséges a torzulás.
- A hozzászóláshoz be kell jelentkezni
Ha csak aranyokrol van szo, akkor miert nem
T_w := sum(c_i, w_i), utana pedig y_i := 80*w_i/T_w
?
Ez garantalna az aranyokat es a vegosszeget is.
- A hozzászóláshoz be kell jelentkezni
Kijönne így az összeg, de ezzel az értékek nagyobbra nőhetnének az eredeti értéknél, illetve negatívba is mehetnének.
Pont ez adja a megoldás nehézségét, hogy a feltételem az, hogy nulla és az eredeti érték közé kell esnie az új értékeknek.
- A hozzászóláshoz be kell jelentkezni
Bocs, valoban igy van . Lentebb amugy irtad, hogy ez egy valo eletbol vett problema. Gondolom ott a sulyok valamilyen linearis/derivalt alakbol szuletnek (pl stressz teszt, kis skalaju felmeres, proba), ami miatt nagy skalan ertelmuket veszthetik (negativ osszeg vagy 1-nel nagyobb szorzo). Nyilvan valamit tenni kell, amire egy megoldas a te altalad felvazolt modszer, de elobb-utobb muszaj lesz tesztelni ennek is a hatekonysagat.
- A hozzászóláshoz be kell jelentkezni
Köszi.
Igen, a valós feladatomban pontos súlyok érhetőek el és valós fontossági arányt mutatnak.
A hatékonyságot teszteljük, viszont tökéletes optimum konvergencia nem feltétlen bizonyítható egyelőre, így szuboptium adott. Emberi döntéshez képest kell jobbnak lennie, így ez már több mint jó.
- A hozzászóláshoz be kell jelentkezni
Szerintem torzítani kell a súlyokat, mert ellenkező esetben túlhatározott a probléma.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
100 → 45.9
30 → 29.1
5 → 5
De ekkor hol maradt az, hogy a költségek súlya 5, 19, 40?
Baromira nem értelek, mit takar a költségek súlyozása feltétel, és miért tartod be ennél a megoldásnál: miknek lesz az aránya itt 5:19:40?
- A hozzászóláshoz be kell jelentkezni
Jó a kérdés és ezért jó a példám, mert ezek a számok megmutatják a szélsőséges esetet, amire kell a megoldás.
Nem tudom, hogy olvastad-e feljebb a negatív példát. Normál súlyozással 93.75, 6.25, -45 értékekre csökkenne az eredmény, ugyanis 55 dollárt le kell dolgozni a 135-ből.
A súlyok megtartásával nem lehet. Erről írhattam volna bővebben. Lényeg, hogy torzítás kell. A kérdés az, hogyan lehet megtenni ezt a torzítást. Mindenképpen úgy, hogy mivel negatívba nem mehetünk, ezért a nulla felé be kell lassulnia a csökkenésnek. Viszont ez miatt a csökkenés elindulásánál is lassú a "felfutás" a csökkenés sebességének, és ez látszik. Tehát a kisebb súllyal rendelkező gyorsabban kezd el csökkenni, de ott már elérte a cél értéket.
Feljebb írtam 3 megoldást is, mely ezt megteszi. Ha ezekhez van kérdésed, szívesen válaszolok.
Amint lesz időm, megmutatom a 3. megoldás működését.
- A hozzászóláshoz be kell jelentkezni
na de amint elengedjük a súlyokat (relaxálni kell a feltételt, mert amúgy nincs megoldás), akkor meg nem tök mindegy, hogy mi a végeredmény, amíg az összeg 80 lesz? lehetne 80-0-0 is, pontosan ugyanannyira jó, mint bármelyik másik, mert eldobtuk a "költségek súlya" feltételt.
- A hozzászóláshoz be kell jelentkezni
Optimalizálásnál nem mindegy. Az adott lehetőségeket illetően mi a jobb (vagy kisebbik rossz)? Törekszek a súlyok minél kisebb torzulására. És mivel a súlyok előnyöket jelentenek, így nem mindegy.
- A hozzászóláshoz be kell jelentkezni
Megfogalmazhatod úgy a problémát, hogy van egy szám n-esed (x_i) és egy idealizált súly n-esed (w_i). Van egy célszámod (T). Keresed azt a w'_i szám n-est, amelyre igaz, hogy szumma(x_i*w'_i) = T, és w'_i közel van w_i-hez. Na, ez a közelség az, amit definiálni kéne, hogy hogyan teszed meg. Ha ez megvan, akkor ez egy optimalizálási probléma, eléggé jól definiált dolog. De kell hozzá az, hogy bármely két w szám n-est össze tudd hasonlítani. Akár az is lehet, hogy rendezési relációt adsz csak meg, de definiálhatsz rájuk metrikát is, sokfélét.
Az, hogy mi lesz a legjobb megoldás, ettől a közelségdefiníciótól/rendezési relációtól függ, nem lehet általános megoldást adni, amíg ez nincs definiálva.
Nálad mi ez a közelségmetrika? Miért pont ez a legjobb?
- A hozzászóláshoz be kell jelentkezni
Ugyanazt leírtad, hogy minél jobban tartsuk a súlyokat, de közben el akarjuk érni a cél összeget. Ehhez torzulniuk kell.
Izgalmasabb szerintem ha megpróbálod megoldani és előjönni ötletekkel. Én felsoroltam 3 lehetséges megoldást. Persze a nullából 1-be konvergáló függvény sok fajta lehet. További kutatást kell beletenni ezek vizsgálatába és az optimum definícióba és hogy lehet-e optimum konvergenciát bizonyítani bármilyen kereten belül.
Részemről a fontos lépés a felismerése a nullából 1-be konvergáló függvény szüksége.
Ha a torzulás mértékét a két súly különbségével jellemezzük, akkor az eredeti súlynak is normalizáltnak kell lennie. Itt mondjuk eleve több megoldandó probléma van, melyek már kezeltem. Például nem jó ha 0 és 1 közé vannak széthúzva, mert akkor a 0-ban és 1-ben lévő súlyok közül az egyik nem változik. Ettől tekintsünk most el.
Ha normalizált súlyokat hasonlítunk és így mindkét esetben 0..1 intervallumot kapunk, akkor
sum( | w_i - w'_i | ) adhatja a torzulás mértékét, de jobb ha L2-t veszünk négyzetes eltéréssel:
sum( ( w_i - w'_i )^2 )
Mivel végtelen állapot van az "x" faktor értéke alapján, így "x" minden állapotához tartozó előbbi summa értékének eloszlását érdemes vizsgálni szerintem az integrállal, melynél adja magát a várható érték meghatározása. Ezzel összehasonlíthatóvá válnak a különböző függvények, melyek között így további optimum kereshető.
További kérdés, hogy fixen kell-e tartani a kiindulási értékeket (c_i) és végösszeget (t). Vagy lehetséges ezektől függetlenül generalizálni az optimum keresést.
- A hozzászóláshoz be kell jelentkezni
Mit jelent azt, hogy 0-ból 1-be konvergáló függvény?
Aminek -Inf-ben a határértéke 0, +Inf-ben pedig a határértéke 1? A tanh() nem ilyen.
Ha olyan kellene, hogy 0-ban 0, és a határértéke +Inf-ben 1, az megint mást jelent.
Először fogalmazd meg a feladatot jól. Eleve miért kéne olyan függvénynek lennie, aminek a határértéke +Inf-ben 1? Miért is kell ez? Fogalmazd meg rendesen a feladatot, ha matematikáról van szó.
- A hozzászóláshoz be kell jelentkezni
Ne foglalkozz a megoldásommal, mert megzavar.
Adott c_0 ... c_n, továbbiakban c_i, melyek szám értékek.
Ezeket kell csökkenteni annyira, hogy az összegük végül t legyen ahol t <= sum( c_i )
Minden c_i -hez tartozik egy w_i súly, amelyeket minél jobban figyelembe kell venni c_i csökkentésekor, ahol w_i súlyok a c_i értékek fontosságát mutatják. Nagyobb w_i érték mellett kevésbé akarom csökkenteni c_i értékét.
Feltétel, hogy c_i csökkentett eredménye nem lehet nagyobb mint c_i és kisebb mint 0, tehát 0 és az eredeti érték közé kell hogy essen.
- A hozzászóláshoz be kell jelentkezni
Ez rendben is van. Most már csak ezt kell szabatosan definiálnod, és már közelítünk a normális megfogalmazás felé:
"minél jobban figyelembe kell venni", "Nagyobb w_i érték mellett kevésbé akarom csökkenteni c_i értékét."
De hogyan jön ehhez a végtelenben 1-be konvergáló függvények halmaza? Azt a megjegyzést tetted, hogy ez nagyon fontos elem.
- A hozzászóláshoz be kell jelentkezni
Gondolom, az a célja, hogy ami 1 fölé menne, az egyre jobban felkeményedjen 1-hez közeledve, egyre nagyobb ellenállást fejtsen ki az ellen, hogy elérd az 1-et. Ehhez egy ilyen nonlinearitás épp jó. Az persze izgalmas kérdés, melyik lehet az a függvény, amely valamely szempont alapján az optimális, és képesek vagyunk-e megfogalmazni ezt a szempontot.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Így van, ahhoz, hogy jól megoldj egy feladatot és helyes megoldást adj, ahhoz először is pontosan definiálni kell, hogy mi is a feladat.
- A hozzászóláshoz be kell jelentkezni
Ő adott egy olyan megoldást, ami szinte biztos, hogy nem optimális - hiszen az optimum kritériuma meg sem lett fogalmazva -, viszont az általa megfogalmazott peremfeltételeknek eleget tesz. Nem lesz egyik költség sem negatív, és nem lesz több a jelenleginél. Arra kellene kritériumot adni, hogy a súlyok minél kevésbé torzuljanak. Én erre talán a súlyok eredetitől való eltérésének négyzetét szoroznám a súllyal, ezeket összegezném, s ennek minimumát keresném. Azért, mert ebben megfogalmazódik, hogy a nagy eltérést nem szeretjük, és az is, hogy a nagyobb súlyú tétel fontosabb, szóval a nagy súlyúnak már a kisebb eltérését sem szeretjük annyira. :)
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Nem tudod elfogadni, amikor a szabadság foka nem 1, hanem mondjuk 30 egy rendszerben. Nem definiált, amit nem definiáltam. Kötekedhetsz, de akkor is az a kiinduló feltétel, amit írtam.
Nincs határozott optimum definíció, mert nem meghatározott a súlyok viszonya. Ez adja a nagyobb szabadságfokot. Ezért aktív kutatásom tárgya. Alkalmazott matematikáról van szó, ezért nehéz. Mert a tökéletlen és nagy információ hiánnyal rendelkező gyakorlathoz kell igazítani.
Még egyszer leírom a feltételt: tudunk fontossági arányt felállítani és a kérdés az, hogy HOGYAN alkalmazzam ezt a csökkentés folyamán.
Csak ennyi infó ismert. Csökkentenem kell az értékeket egy végösszegre, és tudom a fontossági arányt. Hogyan csökkentsem?
Ezért nehéz. Akkor is kell szuboptimális megoldást adni, ha valaki nem tudja elfogadni, hogy nem zárt problémáról beszélünk. A döntés nem megúszható.
- A hozzászóláshoz be kell jelentkezni
Még mindig nem definiáltad matematikailag a feladatot. Nem azért nehéz, mert alkalmazott matematika, hanem azért, mert nem definiált a probléma.
"tudunk fontossági arányt felállítani és a kérdés az, hogy HOGYAN alkalmazzam ezt a csökkentés folyamán."
Ez nem problémadefiníció.
Nem kötekszem azért, hogy kötekedjek, hanem PONTOS, precíz, matematikailag értelmes definíciót keresek a problémához, hogy lehessen vele matematikailag dolgozni.
Mert amíg ez nincs meg, ez csak játék a számokkal.
"Akkor is kell szuboptimális megoldást adni, ha valaki nem tudja elfogadni, hogy nem zárt problémáról beszélünk. "
Ember, amíg nem definiált az, hogy mi a célfüggvény, addig nem tudhatod, hogy a megoldásod szuboptimális vagy sem.
- A hozzászóláshoz be kell jelentkezni
Készakarva nem definiált. Ez a kérdés is a kutatás tárgya. Milyen kérdést tegyünk fel itt?
Egyébként például:
Hívjuk d_i -nek (difference), amely értékkel c_i csökken végül. Tehát:
sum( c_i - d_i ) = t
Cél: nagyobb w_i-hez (fontosabb faktor) kisebb d_i tartozzon. Vagyis minimalizálni sum( d_i / w_i ) értékét. De közben tartani kell a feltételt, hogy nulla és az eredetei érték közé eshet c_i végső csökkentett értéke.
Mivel osztás van benne (ami szorzás reciprokkal), így eleve gyökét venném, hogy visszakerüljünk valamelyes az eredeti nagyságrendbe.
sum( ( d_i / w_i )^0.5 )
De az összegük helyett akár a szorzatukra is minimalizálhatunk: PI( d_i / w_i )
(Itt kezelendő a nulla kérdése)
Nem biztos hogy ez a minimalizálandó feltétel az értelmesebb. Ezért kutatás tárgya.
- A hozzászóláshoz be kell jelentkezni
A szorzat hülyeség. Ha az egyik súly torzítatlan, akkor szorzásnál a többi szabadon szétszéledhet, mint puli kutya nélkül a nyáj.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Példákat mutattam. Egyébként a szorzat is lehetne jó, mert az is a minimum felé hajt, csak másképpen.
PI( d / w ) = PI( d ) / PI( w )
Tehát itt az összes szempontjából történne. Vagyis nem azt mondanánk, hogy külön értékeknél számítson, hanem összesítve számítson. De ez csak egy példa.
Erről szól a kutatás. Azt el tudod fogadni, hogy ez egy függőben lévő kérdés?
- A hozzászóláshoz be kell jelentkezni
Persze, az is szubjektív volt, amit én mondtam. Az egyes súlyok differenciáinak - tehát torzulásának - négyzete szorozva a súllyal, ez összegezve az összesre, s ennek minimumát keressük.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Megadom tanh helyett hiperbolikus torzítással az eredményt (hasonló):
100 -> 51.05619643289005
30 -> 24.42510797087086
5 -> 4.518695596239085
- A hozzászóláshoz be kell jelentkezni
Befejeztem a lekódolását egy harmadik eljárásnak is. Módosítottam a fenti rugós példán.
Úgy működik, hogy mindegyik költséget elkezdem csökkenteni, amíg el nem éri a cél összeget. A csökkentés sebességét pedig a súlyuk reciproka adja. Ha mínuszba menne egy érték, akkor nullán tartom.
A fenti első példa eredménye ezzel a metódussal:
100 -> 59.2
30 -> 20.3
5 -> 0.471
Itt az alap különbség, hogy nem gyorsul és nem lassul a csökkenés sebessége az elején és végén.
- A hozzászóláshoz be kell jelentkezni
Azaz a változás ~ 40, 10, 4, ami majdnem a "reciproka" a súlyoknak (5, 19, 40). Azaz gyakorlatilag a változás*súly érték közel megegyezik mindegyik elemre.
- A hozzászóláshoz be kell jelentkezni
Igen, de csak azért, mert nem kellett nullába vinni semelyik kiinduló értéket. Ha kellett volna, akkor torzulnia kell itt is a súlyoknak.
- A hozzászóláshoz be kell jelentkezni
Mutatok egy példát:
cost original total 33607
cost goal total 31428 (93.5%)
tanh:
w 1.57 c 151 -> 141
w 1.49 c 1081 -> 737
w 3.7 c 169 -> 169
w 1.58 c 32206 -> 30381
linear:
w 1.57 c 151 -> 0
w 1.49 c 1081 -> 0
w 3.7 c 169 -> 104
w 1.58 c 32206 -> 31324
A lineárisnál a változások:
151, 1081, 65, 882
Ha az utolsónak az eredeti súlyt vesszük (1.58), akkor a többi súlya erre jön ki:
9.22, 1.28, 21.4, 1.58
Ezek pedig az eredeti súlyok voltak:
1.57, 1.49, 3.7, 1.58
Tehát torzultak és ez normális, hogy ha valamelyik is nem csökkenthető tovább, mert negatívba menne.
- A hozzászóláshoz be kell jelentkezni
A probléma azért érdekes szerintem, mert adottak a kiindulási értékek és a súlyok és mindenképpen el kell érni a cél összeget. És nem triviális, hogyan tegyük meg.
- A hozzászóláshoz be kell jelentkezni
Még egyszer: ha relaxálod azt a feltételt, hogy a súlyozást be kell tartani, akkor tetszőleges megoldás lehet jó. Ugyanis nincs definiálva semmilyen célfüggvényed, amit optimalizálni kell.
Definiáld rendesen a feladatot. Ha már matematikáról van szó, akkor legyen matematikai feladat, mert ez így csak játék a számokkal, és nem matematika.
- A hozzászóláshoz be kell jelentkezni
Tudsz mutatni egy valós problémát és arra megoldást?
Bevallom nem tudom elképzelni.
- A hozzászóláshoz be kell jelentkezni
Pénzt osztanak szét gazdasági entitások között, melyeknek egyébként jól behatárolható a hatékonysági vagy más mutatója sok szempont alapján, és most csökkenteni kell a szétosztott összeget. De nem az eddigi szétosztás arányában akarják csökkenteni, hanem a mutatók figyelembe vételével.
Úgy is fel lehet fogni, hogy nem csak a végösszeg csökken, hanem a szétosztás fontossága is. Ez adja a komplexitását.
Másik példa. Cégnek csökken a bevétele és ezért a kiadását is csökkenteni akarja. De nem az eddigi kiadások arányában (miért tenné úgy?), hanem a meghatározott fontosság szempontjából.
Vagy egy beruházás X tőkét indokolna, mely gondos tervezés alapján jön ki. De csökkentettből kell kihozni. Ha van szabadság foka a különböző egységekre jutó tőke csökkentésének és meghatározható a fontosságuk (ez külön kérdés, de amin dolgozok ott igen), akkor ott is adott a feladat.
Tehát egy más kialakított költség struktúrán változtatunk. Nem nulláról, mert akkor akármennyire ki tudod alakítani a költség felosztást. Hanem egy már meglévőn kell módosítani csökkentéssel adott fontosságok figyelembe vételével.
Példákkal nehéz készülni, remélem valamennyire elfogadhatók a fentik.
- A hozzászóláshoz be kell jelentkezni
Nekem ez így operációkutatásnak tűnik.
- A hozzászóláshoz be kell jelentkezni
Igen.
- A hozzászóláshoz be kell jelentkezni
Elsőre azt hittem, hogy értem, de ezek alapján mégsem. :)
Lehet, hogy nekem maradt ki valami, de mi van az output oldallal? Lehet, hogy én nézem túl közgázos szemmel a matekos helyett, szóval fixme.
Ha van mondjuk három üzletágam, aminek van fix és változó költsége, akkor az összes költségem ugye: (F1 + x * V1) + (F2 + y * V2) + (F3 + z * V3) = SUM(költség). Ezt ugye csökkentjük. Ha nagyon leegyszerűsítem a kérdést, akkor költséget általában két okból csökkentünk (és ez kb. a kettes alá szint lesz, szóval a szőrszálhasogatást most hagyjuk :))
- Profitabilitás javítása
Úgy akarjuk az összes költséget (C) csökkenteni, hogy az összbevétel (R) ennél kevesebbet csökkenjen, tehát R - C < R' - C'. Ezzel az a baj, hogy mivel F1, F2, F3 >= 0, a bevételi oldalon pedig R' <= R, ezért nő az előállított termékek költséghányada.Példa. Az egyik üzletág csokit gyárt. A gyártósor fenntartásának napi költsége 1M forint. Egy db csoki legyártásának a költsége legyen mondjuk 100 forint. A nagyker 200 forintért veszi át a csokit. Ha most van 5M forint költség allokálva az üzletágra, abból 40.000 darab csoki lesz, ami ugye napi 8M forint bevétel. A profitom 3M forint, a profitabilitás 37.5%. Ha csökkentem a költségeket, és már csak 4M-et kap a cost center, akkor 30K db csoki lesz, 6M bevétellel, 2M profittal, 33% profitabilitással.
- Finanszírozási problémák miatt
Azért akarunk csökkenteni, mert valamilyen okból nem tudunk annyi pénzt fektetni a csokigyártásba, amennyit eddig. Beruházni akarunk valami másba, D/E-t akarunk javítani, lényegtelen. Ilyenkor ugye bevállaljuk a profitcsökkenést, mert az előbbi esetben egy jövőbeli, magasabb megtérülésben reménykedünk, utóbbi esetben meg mondjuk a túl magas D/E arány miatt a beszállító nem akar szóba állni velünk, és attól tartunk, hogy később emiatt többet fogunk veszíteni.Viszont itt is, akár az előző esetnél, felmerül a kérdés, hogy nem lehet-e a kimeneti oldalt, a profitot jobban optimalizálni. Ha mondjuk a csoki mellett gyártok bort is, miért nem azon gondolkodom, hogy hol van a komparatív előnye a cégnek? Lehet, hogy bort gyártani hülyeség, mert ha eladom a borgyárat, az ott felszabadított cashflow felét csokigyártásba fektetem (a másik felét meg ugye "költségcsökkentem") akkor simán lehet, hogy a végén nagyobb gyáram lesz, több profittal, stb. mint külön-külön.
- A hozzászóláshoz be kell jelentkezni
Nékem teccik! :)
A közgazdaság megkülönböztet állandó és változó költségeket. Szerintem ez a modell csak az utóbbiakra alkalmazható, és ott is csak bizonyos korlátok között. Én kizárólag akkor alkalmaznám, ha csak számszerűsíthető kapcsolat van a költségek között. Ha teszem azt minőségi (nem számszerűsíthető) kapcsolat is van, akkor nagy eséllyel az felülírja a számokkal leírható kapcsolatot. További zavaró tényező lehet, ha a költségek változása a megváltozott termék/szolgáltatás tulajdonságokon keresztül a bevételekre is kimutatható hatással van.
- A hozzászóláshoz be kell jelentkezni
Egyetértek mindegyik meglátásoddal.
- A hozzászóláshoz be kell jelentkezni
Koszi a bejegyzest. Felhasznalva a szamolasaidat cegunk jovohetre leepiteseket tervez. :P
- A hozzászóláshoz be kell jelentkezni
Fordítva is igaz. Emberek munkája menthető meg, ha kevesebb pénzből hatékonyabban tud tovább működni a cég. Mert ugye ha csökken egy cégnek a bevétele, akkor az nem eldöntendő. Az viszont igen, hogy mit tesz ennek következtében.
- A hozzászóláshoz be kell jelentkezni
Az élőmunka többnyire a hatékonyság hiánya.
- A hozzászóláshoz be kell jelentkezni
Ma kicsit több időm volt és átolvastam újra, hátha nem értettem meg elsőre. Nos, ha elsőre nem értettem meg, akkor másodikra sem, mert ugyan úgy látom most is.
Vagyis:
Egy vállalatnál a LEAN elvek hatékonyabbak, mint ez a fajta matematika. Ennek oka a súlyok esetlegessége. Javíts ki, de én nem ismerek azok mérésére objektív módszertant.
Mutatom a problémát.
Mi mennyire fontos egy termék értékesítésénél?
- ár (eladási és beszerzési)
- minőség
- marketing
- kiszolgálás költsége
Ha egy kereskedő vállalkozás vagy (ebből van több), akkor ezekhez nyúlhatsz, amivel a (árrés-költség)/árrés (vagyis profit) mutatódat tudod javítani.
E négy "költséghely"-ből megsejthető, hogy minden terméknél más és más súly. Sőt! Ugyanannál a terméknél különböző minőség, ár vagy marketing tevékenység mellett is a súlyok aránya megváltozik.
Azt érzem (bizonyítani nem tudom), hogy a görbéhez görbíted a valóságot. Hozzá kell tennem: lehet, hogy a többségében igazad van ettől függetlenül. Már csak azért is, mert: Egy adott halmaz csekély számú random értékeit, tetszőleges sorrendben, végtelen számú függvény tartalmazhatja.
- A hozzászóláshoz be kell jelentkezni
A példám valszeg nem volt elég jó. Amihez fejlesztettem az eljárást, ott pontos súlyaim vannak.
Sajnos anélkül hogy pontosan részletezném a területet amin éppen dolgozok, nehéz jó példákkal szolgálni.
Ezen felül a súlyok sokszor jól megállapíthatók. A fenti példádhoz például a log-ok összegét javasolnám, ahogy régebben bemutattam. Tehát pozitív tulajdonságnál hozzáadni, negatívnál levonni.
0 - ln( ár ) + ln( minőség ) ... stb
Azért jó a log domain, mert az lineárisba húzza az exponenciális eloszlást és direkt módon felhasználhatóvá válnak a súly értékek lineáris számításokhoz. Vagyis másképp fogalmazva, közvetlenül szorozhatsz és oszthatsz velük, vagy súlyozott átlaghoz használhatod.
Az az érdekessége ennek az eljárásnak is, hogy emberileg csak állni tudunk előtte, de nem tudjuk eldönteni, hogy melyik terméket mennyire vegyük figyelembe. A kapott súlyokkal viszont azonnal el tudsz kezdeni dolgozni.
Tehát a súlyok megállapítása valóban szintén kritikus, de arra is van alkalmazható eljárás.
Összegezve: Jó példák valóban kellenek.
- A hozzászóláshoz be kell jelentkezni
Folytatás: https://hup.hu/node/180400
- A hozzászóláshoz be kell jelentkezni