Невозможно изменить форму ошибки массива для простой задачи с двумя целями с pymooPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Невозможно изменить форму ошибки массива для простой задачи с двумя целями с pymoo

Сообщение Anonymous »

Это простая задача с двумя целями и пятью целыми числами с алгоритмом NSGA-II, код блокнота:

Код: Выделить всё

import numpy as np
from pymoo.core.problem import ElementwiseProblem
from pymoo.algorithms.moo.nsga2 import NSGA2
# from pymoo.factory import get_sampling, get_crossover, get_mutation
from pymoo.optimize import minimize
from pymoo.operators.sampling.rnd import IntegerRandomSampling
from pymoo.operators.crossover.sbx import SBX
from pymoo.operators.mutation.pm import PM
from pymoo.visualization.scatter import Scatter

# Custom 2-objective, 5-integer optimization problem
class MyProblem(Problem):
def __init__(self):
super().__init__(
n_var=5,
n_obj=2,
n_ieq_constr=0,
xl=np.array([0,0,0,0,0]),  # Lower bounds for variables
xu=np.array([10,10,10,10,10]),  # Upper bounds for variables
vtype=int
)

def _evaluate(self, x, out, *args, **kwargs):
# Objective functions
f1 = np.sum(x ** 2)  # Minimize the sum of squares
f2 = np.sum((x - 5) ** 2)  # Minimize the sum of squared deviations from 5

# Assign objectives to the output
out["F"] = [f1, f2]

# Instantiate the custom problem
problem = MyProblem()

# NSGA-II algorithm setup
algorithm = NSGA2(
pop_size=100,
n_offsprings=50,
sampling=IntegerRandomSampling(),
crossover=SBX(prob=1.0, eta=3.0),
mutation=PM(prob=1.0, eta=3.0)
)

# Optimize the problem using NSGA-II
res = minimize(
problem,
algorithm,
termination=('n_gen', 100),
seed=1,
save_history=True,
verbose=True
)

# Visualize the Pareto front
plot = Scatter()
plot.add(problem.pareto_front(), plot_type="line", color="black", alpha=0.7)
plot.add(res.F, color="red", s=30, label="NSGA-II")
plot.show()
Я не знаю, почему возникла ошибка формы. 100 — это численность населения, что мне здесь изменить? Может ли кто-нибудь пролить свет на эту ошибку?
Исключение: («Ошибка проблемы: F не может быть установлен, ожидаемая форма (100, 2), но предоставлена ​​(1, 2)», ValueError ('невозможно преобразовать массив размера 2 в форму (100,2)'))
Обратите внимание, что этот вопрос аналогичен, но у меня все равно есть эта ошибка.
Ожидается: нет ошибок, а затем Я могу просмотреть результат.

Подробнее здесь: https://stackoverflow.com/questions/775 ... with-pymoo
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Мутация для проблемы MixedVariable в pymoo
    Anonymous » » в форуме Python
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Ошибка при обработке проблемы смешанного типа переменных в пакете Pymoo
    Anonymous » » в форуме Python
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Добавление AWS Amplify в приложение iOS Swift с несколькими целями не работает
    Гость » » в форуме IOS
    0 Ответы
    38 Просмотры
    Последнее сообщение Гость
  • Работа Дженкинса с несколькими целями maven
    Anonymous » » в форуме JAVA
    0 Ответы
    44 Просмотры
    Последнее сообщение Anonymous
  • Добавление AWS Amplify в приложение iOS Swift с несколькими целями не работает
    Anonymous » » в форуме IOS
    0 Ответы
    40 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»