1. Yes, you can specify any number of objectives with any number of variables.
def fit_func_1(candidate):
return whatever you need for this objective
def fit_func_2(candidate):
same as above, and so on...
@inspyred.ec.evaluators.evaluator
def my_evaluator(candidate, args):
f1 = fit_func_1(candidate)
f2 = fit_func_2(candidate)
...
fn = fit_func_n(candidate)
return inspyred.ec.emo.Pareto([f1, f2, ..., fn])
2. Yes, if I understand your question correctly, but you're not really dealing with a Pareto frontier anymore when you do that.
@inspyred.ec.evaluators.evaluator
def my_evaluator(candidate, args):
# Assume weights of w1, w2, ..., wn
f1 = fit_func_1(candidate)
f2 = fit_func_2(candidate)
...
fn = fit_func_n(candidate)
return w1 * f1 + w2 * f2 + ... + wn * fn