Thanks Fiona for your hard work on this ! I'm going to review/test them this week.
I'm not an expert in Rust, but I think I'll be able to read the code Just a question, how do you choose the weight of different criteria ? I think in the second patch, I see: + static ref PVE_HA_TOPSIS_CRITERIA: TopsisCriteria<N_CRITERIA> = TopsisCriteria::new([ + TopsisCriterion::new("average CPU".to_string(), -1.0), + TopsisCriterion::new("highest CPU".to_string(), -2.0), + TopsisCriterion::new("average memory".to_string(), -5.0), + TopsisCriterion::new("highest memory".to_string(), -10.0), + ]) Is is arbitrary values ? if you look at my previous patch series, https://lists.proxmox.com/pipermail/pve-devel/2022-April/052779.html I have also implement the AHP algo. (from AHP-TOPSIS), which is really usefull to find weights for criteria, when you begin to have a lot of criterias, giving priority in a matrix between each criterias. here a youtube video about the math: https://www.youtube.com/watch?v=J4T70o8gjlk&t=456s (I had implemented AHP to dynamic find the weights on service start, we the weight could be compute once, and set statically) Le jeudi 10 novembre 2022 à 15:37 +0100, Fiona Ebner a écrit : > Implement the TOPSIS[0] algorithm to score multi-valued alternatives > according to a given set of weighted criteria. > > The number of alternatives cannot be known at compile time, but the > number of criteria should be (a given module using the topsis module > should have one (or more) fixed sets of criteria). Therefore, the > TopsisMatrix is implemented as a Vec of N_CRITERIA-sized arrays. > > Compared to the description in [0] the weighing of the matrix > according to the weights of the criteria only happens during distance > calculation to the idealized alternatives. It turned out more natural > like that, because the matrix doesn't need to be mutable. > > _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel