The automatic search of CP Optimizer does not try to recognize a graph colouring problem. As you notice, fixing the colour of one variable to get rid of some symmetries in the model may help. Extending this idea and fixing the colours of one clique may further help. Such dominance rules are not automatically inferred in CP Optimizer but are let to the user to add them to the model.
 
For giving hints to the solver besides model changes, one can define "search phases" for ordering variables and values (in the Python API, look for the [`search_phase()`](https://ibmdecisionoptimization.github.io/docplex-doc/cp/docplex.cp.modeler.py.html#docplex.cp.modeler.search_phase) function).

Alternatively, the search can be entirely defined by the user through the concept of "goals" (only with the [C++ API](https://www.ibm.com/support/knowledgecenter/SSSA5P_12.10.0/ilog.odms.cpo.help/CP_Optimizer/Advanced_user_manual/topics/extend_api_goals.html)).

Another remark is that the solver has different parameters that have default values and that a user can change. The default values are expected to work correctly for very different kinds of problems, but when targeting a given family of problems, specific parameters can be much better. 

A related feature is the possibility to inject a starting solution (possibly partial). The solver tries to improve it (see [`set_starting_point()`](https://ibmdecisionoptimization.github.io/docplex-doc/cp/docplex.cp.model.py.html?highlight=set_starting_point#docplex.cp.model.CpoModel.set_starting_point) in Python).