# How can I assign agents to tasks based on time and affinity?

I am working on an assignment problem.

Consider $$K$$ agents $$A_1, \dots A_K$$ and $$N$$ tasks $$T_1, \dots T_N$$. Each task has a certain time $$t(T_i)$$ to be completed and each agent has a matching (or affinity) value associated with each task $$M_{A_j}(T_i), \forall i, j$$. The goal is to assign agents to tasks, such that the matching value is maximized and the overall time to complete the tasks is minimized. Moreover, an agent can be assigned to multiple tasks. However, an agent cannot start a new task before finishing the previous one.I want to solve it with GA+MOA*algorithm What would be an admissible heuristic function?