Come utilizzare le tabelle decisionali per stabilire la priorità tra gli oggetti - o dovrei fare qualcosa di diverso? [chiuso]

4

Ho un caso simile a questo: Decisioni multivariabili

La differenza è che non è una singola decisione che devo fare, ma più mi piace avere un pool di (diciamo 10 oggetti) dove ogni oggetto ha 4 attributi con 3-4 stati diversi per ciascuno. Ora devo selezionare il ONE più rilevante degli oggetti in base al confronto di questi attributi per ciascun oggetto.

Quali tecniche posso utilizzare per implementare questo comportamento?

Un esempio potrebbe essere: sei in un parco a tema e devi scegliere quali montagne russe provare per un'ultima corsa prima di andare a casa. Ci sono 10 montagne russe nel parco. Le variabili che vanno considerate sono:

  • Quanto lontano è il roller coster (puoi raggiungerlo prima che il parco si chiuda)
  • Quanto è selvaggio (più selvaggio è, meglio è)
  • L'hai provato prima (vuoi provare qualcosa di nuovo)
  • Quanto tempo dura la corsa (non ti vergogni a rimanere chiuso dentro il parco - o forse lo fai davvero: -)
posta Niels Kristian 08.10.2015 - 18:58
fonte

1 risposta

0

Immagino che tu stia cercando un modello di programmazione per implementare tale processo decisionale, non un'implementazione concreta dell'algoritmo.

Quindi, suppongo che sia necessario assegnare pesi ai propri oggetti sulla base del test degli attributi. Per questo potresti avere una classe astratta AbstractWeightCalculator che ha un metodo calculateWeight(MyObject obj) astratto.

Ora crei vari tester di attributi:

  • DistanceWeightCalculator : Quanto è lontano il coster a rulli
  • WildnessWeightCalculator : Quanto è selvaggio
  • ecc.

Ora, prendi tutti i tuoi tester del peso, applicali uno per uno a ciascun oggetto e ottieni una somma di tutti i pesi degli oggetti. E poi ordina semplicemente la lista che hai ottenuto dal peso.

Questo soddisfa le tue esigenze?

    
risposta data 12.10.2015 - 16:05
fonte