我正在使用 Matlab 的全局优化工具箱来优化使用 PSO 的成本函数。我的一些输入变量涉及等式约束,它们必须是整数。我如何在 PSO 中定义它?
我试图通过在成本函数文件中添加这个 if 语句来使用惩罚函数,
if(ceil(x(1))+duration~= ceil(x(2))|| x(1)>x(2))
C=10000*C^2;
end
x(1) 是开始时间,x(2) 是结束时间,结束时间和开始时间之间的差必须等于持续时间(最初定义)。时间应该是整数,这就是我使用 ceil 的原因。此外,开始时间必须小于结束时间(逻辑上并由等式 t_end-t_start=duration 控制)。当我运行它时,输出是非整数,它不满足 if 语句中的条件,但成本 (C) 仍然是最小的。我错过了什么吗?还是有任何替代方法。
谢谢