Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Decision-Making methods #17

Closed
jmejia8 opened this issue May 29, 2022 · 12 comments
Closed

Add Decision-Making methods #17

jmejia8 opened this issue May 29, 2022 · 12 comments

Comments

@jmejia8
Copy link
Owner

jmejia8 commented May 29, 2022

This new feature will include a posteriori decision-making.

Possible Usage Example:

julia> res = optimize(f, bounds, NSGA2())

julia> idx = decisionmaking(res, method) # or

julia> idx = decisionmaking(res.population, method) # or

julia> idx = decisionmaking(pareto_front(res), method) # or

julia> idx = method(res) # optional

decision making will return an integer vector containing solutions in res.population related to that decision suggested by the method. Possible alias for decisionmaking: mcdm.

Consider interfacing https://github.com/jbytecode/JMcDM

@jbytecode
Copy link
Contributor

nice, the mcdm functions follow a single pattern based on providing a dataframe, array of weights, and direction of optimizations. nice to see when integrated!

@jmejia8
Copy link
Owner Author

jmejia8 commented May 29, 2022

The integration will be easy thanks to the API implemented in JMcDM.

@jbytecode
Copy link
Contributor

what are you planning for the weights? choosing them with equal chance by default? what is the preferred default method?

@jmejia8
Copy link
Owner Author

jmejia8 commented May 29, 2022

Nice question! I think weights have to be user-defined as well as method. However, after overthinking, I only will extend each core method in JMcDM (mcdm, MCDMSetting, etc.), and let JMcDM handles those parameters.

Suggestions are welcome 🤓

@jbytecode
Copy link
Contributor

a default method (maybe Topsis) with equal weights would be useful. It is not a subject which every researchers are supposed to have enough knowledge.

@jmejia8
Copy link
Owner Author

jmejia8 commented May 30, 2022

Now, JMcDM has an interface in Metaheuristics (master branch). It can be noted that different nature DM methods have been implemented (many in JMcDM, a Region of Interest filter, and some Compromise Programming methods).

Note that JMcDM is loaded by Requires.jl and it is necessary to import it before Metaheuristics. Therefore, I was unable to establish a default method. Further releases will include an extended tutorial about using MCDM and Metaheuristics.

@jbytecode, it would be nice to know your opinion.

@jbytecode
Copy link
Contributor

psi would be nice as it does not use weights.

do you want me to change mcdm() with default params?

@jmejia8
Copy link
Owner Author

jmejia8 commented May 31, 2022

do you want me to change mcdm() with default params?

Yes, I do. Thanks for the support.

@jbytecode
Copy link
Contributor

any contributions are welcome if possible, otherwise, I can implement a default behaviour.

@jbytecode
Copy link
Contributor

How is this:
jbytecode/JMcDM@417a2d6

@jmejia8
Copy link
Owner Author

jmejia8 commented Jun 4, 2022

Now, Metaheuristics.jl package includes Multi-Criteria Decision-Making methods. An interface for https://github.com/jbytecode/JMcDM has been implemented covering the following functions and types: mcdm, summary, and MCDMSetting.

Moreover, CompromiseProgramming and the ROIArchiving methods have been also included.

The main functions to perform MCDM are decisionmaking (alias dm) and best_alternative.

Example: https://jmejia8.github.io/Metaheuristics.jl/dev/examples/#Decision-Making
Documentation: https://jmejia8.github.io/Metaheuristics.jl/dev/mcdm/

Suggestions are welcome.

@jbytecode
Copy link
Contributor

congrats! well done.

@jmejia8 jmejia8 closed this as completed Jun 8, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants