How can I use MatLab to optimize based on relative rank?
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ height:90px;width:728px;box-sizing:border-box;
}
This is a problem that I have previously addressed in Excel, but would like to move to MatLab for better quality solutions.
Where I work, there is a semiannual process to rank new initiatives. They are scored against a number of criteria and assigned a criteria score in the range [0,1]. Each criteria has a weight assigned to it, and these weight are normalized such that they sum to 1. The total score for a given initiative is then the sum of the products of each criteria score and its weight.
Executing this process generates scores for each initiative under consideration, and the initiatives can thus be ranked 1-n based on their scores. So far so good...
But this list is then provided to a managerial decision body that "applies judgement" and shuffles this ranking based on their own deliberations.
What I would like to do is to investigate whether there is a set of criteria weights that produces a 1-n list closer to the final product of the deliberations. In the past I have done this in Excel, where I can use the rank() function as part of my calculation. I set it up something like this
In this case I tell Excel solver to change the values in red, subject to the constraints that they are [0,1] and sum to 1, in order to minimize the sum in green.
The idea is to highlight issues along the lines of "You say criteria X is the most important, but your application of judgement seems to show that Y is actually more of a determinant."
I really don't know how to approach formulating this for fmincon (or any other non-excel solver for that matter) and would appreciate any guidance. My reent experience with Excel has been that a) as the number of initiative increases the runtimes become quite long and b) I can run the same optimization 10 times and get 10 very different solutions...
matlab optimize
add a comment |
This is a problem that I have previously addressed in Excel, but would like to move to MatLab for better quality solutions.
Where I work, there is a semiannual process to rank new initiatives. They are scored against a number of criteria and assigned a criteria score in the range [0,1]. Each criteria has a weight assigned to it, and these weight are normalized such that they sum to 1. The total score for a given initiative is then the sum of the products of each criteria score and its weight.
Executing this process generates scores for each initiative under consideration, and the initiatives can thus be ranked 1-n based on their scores. So far so good...
But this list is then provided to a managerial decision body that "applies judgement" and shuffles this ranking based on their own deliberations.
What I would like to do is to investigate whether there is a set of criteria weights that produces a 1-n list closer to the final product of the deliberations. In the past I have done this in Excel, where I can use the rank() function as part of my calculation. I set it up something like this
In this case I tell Excel solver to change the values in red, subject to the constraints that they are [0,1] and sum to 1, in order to minimize the sum in green.
The idea is to highlight issues along the lines of "You say criteria X is the most important, but your application of judgement seems to show that Y is actually more of a determinant."
I really don't know how to approach formulating this for fmincon (or any other non-excel solver for that matter) and would appreciate any guidance. My reent experience with Excel has been that a) as the number of initiative increases the runtimes become quite long and b) I can run the same optimization 10 times and get 10 very different solutions...
matlab optimize
add a comment |
This is a problem that I have previously addressed in Excel, but would like to move to MatLab for better quality solutions.
Where I work, there is a semiannual process to rank new initiatives. They are scored against a number of criteria and assigned a criteria score in the range [0,1]. Each criteria has a weight assigned to it, and these weight are normalized such that they sum to 1. The total score for a given initiative is then the sum of the products of each criteria score and its weight.
Executing this process generates scores for each initiative under consideration, and the initiatives can thus be ranked 1-n based on their scores. So far so good...
But this list is then provided to a managerial decision body that "applies judgement" and shuffles this ranking based on their own deliberations.
What I would like to do is to investigate whether there is a set of criteria weights that produces a 1-n list closer to the final product of the deliberations. In the past I have done this in Excel, where I can use the rank() function as part of my calculation. I set it up something like this
In this case I tell Excel solver to change the values in red, subject to the constraints that they are [0,1] and sum to 1, in order to minimize the sum in green.
The idea is to highlight issues along the lines of "You say criteria X is the most important, but your application of judgement seems to show that Y is actually more of a determinant."
I really don't know how to approach formulating this for fmincon (or any other non-excel solver for that matter) and would appreciate any guidance. My reent experience with Excel has been that a) as the number of initiative increases the runtimes become quite long and b) I can run the same optimization 10 times and get 10 very different solutions...
matlab optimize
This is a problem that I have previously addressed in Excel, but would like to move to MatLab for better quality solutions.
Where I work, there is a semiannual process to rank new initiatives. They are scored against a number of criteria and assigned a criteria score in the range [0,1]. Each criteria has a weight assigned to it, and these weight are normalized such that they sum to 1. The total score for a given initiative is then the sum of the products of each criteria score and its weight.
Executing this process generates scores for each initiative under consideration, and the initiatives can thus be ranked 1-n based on their scores. So far so good...
But this list is then provided to a managerial decision body that "applies judgement" and shuffles this ranking based on their own deliberations.
What I would like to do is to investigate whether there is a set of criteria weights that produces a 1-n list closer to the final product of the deliberations. In the past I have done this in Excel, where I can use the rank() function as part of my calculation. I set it up something like this
In this case I tell Excel solver to change the values in red, subject to the constraints that they are [0,1] and sum to 1, in order to minimize the sum in green.
The idea is to highlight issues along the lines of "You say criteria X is the most important, but your application of judgement seems to show that Y is actually more of a determinant."
I really don't know how to approach formulating this for fmincon (or any other non-excel solver for that matter) and would appreciate any guidance. My reent experience with Excel has been that a) as the number of initiative increases the runtimes become quite long and b) I can run the same optimization 10 times and get 10 very different solutions...
matlab optimize
matlab optimize
asked Mar 5 at 20:22
jerHjerH
1061
1061
add a comment |
add a comment |
0
active
oldest
votes
Your Answer
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "3"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fsuperuser.com%2fquestions%2f1411594%2fhow-can-i-use-matlab-to-optimize-based-on-relative-rank%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Super User!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fsuperuser.com%2fquestions%2f1411594%2fhow-can-i-use-matlab-to-optimize-based-on-relative-rank%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown