What optimization algorithm is more suitable for timetable rescheduling?












0















I'm working on the project where university course is represented as a to-do list, where:




  • course owner (teacher of the course) can add tasks (containing the URL to the resource needs to be learned and two datetime fields - when to start and when to complete the task)


  • course subscriber (student) can mark tasks as complete or not complete and their marks are saved individually for each account.



If student marks task as complete - his account + element he marked are shown in the course activity tab for teacher where he can:




  • initiate a conversation in JavaScript-based chat with him

  • evaluate the result of the conversation


What optimization algorithm you could recommend me to use for timetable rescheduling (changing datetime fields for to-do element if student procrastinates) here?



Actually, we can use the student activity on the resource + fact that he marked the task as complete + if he clicked or not on the URL placed on the to-do element leading to the external learning material (for example Google Book).



For example, are genetic algorithms suitable for this model and what pitfalls do they have: https://medium.com/@vijinimallawaarachchi/time-table-scheduling-2207ca593b4d ?










share|improve this question





























    0















    I'm working on the project where university course is represented as a to-do list, where:




    • course owner (teacher of the course) can add tasks (containing the URL to the resource needs to be learned and two datetime fields - when to start and when to complete the task)


    • course subscriber (student) can mark tasks as complete or not complete and their marks are saved individually for each account.



    If student marks task as complete - his account + element he marked are shown in the course activity tab for teacher where he can:




    • initiate a conversation in JavaScript-based chat with him

    • evaluate the result of the conversation


    What optimization algorithm you could recommend me to use for timetable rescheduling (changing datetime fields for to-do element if student procrastinates) here?



    Actually, we can use the student activity on the resource + fact that he marked the task as complete + if he clicked or not on the URL placed on the to-do element leading to the external learning material (for example Google Book).



    For example, are genetic algorithms suitable for this model and what pitfalls do they have: https://medium.com/@vijinimallawaarachchi/time-table-scheduling-2207ca593b4d ?










    share|improve this question



























      0












      0








      0








      I'm working on the project where university course is represented as a to-do list, where:




      • course owner (teacher of the course) can add tasks (containing the URL to the resource needs to be learned and two datetime fields - when to start and when to complete the task)


      • course subscriber (student) can mark tasks as complete or not complete and their marks are saved individually for each account.



      If student marks task as complete - his account + element he marked are shown in the course activity tab for teacher where he can:




      • initiate a conversation in JavaScript-based chat with him

      • evaluate the result of the conversation


      What optimization algorithm you could recommend me to use for timetable rescheduling (changing datetime fields for to-do element if student procrastinates) here?



      Actually, we can use the student activity on the resource + fact that he marked the task as complete + if he clicked or not on the URL placed on the to-do element leading to the external learning material (for example Google Book).



      For example, are genetic algorithms suitable for this model and what pitfalls do they have: https://medium.com/@vijinimallawaarachchi/time-table-scheduling-2207ca593b4d ?










      share|improve this question
















      I'm working on the project where university course is represented as a to-do list, where:




      • course owner (teacher of the course) can add tasks (containing the URL to the resource needs to be learned and two datetime fields - when to start and when to complete the task)


      • course subscriber (student) can mark tasks as complete or not complete and their marks are saved individually for each account.



      If student marks task as complete - his account + element he marked are shown in the course activity tab for teacher where he can:




      • initiate a conversation in JavaScript-based chat with him

      • evaluate the result of the conversation


      What optimization algorithm you could recommend me to use for timetable rescheduling (changing datetime fields for to-do element if student procrastinates) here?



      Actually, we can use the student activity on the resource + fact that he marked the task as complete + if he clicked or not on the URL placed on the to-do element leading to the external learning material (for example Google Book).



      For example, are genetic algorithms suitable for this model and what pitfalls do they have: https://medium.com/@vijinimallawaarachchi/time-table-scheduling-2207ca593b4d ?







      optimization statistics mathematical-optimization data-science np






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Nov 22 '18 at 13:59







      paus

















      asked Nov 22 '18 at 13:01









      pauspaus

      77931229




      77931229
























          1 Answer
          1






          active

          oldest

          votes


















          1














          I'm not sure I completely understand your problem but it sounds like you have a feasible timetable to begin with and you just need to improve it.



          If so genetic algorithms will work very well, but I think representing everything as binary 'chromosomes' like in the link might not be practical.
          There are many other ways you can represent a timetable, such as in a 2D array, or giving an event a slot number.
          You could look into algorithms such as Tabu search, Simulated Annealing and Great Deluge and Hill Climbing. They are all based on similar ideas but some work better with some problems than others. For example if you have a very rough search space simulated annealing won't be the best and Hill Climbing usually only finds a local optimum.



          The general architecture of the algorithms mentioned above and many other genetic algorithms and Metaheuristics is: select a neighbouring solution using a move operator (e.g. swapping the time of one or two or three events or swapping the rooms of two events etc...), check the move doesn't violate any hard constraints, use an acceptance strategy such as, simulated annealing or Great Deluge, to determine if the move is accepted. If it is keep the solution and repeat the steps until the termination criterion is met. This can be max time, number of iterations reached or improving move hasn't been found in x number of iterations.
          Whilst this is running keep a log of the 'best' solution so when the algorithm is terminated you have the best solution found. You can determine what is considered 'best' based on how many soft constraints the timetable violates



          Hope this helps!






          share|improve this answer
























          • Yes, we finally decided to treat the problem like optimization problem, not a classification one. Generally speaking, we want to facilitate the daily planning for self-learners based on books, articles and other online and offline resources by adopting the learning plan depending on their activity on the resource: monosnap.com/file/qYASQ74J5x2d9ZrsUrghvmqrlCDM6a It looks like one "course" and many subsrcibers receiving notifications when course owner adds new element to the timeline. We want to personalize it then.

            – paus
            Nov 30 '18 at 9:18













          • I'm just trying to understand how time-consuming it will be to embed such sort of personalization if we don't have tests or other stuff, just past-present-future tasks and checkbox to mark it as done.

            – paus
            Nov 30 '18 at 9:48













          • About constraints - the student maybe subscribed on several courses, and he has the "common" timetable where these elements are shown to him in the same way in chronological order. The elements may overlap each other by time.

            – paus
            Nov 30 '18 at 12:25











          Your Answer






          StackExchange.ifUsing("editor", function () {
          StackExchange.using("externalEditor", function () {
          StackExchange.using("snippets", function () {
          StackExchange.snippets.init();
          });
          });
          }, "code-snippets");

          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "1"
          };
          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
          });


          }
          });














          draft saved

          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53431627%2fwhat-optimization-algorithm-is-more-suitable-for-timetable-rescheduling%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown

























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          1














          I'm not sure I completely understand your problem but it sounds like you have a feasible timetable to begin with and you just need to improve it.



          If so genetic algorithms will work very well, but I think representing everything as binary 'chromosomes' like in the link might not be practical.
          There are many other ways you can represent a timetable, such as in a 2D array, or giving an event a slot number.
          You could look into algorithms such as Tabu search, Simulated Annealing and Great Deluge and Hill Climbing. They are all based on similar ideas but some work better with some problems than others. For example if you have a very rough search space simulated annealing won't be the best and Hill Climbing usually only finds a local optimum.



          The general architecture of the algorithms mentioned above and many other genetic algorithms and Metaheuristics is: select a neighbouring solution using a move operator (e.g. swapping the time of one or two or three events or swapping the rooms of two events etc...), check the move doesn't violate any hard constraints, use an acceptance strategy such as, simulated annealing or Great Deluge, to determine if the move is accepted. If it is keep the solution and repeat the steps until the termination criterion is met. This can be max time, number of iterations reached or improving move hasn't been found in x number of iterations.
          Whilst this is running keep a log of the 'best' solution so when the algorithm is terminated you have the best solution found. You can determine what is considered 'best' based on how many soft constraints the timetable violates



          Hope this helps!






          share|improve this answer
























          • Yes, we finally decided to treat the problem like optimization problem, not a classification one. Generally speaking, we want to facilitate the daily planning for self-learners based on books, articles and other online and offline resources by adopting the learning plan depending on their activity on the resource: monosnap.com/file/qYASQ74J5x2d9ZrsUrghvmqrlCDM6a It looks like one "course" and many subsrcibers receiving notifications when course owner adds new element to the timeline. We want to personalize it then.

            – paus
            Nov 30 '18 at 9:18













          • I'm just trying to understand how time-consuming it will be to embed such sort of personalization if we don't have tests or other stuff, just past-present-future tasks and checkbox to mark it as done.

            – paus
            Nov 30 '18 at 9:48













          • About constraints - the student maybe subscribed on several courses, and he has the "common" timetable where these elements are shown to him in the same way in chronological order. The elements may overlap each other by time.

            – paus
            Nov 30 '18 at 12:25
















          1














          I'm not sure I completely understand your problem but it sounds like you have a feasible timetable to begin with and you just need to improve it.



          If so genetic algorithms will work very well, but I think representing everything as binary 'chromosomes' like in the link might not be practical.
          There are many other ways you can represent a timetable, such as in a 2D array, or giving an event a slot number.
          You could look into algorithms such as Tabu search, Simulated Annealing and Great Deluge and Hill Climbing. They are all based on similar ideas but some work better with some problems than others. For example if you have a very rough search space simulated annealing won't be the best and Hill Climbing usually only finds a local optimum.



          The general architecture of the algorithms mentioned above and many other genetic algorithms and Metaheuristics is: select a neighbouring solution using a move operator (e.g. swapping the time of one or two or three events or swapping the rooms of two events etc...), check the move doesn't violate any hard constraints, use an acceptance strategy such as, simulated annealing or Great Deluge, to determine if the move is accepted. If it is keep the solution and repeat the steps until the termination criterion is met. This can be max time, number of iterations reached or improving move hasn't been found in x number of iterations.
          Whilst this is running keep a log of the 'best' solution so when the algorithm is terminated you have the best solution found. You can determine what is considered 'best' based on how many soft constraints the timetable violates



          Hope this helps!






          share|improve this answer
























          • Yes, we finally decided to treat the problem like optimization problem, not a classification one. Generally speaking, we want to facilitate the daily planning for self-learners based on books, articles and other online and offline resources by adopting the learning plan depending on their activity on the resource: monosnap.com/file/qYASQ74J5x2d9ZrsUrghvmqrlCDM6a It looks like one "course" and many subsrcibers receiving notifications when course owner adds new element to the timeline. We want to personalize it then.

            – paus
            Nov 30 '18 at 9:18













          • I'm just trying to understand how time-consuming it will be to embed such sort of personalization if we don't have tests or other stuff, just past-present-future tasks and checkbox to mark it as done.

            – paus
            Nov 30 '18 at 9:48













          • About constraints - the student maybe subscribed on several courses, and he has the "common" timetable where these elements are shown to him in the same way in chronological order. The elements may overlap each other by time.

            – paus
            Nov 30 '18 at 12:25














          1












          1








          1







          I'm not sure I completely understand your problem but it sounds like you have a feasible timetable to begin with and you just need to improve it.



          If so genetic algorithms will work very well, but I think representing everything as binary 'chromosomes' like in the link might not be practical.
          There are many other ways you can represent a timetable, such as in a 2D array, or giving an event a slot number.
          You could look into algorithms such as Tabu search, Simulated Annealing and Great Deluge and Hill Climbing. They are all based on similar ideas but some work better with some problems than others. For example if you have a very rough search space simulated annealing won't be the best and Hill Climbing usually only finds a local optimum.



          The general architecture of the algorithms mentioned above and many other genetic algorithms and Metaheuristics is: select a neighbouring solution using a move operator (e.g. swapping the time of one or two or three events or swapping the rooms of two events etc...), check the move doesn't violate any hard constraints, use an acceptance strategy such as, simulated annealing or Great Deluge, to determine if the move is accepted. If it is keep the solution and repeat the steps until the termination criterion is met. This can be max time, number of iterations reached or improving move hasn't been found in x number of iterations.
          Whilst this is running keep a log of the 'best' solution so when the algorithm is terminated you have the best solution found. You can determine what is considered 'best' based on how many soft constraints the timetable violates



          Hope this helps!






          share|improve this answer













          I'm not sure I completely understand your problem but it sounds like you have a feasible timetable to begin with and you just need to improve it.



          If so genetic algorithms will work very well, but I think representing everything as binary 'chromosomes' like in the link might not be practical.
          There are many other ways you can represent a timetable, such as in a 2D array, or giving an event a slot number.
          You could look into algorithms such as Tabu search, Simulated Annealing and Great Deluge and Hill Climbing. They are all based on similar ideas but some work better with some problems than others. For example if you have a very rough search space simulated annealing won't be the best and Hill Climbing usually only finds a local optimum.



          The general architecture of the algorithms mentioned above and many other genetic algorithms and Metaheuristics is: select a neighbouring solution using a move operator (e.g. swapping the time of one or two or three events or swapping the rooms of two events etc...), check the move doesn't violate any hard constraints, use an acceptance strategy such as, simulated annealing or Great Deluge, to determine if the move is accepted. If it is keep the solution and repeat the steps until the termination criterion is met. This can be max time, number of iterations reached or improving move hasn't been found in x number of iterations.
          Whilst this is running keep a log of the 'best' solution so when the algorithm is terminated you have the best solution found. You can determine what is considered 'best' based on how many soft constraints the timetable violates



          Hope this helps!







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Nov 30 '18 at 2:06









          Fridie3000Fridie3000

          306




          306













          • Yes, we finally decided to treat the problem like optimization problem, not a classification one. Generally speaking, we want to facilitate the daily planning for self-learners based on books, articles and other online and offline resources by adopting the learning plan depending on their activity on the resource: monosnap.com/file/qYASQ74J5x2d9ZrsUrghvmqrlCDM6a It looks like one "course" and many subsrcibers receiving notifications when course owner adds new element to the timeline. We want to personalize it then.

            – paus
            Nov 30 '18 at 9:18













          • I'm just trying to understand how time-consuming it will be to embed such sort of personalization if we don't have tests or other stuff, just past-present-future tasks and checkbox to mark it as done.

            – paus
            Nov 30 '18 at 9:48













          • About constraints - the student maybe subscribed on several courses, and he has the "common" timetable where these elements are shown to him in the same way in chronological order. The elements may overlap each other by time.

            – paus
            Nov 30 '18 at 12:25



















          • Yes, we finally decided to treat the problem like optimization problem, not a classification one. Generally speaking, we want to facilitate the daily planning for self-learners based on books, articles and other online and offline resources by adopting the learning plan depending on their activity on the resource: monosnap.com/file/qYASQ74J5x2d9ZrsUrghvmqrlCDM6a It looks like one "course" and many subsrcibers receiving notifications when course owner adds new element to the timeline. We want to personalize it then.

            – paus
            Nov 30 '18 at 9:18













          • I'm just trying to understand how time-consuming it will be to embed such sort of personalization if we don't have tests or other stuff, just past-present-future tasks and checkbox to mark it as done.

            – paus
            Nov 30 '18 at 9:48













          • About constraints - the student maybe subscribed on several courses, and he has the "common" timetable where these elements are shown to him in the same way in chronological order. The elements may overlap each other by time.

            – paus
            Nov 30 '18 at 12:25

















          Yes, we finally decided to treat the problem like optimization problem, not a classification one. Generally speaking, we want to facilitate the daily planning for self-learners based on books, articles and other online and offline resources by adopting the learning plan depending on their activity on the resource: monosnap.com/file/qYASQ74J5x2d9ZrsUrghvmqrlCDM6a It looks like one "course" and many subsrcibers receiving notifications when course owner adds new element to the timeline. We want to personalize it then.

          – paus
          Nov 30 '18 at 9:18







          Yes, we finally decided to treat the problem like optimization problem, not a classification one. Generally speaking, we want to facilitate the daily planning for self-learners based on books, articles and other online and offline resources by adopting the learning plan depending on their activity on the resource: monosnap.com/file/qYASQ74J5x2d9ZrsUrghvmqrlCDM6a It looks like one "course" and many subsrcibers receiving notifications when course owner adds new element to the timeline. We want to personalize it then.

          – paus
          Nov 30 '18 at 9:18















          I'm just trying to understand how time-consuming it will be to embed such sort of personalization if we don't have tests or other stuff, just past-present-future tasks and checkbox to mark it as done.

          – paus
          Nov 30 '18 at 9:48







          I'm just trying to understand how time-consuming it will be to embed such sort of personalization if we don't have tests or other stuff, just past-present-future tasks and checkbox to mark it as done.

          – paus
          Nov 30 '18 at 9:48















          About constraints - the student maybe subscribed on several courses, and he has the "common" timetable where these elements are shown to him in the same way in chronological order. The elements may overlap each other by time.

          – paus
          Nov 30 '18 at 12:25





          About constraints - the student maybe subscribed on several courses, and he has the "common" timetable where these elements are shown to him in the same way in chronological order. The elements may overlap each other by time.

          – paus
          Nov 30 '18 at 12:25




















          draft saved

          draft discarded




















































          Thanks for contributing an answer to Stack Overflow!


          • 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.




          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53431627%2fwhat-optimization-algorithm-is-more-suitable-for-timetable-rescheduling%23new-answer', 'question_page');
          }
          );

          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







          這個網誌中的熱門文章

          Xamarin.form Move up view when keyboard appear

          Post-Redirect-Get with Spring WebFlux and Thymeleaf

          Anylogic : not able to use stopDelay()