Pymoo调用minimize时报错'int object is not callable'问题求助
Pymoo调用minimize报
TypeError: 'int' object is not callable排查思路 - 排查终止条件传参格式
你当前直接传('n_gen', 20000)作为终止条件的写法仅支持pymoo 0.4.x及更早版本,0.5.x之后的版本要求必须传入终止条件类实例,旧写法会被解析为普通参数,触发类型错误。
修正代码示例:from pymoo.termination import get_termination res = minimize( problem, algorithm, termination=get_termination("n_gen", 20000), seed=1 ) - 排查minimize函数导入来源
确认你导入的是pymoo的minimize,而非scipy等其他库的同名函数。scipy.optimize.minimize的参数规则和pymoo完全不同,传入pymoo的problem、algorithm等参数会直接触发类型错误。正确导入语句:from pymoo.optimize import minimize - 排查参数传入顺序
如果你使用的pymoo版本和参考示例的版本不一致,minimize的参数顺序可能发生变更,建议所有非必选参数都显式指定参数名,避免位置传参错位——比如误把终止条件传入了需要回调函数的参数位,就会把元组内的整数识别为需要调用的函数触发报错。 - 排查自定义Problem类初始化逻辑
检查MyProblem的__init__方法中,是否有本该赋值为函数/可调用对象的属性被误赋值为整数,比如目标函数列表、约束函数列表是否混入了整数值。 - 版本兼容性验证
如果上述修改都无效,可以尝试将pymoo版本降级到0.4.2,验证是否是版本迭代带来的API不兼容问题:pip install pymoo==0.4.2
内容的提问来源于stack exchange,提问作者Eigenvalue
相关产品推荐
相关产品推荐

