tpaviot / ProcessScheduler

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

Flowtime single resource #56

Closed tpaviot closed 3 years ago

tpaviot commented 3 years ago

Related to issue #50

to use:

problem.add_objective_flowtime_single_resource(worker_1, time_interval = [40, 50])
dreinon commented 3 years ago

Would this already work for time intervals :open_mouth: ?

codecov-commenter commented 3 years ago

Codecov Report

Merging #56 (33a14ff) into master (ceeea8a) will decrease coverage by 0.05%. The diff coverage is 92.94%.

Impacted file tree graph

@@            Coverage Diff             @@
##           master      #56      +/-   ##
==========================================
- Coverage   94.86%   94.81%   -0.06%     
==========================================
  Files          30       30              
  Lines        3272     3354      +82     
==========================================
+ Hits         3104     3180      +76     
- Misses        168      174       +6     
Impacted Files Coverage Δ
test/test_indicator.py 95.62% <89.83%> (-3.41%) :arrow_down:
processscheduler/problem.py 97.03% <100.00%> (+0.67%) :arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more Δ = absolute <relative> (impact), ø = not affected, ? = missing data Powered by Codecov. Last update ceeea8a...33a14ff. Read the comment docs.

tpaviot commented 3 years ago

Currently only for one single time interval. You cannot pass a list of time intervals. And I did not test to add multiple single intervals, for example:

problem.add_objective_flowtime_single_resource(worker_1, time_interval = [40, 50])
problem.add_objective_flowtime_single_resource(worker_1, time_interval = [60, 70])
dreinon commented 3 years ago

Well still a big progress!! Thanks you!

tpaviot commented 3 years ago

This needs to be tested but I merge the branch. I think this implementation is not efficient in terms of computing time, we'll see later for any improvement, let's first check the expected behavior is correct.

dreinon commented 3 years ago

Since this is finally an objective, its API for many time intervals would be add many objectives right? About what you were saying about performance, I wonder if this volume of objectives would enlarge the problem too much. In my case, I would have to add:

I can try it out though and see how it works! Other possibility is to first test it before applying it to my problem, so I could also make some tests.

Also, I wonder if this would currently work in the new multiobjective incremental solver, with other max objective like utilization, since these flowtime_single_resource are min objectives right?

Thank you!

tpaviot commented 3 years ago

Ok, let me know about your tests. I ran a few tests with the new multiobjective incremental solver, it's much more convenient than the previous optimizer.

dreinon commented 3 years ago

Nice! Although with much more convinient, you mean it might be duable to have 140 objectives? And also, is the new solver already compatible with mixed max and min objectives? (to make tests mixing them)

tpaviot commented 3 years ago

Don't know what it gives with so many objectives, you should test (first try with 2, 4, 10, before trying 140!). The new multi-objective solver can deal with both min/max objectives (see last commit fb64fff).

dreinon commented 3 years ago

Yes of course, I'll start simple haha. Thanks!