<div dir="ltr">Thanks a lot for your answer !<div><br></div><div>1) I don&#39;t think pillar based moves are what I&#39;m looking for, except if I can select a pillar based on a Problem Fact (its service in my case) and then spread the different entities of the pillar on the available hosts (basically setting possibly different planning variables for the entities of the pillar).</div>
<div><br></div><div>2) cartesianProductMoveSelector seem more like it, but the number of moves to combine is somewhat static is it not ? I can&#39;t for instance specify in a Planning Entity (using a property) that its move should be combined with n other moves of processes of the same type ? </div>
<div><br></div><div>3) I feel like my usecase is complicated enough to have to resort to that if there is no built in way to handle it... Does this work by implementing a MoveListFactory, or a CompositeMove ? I don&#39;t think I quite get the difference to be honest...</div>
<div><br></div><div>Thanks again for your time,</div><div><br></div><div>Cheers,</div><div><br></div><div>Woody</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">2014-06-25 9:37 GMT+02:00 Geoffrey De Smet <span dir="ltr">&lt;<a href="mailto:ge0ffrey.spam@gmail.com" target="_blank">ge0ffrey.spam@gmail.com</a>&gt;</span>:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
  
    
  
  <div bgcolor="#FFFFFF" text="#000000">
    1) There&#39;s 2 course grained moves out of the box in 6.1.0.CR1:
    pillarChangeMove and pillarSwapMove.<br>
    And in 6.1.0.CR1 they also include subpillars (which is important).<br>
     
<a href="http://docs.jboss.org/drools/release/latest/optaplanner-docs/html_single/index.html#pillarChangeMoveSelector" target="_blank">http://docs.jboss.org/drools/release/latest/optaplanner-docs/html_single/index.html#pillarChangeMoveSelector</a><br>

    Start with trying those.<br>
    <br>
    2) Then look into cartesianProduct selection and mimic selection
    (see docs).<br>
    The &lt;cartesianProductMoveSelector&gt; allows you to combine to
    existing moves into a new one.<br>
    The mimic selection allows you to make sure that those 2 moves
    change the same entity (if needed), but a different variable of
    course.<br>
    I am working on nearBySelection for 6.2 to allow it to select 2
    entities that are somehow &quot;nearBy&quot; to each other (for example in the
    same service etc).<br>
    <br>
    3) If the above don&#39;t help enough, there&#39;s always custom moves (see
    docs): total freedom, but the devil is in the details :)<div><div class="h5"><br>
    <br>
    <div>On 24-06-14 01:58, DwProd . wrote:<br>
    </div>
    </div></div><blockquote type="cite"><div><div class="h5">
      <div dir="ltr"><span style="font-family:arial,sans-serif;font-size:13px">Hello
          there,</span>
        <div style="font-family:arial,sans-serif;font-size:13px"><br>
        </div>
        <div style="font-family:arial,sans-serif;font-size:13px">I&#39;m
          pretty new to OptaPlanner, and I must say I&#39;m really impressed
          with the maturity of it all. Great software with a great
          documentation !</div>
        <div style="font-family:arial,sans-serif;font-size:13px"><br>
        </div>
        <div style="font-family:arial,sans-serif;font-size:13px">I&#39;ve
          been working on a variation of the Cloud Balancing example,
          with a few differences, which make it look like the Machine
          Reassignment problem as well :</div>
        <div style="font-family:arial,sans-serif;font-size:13px"><br>
        </div>
        <div style="font-family:arial,sans-serif;font-size:13px">- Some
          processes are already placed and are immovable (using a
          Selection Filter checking a boolean property of the planning
          entity)</div>
        <div style="font-family:arial,sans-serif;font-size:13px">- The
          Computer (the planning variable) is nullable (basically this
          is Multiple Muti-Dimensional Knapsack problem) which means I
          added a soft constraint penalty for processes with a null
          host.</div>
        <div style="font-family:arial,sans-serif;font-size:13px">-
          Processes can only be of a few classes (which I called
          services, a Problem Fact). Processes of a given service type
          have a certain amount of required cpu and ram.</div>
        <div style="font-family:arial,sans-serif;font-size:13px"><br>
        </div>
        <div style="font-family:arial,sans-serif;font-size:13px">Taking
          these elements into account, I do get very good results with
          OptaPlanner. However, the following constraints always put me
          into a score trap :</div>
        <div style="font-family:arial,sans-serif;font-size:13px"><br>
        </div>
        <div style="font-family:arial,sans-serif;font-size:13px">- For
          some services, processes work in groups. For instance, if
          groups are of size 3, having 7 processes is not any better
          than having 6 processes. If there were already 2 processes
          (immovable and placed), I should only add 4 processes and not
          5, even if there are enough resources. For this constraint, I
          have tried using a rule (medium constraint) accumulating
          processes of that service and using the modulo operator with
          the group size.</div>
        <div style="font-family:arial,sans-serif;font-size:13px">- Some
          services are dependant on one another. For instance, I know
          that if I have n1 groups of processes of the service 1, I
          require Math.ceil(2.5*n1) groups of processes of the service
          2. I have implemented this similarly with a medium
          constraint...</div>
        <div style="font-family:arial,sans-serif;font-size:13px"><br>
        </div>
        <div style="font-family:arial,sans-serif;font-size:13px">With
          any (or both) of these constraints, little to no processes of
          the concerned services are added and I fail to reach a good
          solution. I have tried benchmarking with several local search
          methods and various parameters, but all give the same
          results... </div>
        <div style="font-family:arial,sans-serif;font-size:13px"><br>
        </div>
        <div style="font-family:arial,sans-serif;font-size:13px">I feel
          like the next logical step would be to used the often
          mentioned in the documentation &quot;Coarse Grained Moves&quot; but I
          fail to locate any simple example. The Nurse Rostering example
          seems to use that technique to some extent but it seems like
          an overly complicated example, is it not.</div>
        <div style="font-family:arial,sans-serif;font-size:13px"><br>
        </div>
        <div style="font-family:arial,sans-serif;font-size:13px">Thank
          you very much for reading this far, if you have any question,
          guideline, or just a trick, I&#39;d be absolutely delighted to
          hear from you !</div>
        <div style="font-family:arial,sans-serif;font-size:13px"><br>
        </div>
        <div style="font-family:arial,sans-serif;font-size:13px">Cheers,</div>
        <div style="font-family:arial,sans-serif;font-size:13px"><br>
        </div>
        <div style="font-family:arial,sans-serif;font-size:13px">
          Woody</div>
      </div>
      <br>
      <fieldset></fieldset>
      <br>
      </div></div><pre>_______________________________________________
rules-users mailing list
<a href="mailto:rules-users@lists.jboss.org" target="_blank">rules-users@lists.jboss.org</a>
<a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a></pre>
    </blockquote>
    <br>
  </div>

<br>_______________________________________________<br>
rules-users mailing list<br>
<a href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a><br></blockquote></div><br></div>