I'm given two matrices:
$A$, an $n\times n$ adjacency matrix of a graph. The graph is unweighted, undirected and has no self-edges or multi-edges.
$X$, an $n\times n$ symmetric matrix of edge weights for items $x_1,\dots,x_n$ where entry $(i,j)$ denotes the edge weight between item $x_i$ and $x_j$, if that edge eventually exists. Edge weights are real numbers between -5 and +5.
The items $x_1,\dots,x_n$ are assigned to exactly one node each, the objective being to assign items to nodes to maximise the total sum of edge weights.
I thought it might be a variation of the assignment problem, but with the cost of assignments dependent on the graph structure I'm uncertain how this would be formulated. So far I've tried a greedy heuristic algorithm which randomly assigns items to nodes, swaps the nodes which most increases the total edge weight sum, and repeats until no swap will increase the sum further. This frequently gives far from optimal solutions though.
Is there a name for this sort of problem, and what might be the best solution method?