我正在研究一种复杂的模型。不幸的是,我不得不改变目标函数的公式,基于以前的值是怎样的。
特别是,我的目标函数由两个术语组成,称为A和B,它们具有不同的数量级(A通常比B高2或3个数量级,但这可能有所不同)。
为了保证A和B具有相同的公式权重,我需要将我的目标函数写成如下:
objective= A + B*K`
其中K是使第二项在A的相同尺度/数量级上产生的值。
example:
A=4e10
B=2e3
K=1e(10-3)=1e7
问题是,为了知道K,我必须知道A和B的值,但是pyomo没有给出值,它只是将一个表达式传递给求解者。
我读到过,由于聪明地使用二进制变量可以克服这个问题,任何人都可以提出一个有用的方法吗?
亲切的问候
发布于 2022-02-03 17:01:24
看起来你在处理一个多目标优化问题。由于在求解模型之前不知道A和B所涉及的变量的值,所以不能根据A和B来定义K的值。
解决多目标优化问题有不同的方法,您可以针对特定的问题进行考虑(例如,ε-约束方法)。在这些问题中,通常您不感兴趣的是寻找单个解,而是找到一组Pareto最优解,这些最优解在可行区域内不受任何其他解的支配。
https://stackoverflow.com/questions/70945775
复制相似问题