Algorithms for graph generation using given properties
There are no general algorithms for your problem but what one usually does (for graphs of small orders) is 


Use nauty to generate graphs satisfying some rough constraints (you can make nauty generate only (bi)connected graphs, regular graphs, triangle/quadrangle free graphs,..) 
Use an external program to extract only the graphs you need with respect to some additional  properties that you want.


You can do both 1 and 2 in sage! For example consider that you want to generate all connected 5-regular graphs of order 20 that have average distance 10 (Wiener index??) and some clustering coefficient. You do the following

for G in graphs.nauty_geng(" 20 -c -d5 -D5" ):
    if G.wiener_index() == 10 and G.clustering_coeff() == SOMETHING:
       print G.adjacency_matrix()


Let me know if you need some more specific answers related to sage.