Ein Mathematiker würde dein Problem wahrscheinlich folgendermaßen beschreiben.
Definiere einen Vektor x mit Komponenten xi e {0,1}, i=1,2,3,…,n. Dabei ist n die Anzahl der Mitarbeiter. Der Vektor x beschreibt die Mitarbeiter, die du für deinen Task aussuchst, wenn also die i-te Komponente eine 1 ist, dann wird der Mitarbeiter ausgewählt, wenn die i-te Komponente eine 0 ist, dann eben nicht. Zudem definiere eine Funktion f(x)=s, wobei s ein Vektor ist, dessen Komponenten sj e N, j=1,2,3,…,m die Spaltensummen für einen bestimmten Vektor x wiedergeben. Dein Optimierungsproblem ist jetzt eher ein Mehrzieloptimierungsproblem, da du möglichst wenig Mitarbeiter auswählen möchtest (norm(x)), aber gleichzeitig dein Zielvektor s* erreichen willst (norm(s*-s)). Suche also einen Vektor x der J=norm(x)+norm(s*-s) minimiert.
Beispiel (bezieht sich auf die ersten 4 Spalten und Zeilen deines Beispiels):
Die Anzahl der Mitarbeiter ist n=4 (A,B,C,D) und die Anzahl der Attribute ist m=4. Dein Zielvektor ist s* mit Komponenten s1*=3, s2*=3, s3*=3, s4*=4. Der Vektor x hat ebenfalls die Dimension 4 mit Komponenten x1-x4 und gibt an, ob du einen Mitarbeiter mitnimmst oder nicht (0-nein und 1-ja). Die Funktion f(x)=s gibt die Spaltensummen wieder (Summe der Attribute) und sieht folgendermaßen aus:
S1=x1+x4
S2=x2+x3
S3=x1+x3
S4=x2+x3
Um das Problem zu lösen, kannst du jetzt alle Kombinationen von x ausprobieren (also [0,0,0,1],[0,0,1,0],…) und das x speichern, das den kleinsten Wert für J generiert.
P.S. Schau dir mal das Salesman Problem an (geht in eine ähnliche Richtung), https://de.wikipedia.org/wiki/Problem_des_Handlungsreisenden