Python 鸭嘴兽不同类型的客观定义

Python 鸭嘴兽不同类型的客观定义,python,platypus-optimizer,Python,Platypus Optimizer,我正在尝试使用platypus和NSGA2算法解决一个多目标优化问题。以下是实现的示例代码: x英寸[-10,10]的最小值(x^2,(x-1)^2) 但我的问题是,如果我想最大化x^2并最小化(x-1)^2,我应该如何定义问题以及正确的方法是什么 在这些示例中,我们假设目标正在最小化。Platypus非常灵活,通过设置方向属性,可以根据每个目标更改优化方向。例如: problem.directions[:] = Problem.MAXIMIZE 因此,正确的方法是: from platypu

我正在尝试使用platypus和NSGA2算法解决一个多目标优化问题。以下是实现的示例代码:

x英寸[-10,10]的最小值(x^2,(x-1)^2)


但我的问题是,如果我想最大化x^2并最小化(x-1)^2,我应该如何定义问题以及正确的方法是什么

在这些示例中,我们假设目标正在最小化。Platypus非常灵活,通过设置方向属性,可以根据每个目标更改优化方向。例如:

problem.directions[:] = Problem.MAXIMIZE
因此,正确的方法是:

from platypus import NSGAII, Problem, Real

def schaffer(x):
    return [x[0]**2, (x[0]-2)**2]

problem = Problem(1, 2)
problem.directions[0] = Problem.MAXIMIZE
problem.directions[1] = Problem.MINIMIZE
problem.types[:] = Real(-10, 10)
problem.function = schaffer

algorithm = NSGAII(problem)
algorithm.run(10000)
for solution in algorithm.result:
    print(solution.objectives)
from platypus import NSGAII, Problem, Real

def schaffer(x):
    return [x[0]**2, (x[0]-2)**2]

problem = Problem(1, 2)
problem.directions[0] = Problem.MAXIMIZE
problem.directions[1] = Problem.MINIMIZE
problem.types[:] = Real(-10, 10)
problem.function = schaffer

algorithm = NSGAII(problem)
algorithm.run(10000)
for solution in algorithm.result:
    print(solution.objectives)