tpaviot / ProcessScheduler

A Python package for automatic and optimized resource scheduling
https://processscheduler.github.io/
GNU General Public License v3.0
59 stars 18 forks source link

Issues with single resource flowtime optimizer #59

Closed dreinon closed 3 years ago

dreinon commented 3 years ago

The first issue I have ran into by trying out multiple single resource flowtime objectives is that the value of all of them is the same. For instance, I get the following values: ->Objective values: ->FlowtimeSingleResource(min objective): 9 ->FlowtimeSingleResource(min objective): 9 for this result: image where I'm optimizing flowtime between time intervals (11, 20) and (21, 34), so total in-interval flowtime is 0. I implemented a way to calculate this total value that doesn't rely on indicator values though.

dreinon commented 3 years ago

I don't get any found optimum, I just get

Found better value: -8552 elapsed time:179.280s
Checking better value <-8552

I'll leave it for 1200 sec (20 min) and see if it gets any better.

dreinon commented 3 years ago

I could also add the constraint for debugging but in real life I would need it to be automatic.

dreinon commented 3 years ago

Output is:

/xxxx/ProcessScheduler/processscheduler/solver.py:434: UserWarning: time may exceed max time. Stopping iteration.
  warnings.warn('time may exceed max time. Stopping iteration.')
        total number of iterations: 139
        value: -8830
        XXXXXXXXXXXXX satisfiability checked in 953.49s

with occupation of 97

tpaviot commented 3 years ago

Maybe the solver is lost into some kind of local optimum. You can try other logics to see if it is better ("QF_IDL", "QF_UFIDL" or others)

dreinon commented 3 years ago

Okay, thanks!

dreinon commented 3 years ago

I have tried solving first for utilization objective only and then, solving again, but with a constraint that utilization indicator has to be equal to the previously found value, and with single resource flowtime objectives, and I get a solution with 100% occupation and pretty flowtime optimized :)

dreinon commented 3 years ago

Maybe an option for multiobjective incremental optimizer would be to solve for objectives in creation order (equivalent to 'lexicon' option).

tpaviot commented 3 years ago

I agree, that's something I think about.

dreinon commented 3 years ago

Closing this issue and opening one for this new feature #73.