Jump to content
  • 0

alle mogelijke opties (berekening) laten zien in portaal


Guido

Question

beste filemakervrinden,

 

ik ben bezig met een automatisch selectiesysteem. De situatie is als volgt:

ik kan een aantal (20) systemen selecteren met verschillende grotes.

In die systemen komen items van ook een bepaalde grote

 

Nu heb ik al gemaakt:

als je het systeem selecteert en de toepassing komen de items die daarbij zouden kunnen horen. dus bij een systeem met bijvoorbeeld hoogte=80 breedte = 30 en lengte = 40 horen een x-aantal items (afhankelijk van de toepassing) waarbij de lengte en breedte hetzelfde is maar de hoogte anders (bijvoorbeeld bij item 1, 20cm, en bij item 2, 30 cm en item 3, 50cm, item 4 = 10cm)

 

Nu wil ik dmv een berekening dat als er 1 of 2 hoofditems worden gekozen, de rest wordt opgevuld met mogelijke combinaties. Dus stel ik wil als hoofditem item nummer 1 (20cm), dan wil ik dat de overige 60cm wordt opgevuld met de mogelijke combinaties (die dan in een portaal worden weergegeven)

 

Dus:

portaalrij 1:

item 1: 20cm

item 2: 30cm

item 2: 30cm

tot: 80 cm --> klopt

 

portaalrij 2:

item 1: 20cm

item 3: 50cm

item 4: 10cm

tot. 80 cm --> klopt, die dus ook

 

portaalrij 3:

die bestaat niet want er kunnen niet meer combinatiues worden gemaakt.

 

Het ziet er ontzettend lastig uit en ik kom nu niet meer uit dit lastige pakket.

Link to comment

Recommended Posts

  • 0

Er zijn nogal veel variabelen.

 

met elementen van 50, 30, 20 en 10 kan ik 12 combinaties maken die optellen tot 80 (als ik er niet over het hoofd gezien heb):

 

50 30

50 20 10

50 10 10 10

30 30 20

30 20 20 10

30 20 10 10 10

30 10 10 10 10 10

20 20 20 20

20 20 20 10 10

20 20 10 10 10 10

20 10 10 10 10 10 10

10 10 10 10 10 10 10 10

 

is dit de bedoeling of is het maximum steeds 3 elementen?

 

Ik heb geen idee hoe je met een element van willekeurige grootte zou moeten beginnen en het dan oplossen. Maar je zou een loop script kunnen proberen te maken dat steeds een line item aanmaakt, begint met het grootste item, en dan het eerstvolgend grootste item inpast dat sommeert tot =< de maat van het systeem. Met een beetje puzzelen is daar hoop ik wel uit te komen. Ik zie twee dingen nog niet: het maximaal totaal aantal elementen per combinatie (wat is het grootste systeem met de kleinste elementen). en belangrijker: hoe besluit fm dat alle combinaties met een bepaalde startgrootte zijn gemaakt.

 

Ik wil wel verder denken maar misschien is dit al een start voor je.

Link to comment
  • 0
Er zijn nogal veel variabelen.

 

met elementen van 50, 30, 20 en 10 kan ik 12 combinaties maken die optellen tot 80 (als ik er niet over het hoofd gezien heb):

 

50 30

50 20 10

50 10 10 10

30 30 20

30 20 20 10

30 20 10 10 10

30 10 10 10 10 10

20 20 20 20

20 20 20 10 10

20 20 10 10 10 10

20 10 10 10 10 10 10

10 10 10 10 10 10 10 10

 

is dit de bedoeling of is het maximum steeds 3 elementen?

 

Ik heb geen idee hoe je met een element van willekeurige grootte zou moeten beginnen en het dan oplossen. Maar je zou een loop script kunnen proberen te maken dat steeds een line item aanmaakt, begint met het grootste item, en dan het eerstvolgend grootste item inpast dat sommeert tot =< de maat van het systeem. Met een beetje puzzelen is daar hoop ik wel uit te komen. Ik zie twee dingen nog niet: het maximaal totaal aantal elementen per combinatie (wat is het grootste systeem met de kleinste elementen). en belangrijker: hoe besluit fm dat alle combinaties met een bepaalde startgrootte zijn gemaakt.

 

Ik wil wel verder denken maar misschien is dit al een start voor je.

 

klopt, maar als je dus sowieso een item van 50 erin wilt, heb je dus nog maar 3 combi's

ik laat het even bezinken en denk er nog eens over na! iig bedankt voor de aanzet

Link to comment
  • 0

je zou met een voorgebakken systeem kunnen werken. schrijf alle combinatiemogelijkheden van alle systemen uit, 1 combinatie per line item (of probeer een algoritme te vinden dat dat voor je doet). Als je dan voor dat line item 2 of 3 filtervelden aanmaakt

- systeemgrootte (is som van alle elementen)

- grootste element (max van alle elementen)

- optioneel: maximaal aantal gewenste elementen

 

en dan relateert aan je keuzetabel, dan kan je de mogelijke combinaties heel eenvoudig in een portaal zien. Maar ik weet niet of voor elk systeem de elementen hetzelfde zijn (waar hebben we het eigenlijk over?)

Link to comment
  • 0
je zou met een voorgebakken systeem kunnen werken. schrijf alle combinatiemogelijkheden van alle systemen uit, 1 combinatie per line item (of probeer een algoritme te vinden dat dat voor je doet). Als je dan voor dat line item 2 of 3 filtervelden aanmaakt

- systeemgrootte (is som van alle elementen)

- grootste element (max van alle elementen)

- optioneel: maximaal aantal gewenste elementen

 

en dan relateert aan je keuzetabel, dan kan je de mogelijke combinaties heel eenvoudig in een portaal zien. Maar ik weet niet of voor elk systeem de elementen hetzelfde zijn (waar hebben we het eigenlijk over?)

 

het gaat om een filterunit die meerdere filters kan bevatten, en ook meerdere soorten (zo heb je een koolfilter van 100 hoog, maar bijv ook een stoffilter)

Link to comment
  • 0
maar is de keuze van het soort element dan niet belangrijker dan de hoogte? je kan fm msschien laten berekenen of er 10 cm over is of 20 cm, maar of het kool of stoffilter moet zijn...?

 

het is beide belangrijk

ik moet al bij stap 1 kiezen welke stof er gefilterd moet worden (portaal laat zien bij bijvoorbeeld benzeen --> alle koolfilters a), bij stap 2 de hoogte en breedte en langte van de unit (of de naam, dan haalt hij de rest automatisch op), bij stap 3 wil ik dat hij het automatisch volmaakt op basis van 1 basisfilter zeg maar.

Link to comment
  • 0

Ik geloof dat ik het begin te snappen. En zijn alle soorten filters in alle vier de elementmaten te krijgen? dus 50-30-20-10?

En als het eerste filter een koolfilter is, dan moeten alle andere filters in de unit ook een koolfilter zijn?

 

Nog een vraag: heb je een produktentabel? Wat is je volgende stap? gaat het ongeveer zo?

 

selecteer filtersoort

selecteer unitmaat

selecteer grootste element

toon combinatiemogelijkheden

selecteer een combinatie

maak daar een offerte/verkoop/materiaallijst lineitem van

 

je ziet ik ben aan het oefenen met vragen stellen. zo leren we allebei wat :)

Link to comment
  • 0
Ik geloof dat ik het begin te snappen. En zijn alle soorten filters in alle vier de elementmaten te krijgen? dus 50-30-20-10?

En als het eerste filter een koolfilter is, dan moeten alle andere filters in de unit ook een koolfilter zijn?

 

Nog een vraag: heb je een produktentabel? Wat is je volgende stap? gaat het ongeveer zo?

ze zijn wel in meer elementmaten te krijgen, maar de maten zelf weet ik niet uit mijn hoofd

ik heb uiteraard een productentabel, waarin de hoogte/breedte/lengte en filtertype(kool of stof of...) staan

 

selecteer filtersoort

selecteer unitmaat

selecteer grootste element

toon combinatiemogelijkheden

selecteer een combinatie

maak daar een offerte/verkoop/materiaallijst lineitem van

 

je ziet ik ben aan het oefenen met vragen stellen. zo leren we allebei wat :)

 

zoiets ja:

selecteer te filtreren stof

selecteer unitmaat

selecteer grootste element

toon combinatiemogelijkheden

selecteer een combinatie

 

en een unit bestaat altijd uit ten minste 1 stoffilter uit granulatie x, nog een paar stoffilters, eventueel een paar vulramen en afh van het te filtreren gedoen een koolfilter

Link to comment
  • 0
tja... alles teruglezend snap ik het nog steeds niet. je kunt met mijn eerdere voorstel uitfilteren welke combinatiemogelijkheden er zijn. maar wat helpt je dat? of is het daarmee gesnoten en wordt er vervolgens aan de hand van de keuze voor een combinatie van maten een stel filtertypen gekozen?

 

schopje terug :roll:

 

het "algoritme" wat jij beschreef hiervoor zou de oplossing zijn denk ik. Maar hoe laat je dit willekeurig berekenen door fm?

Link to comment
  • 0

ik heb zitten prutsen met een script met drie loops dat eindigt (dat is al heel wat) en een aantal combinaties genereert. maar lang niet alle mogelijkheden. dus dat is nog nie goed. ik kom er op korte termijn niet aan toe om er verder over te denken... misschien over een paar dagen, en dan nog is de vraag of ik daar uit kom. Als je wilt post ik mijn proefbestandje, om eens goed te lachen zeg maar.

 

groet

Link to comment
  • 0

Ik snap het ook nog niet helemaal, maar ik ben met iets soort gelijks bezig (totaal aantal mogelijkheden filteren) dus ben wel benieuwd naar de uitkomst!

 

Daarnaast vraag ik me wel af of filemaker de juiste oplossing is...

 

EDIT: Sorry dit is al een heel oud topic, ik dacht dat ik hier terecht was gekomen via de portal maar dat was via de zoekmachine. :oops:

Link to comment
  • 0

:oops: nu ik heb dat bestandje uit het archief gevist... met excuzes aan guido, ik geloof niet dat ik destijds iets opgestuurd heb. afijn ik ga het niet met schaamrood alsnog posten, want het werkt echt voor geen meter. misschien kun je je probleem beschrijven, dan zien we weer verder.

 

totaal aantal mogelijkheden filteren

bedoel je het aantal permutaties bepalen?

probeer deze cf: http://www.briandunning.com/cf/882

(moet je wel filemaker advanced hebben)

Link to comment
  • 0
:oops: nu ik heb dat bestandje uit het archief gevist... met excuzes aan guido, ik geloof niet dat ik destijds iets opgestuurd heb. afijn ik ga het niet met schaamrood alsnog posten, want het werkt echt voor geen meter. misschien kun je je probleem beschrijven, dan zien we weer verder.

 

totaal aantal mogelijkheden filteren

bedoel je het aantal permutaties bepalen?

probeer deze cf: http://www.briandunning.com/cf/882

(moet je wel filemaker advanced hebben)

 

Sorry dat ik je hieraan heb herinnerd! :lol:

 

 

Het komt eigenlijk neer op het volgende:

 

Stel je hebt de volgende gegevens:

 

Een lijst componenten met daarin meerdere sub componenten in percentages.

 

Daarnaast heb je een lijst sub-componenten gesorteerd van groot naar klein (percentage) waarvan de totaalpercentages onbekend zijn.

 

Zou het mogelijk zijn om het percentage component in range te berekenen zodat het percentage sub component overeenkomt met de lijst sub-componenten zonder percentages? In die volgorde dus.

 

Voorbeeldje:

 

Lijst sub componenten, gesorteerd van groot naar klein, zonder percentages is:

 

Sub 1

Sub 3

Sub 2

Sub 4

 

Component 1 bevat 70% Sub 1 en 30% Sub 3

Component 2 bevat 20% Sub 4, 30% Sub 2, 20 % Sub 3, 30% Sub1

 

Stel dat je de volgende componenten gebruikt:

50% Component 1

50% Component 2

 

Zo komt de sub component lijst uit op het volgende:

 

Sub 1 50%

Sub 3 25%

Sub 2 15%

Sub 4 10%

 

Het laagste percentage component 1 dat ik kan gebruiken om de sorteervolgorde van groot naar klein te laten matchen met de sub-componenten lijst zonder percentages is:

 

Component 1 25%

Component 2 75%

 

Sub 1 40%

Sub 3 22,5%

Sub 2 22,5%

Sub 4 15%

 

Als ik nog minder Component 1 gebruik stijgt Sub 2 boven Sub3 uit en klopt de sorteervolgorde niet meer.

 

Het hoogste percentage Component 1, zonder dat een sub op 0 uitkomt, zijn (op 1 decimaal):

Component 1 99,9%

Component 2 0,1%

 

Sub 1 69,96%

Sub 3 29,99%

Sub 2 0,03%

Sub 4 0,02%

 

De ranges zijn dan:

Component 1 25%-99,9%

Component 2 0,1%-75%

 

Dat is eigenlijk een beetje de bedoeling, ik vraag me af of het uberhaubt mogelijk is een dergelijke berekening/script te schrijven, maar ik heb wel wat ideeen om het een-en-ander te proberen. Tevens is bovenstaande met 2 componenten nog niet al te moeilijk, maar wat als je 10 componenten gebruikt, misschien is er wel geen combinatie mogelijk om de percentages sub-componenten te laten matchen met de sub lijst.

Link to comment
  • 0
is het aantal subcomponenten en het aantal componenten beide onbepaald?

 

Het aantal componenten en sub componenten is variabel ja.

 

wat bepaalt de initiele sorteervolgorde van de subcomponenten? je zegt "van groot naar klein" -> wat bedoel je?

 

Het percentage aanwezige sub component in een samenstelling componenten.

Link to comment
  • 0
Het percentage aanwezige sub component in een samenstelling componenten.

dat snap ik niet. zo gebruik je een variabele als voorwaarde.

Ik dacht juist dat de volgorde gefixeerd was en dat de samenstellingen zo moesten zijn, dat de volgorde niet wordt aangetast?

 

Hmz wellicht ben ik niet helemaal duidelijk genoeg.

 

De eerste lijst sub componenten zijn gesorteerd van groot naar klein(percentage), de bijbehorende percentages zijn onbekend.

 

De berekende lijst sub componenten moet de sorteervolgorde van bovenstaande lijst hebben.

wat is je datastructuur?

vraag staat nog open

 

Het receptuur van componenten is een record, de lijst subcomponenten zonder percentages worden via een portal ingevoerd in een jointable die gerelateerd is aan de sub componenten tabel.

Een script doorzoekt de component database, toetst de sub componenten van ieder component aan de ingevoerde sub componenten (zonder percentages) en vervolgens wordt er in een 2e jointable records aangemaakt voor alle matchende componenten. Deze 2e jointable is gekoppeld aan de componenten tabel welke weer gerelateerd is aan de component-sub component tabel waarin de percentages sub per component opgeslagen zijn.

 

 

Het script zet eigenlijk de lijst sub componenten in een variable, gaat naar de componenten tabel, telt het aantal sub componenten van de eerste component, kijkt hoeveel matchende sub's er zijn en als het aantal matchende subs gelijk is aan het aantal sub-componenten van de component wordt er in de jointable recept-componenten een record aangemaakt. Vervolgens gaat ie dan naar de 2e component enz. tot alle componenten gecontroleerd zijn.

 

Je eindigt dan met een lijst componenten waarmee het mogelijk is om tot een samenstelling componenten te komen waarmee je, als je ze in de juiste percentages gebruikt, de sub componenten lijst kan genereren.

 

Zie onderstaand voorbeeld:

 

Links: Hier worden de sub componenten ingevoerd waarvan de percentages niet bekend zijn, alleen de volgorde van hoeveelheid. Hier wordt 008006 meer gebruikt dan 005509.

 

Midden: Alle componenten die 1 of 2 subs uit de de linker lijst bevatten.

 

Rechts: De percentages sub berekent op basis van de ingevoerde percentages in de middelste componenten lijst.

subs.thumb.jpg.e1b7ff19db8b7f864555d2029c191533.jpg

Link to comment
  • 0

Mijn idee was eigenlijk om de sorteervolgorde van de linker lijst subs in een variable op te slaan. Vervolgens met een algoritme demogelijkheden in samenstelling componenten te proberen en na iedere verandering het percentage subs te berekenen en de sorteervolgorde in een variable op te nemen en deze te toetsen aan de sorteervolgorde van de linkerlijst subs. Een sorteervolgorde kan gemakkelijk berekent worden door alle ID's achter elkaar te plaatsen.

 

In principe is dat niet heel moeilijk al kan een dergelijk script natuurlijk wel even duren met veel componenten.

 

Het moeilijkst wordt de range per component te bepalen en ik vraag me af of dat uberhaubt wel mogelijk is (in Filemaker) :)

Link to comment
  • 0

OK, hardop denkend kom ik tot het volgende (en niet verder). misschien zit ik er helemaal naast en het is nog geen script. het is nog vroeg en er zit pas één koffie in. :roll:

 

je algoritme idee klinkt plausibel. je zou het heuristisch kunnen maken: dus steeds het verschil met de vorige stap halveren.

Je start bij een 100-0 verdeling.

Als dat niet kan ga je naar 75-25.

als dat kan, ga je naar 92,5 - 12,5,

als dat kan aan de 12, 5 kant maar niet aan de 92,5 kant, ga je naar 86,25 en 6,25,... enzovoorts.

zo zou je redelijk snel de range kunnen inperken. afhankelijk van de precisie die je nodig hebt bepaal je van te voren het aantal iteraties in het algoritme.

 

maar de range van component A bepaalt mede de range van component B. dat betekent, als je component A bepaald hebt, dat je bij twee componenten kan stoppen. Bij drie componenten, kun je starten met de range van A (het omgekeerde daarvan is de range van B), dus zonder de 'veilige range' van A te veranderen met de mogelijke range van B variëren. Als je dat hebt weet je C. Als je meer componenten hebt, enz....

 

succes....

 

PS als je componenten en de volgorde van de subcomponenten en in lijstjes opslaat zou je in theorie een custom functie moeten kunnen maken die iets dergelijks doet. boven mijn pet in elk geval.

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...