Ошибка при обработке проблемы смешанного типа переменных в пакете PymooPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Ошибка при обработке проблемы смешанного типа переменных в пакете Pymoo

Сообщение Anonymous »

У меня есть проблема с оптимизацией, которую я хочу решить с помощью инструментов в пакете pymoo версии 0.6.1 на Python. Я определил свою проблему следующим образом:

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

class Problem(ElementwiseProblem):

def __init__(self):

vol_frac_vars = {'vol_frac_' + str(i): Real(bounds=(0, 1)) for i in range(LAM_NUM)}
theta_vars = {'theta_' + str(i): Choice(options=[-45, 0, 45, 90]) for i in range(LAM_NUM)}
vars = {**vol_frac_vars, **theta_vars}

super().__init__(vars=vars,
n_obj=1,
n_eq_constr=0,
n_ieq_constr=1)

def _evaluate(self, X, out, *args, **kwargs):

v = [X['vol_frac_' + str(i)] for i in range(LAM_NUM)]
t = [X['theta_' + str(i)] for i in range(LAM_NUM)]

f1 = # Objective function here

g1 = # Constraint function here

out['F'] = [f1]
out['G'] = [g1]

problem = Problem()

algorithm = MixedVariableGA(pop_size=100,
n_offsprings=10,
sampling=FloatRandomSampling(),
crossover=SBX(prob=0.9, eta=15),
mutation=PM(eta=20),
eliminate_duplicates=True)

termination = get_termination('n_gen', 1000)

result = minimize(problem,
algorithm,
termination,
save_history=True,
return_least_infeasible=True,
seed=SEED)
Это проблема смешанного типа переменных, поэтому я использовал MixedVariableGA, как указано в документации пакета. Кроме того, переменные, написанные заглавными буквами, являются заранее определенными константами, специфичными для моей проблемы. Моя цель — найти минимальное значение f1, на которое наложено ограничение g1 для n vol_frac_vars и n theta_vars переменные, что в сумме составляет до 2n переменных. Однако когда я запускаю код, я сталкиваюсь со следующей ошибкой:

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

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
 in ()
8 termination = get_termination('n_gen', 1000)
9
---> 10 result = minimize(problem,
11                   algorithm,
12                   termination,

8 frames
/usr/local/lib/python3.10/dist-packages/pymoo/operators/sampling/rnd.py in _do(self, problem, n_samples, **kwargs)
22         if problem.has_bounds():
23             xl, xu = problem.bounds()
---> 24             assert np.all(xu >= xl)
25             X = xl + (xu - xl) * X
26

TypeError: '>=' not supported between instances of 'dict' and 'dict'
Как устранить эту ошибку?

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

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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