如何在python中使用绝对值进行整数优化?

问题描述

我有一个程序,希望最小化两个变量的绝对差(绝对误差函数)。说:

e_abs(x,y) = |Ax - By|; where e_abs(x,y) is my objective function that I want to minimize.

该函数受到以下约束:

x and y are integers;
x >= 0; y >= 0
x + y = C,where C is an arbitrary constant (also C >= 0)

我正在使用Mip库(--prefix),在其中定义了目标函数和约束。

问题是mip没有“ abs”方法。因此,我不得不通过将主要问题分为两个优化子问题来克服这一问题:

e(x,y) = Ax - By

Porblem 1: minimize e(x,y); subject to e(x,y) >= 0
Porblem 2: maximize e(x,y) <= 0

在解决了两个独立的问题之后,比较两个结果,得出min(abs(e))

应该可以,但是mip似乎不了解该错误可能是负面的。如下所示:

constr(0): -1.0941176470588232 X(0,0) +6.199999999999998 X(1,0) - error = -0.0
constr(1): error <= -0.0
constr(2): X(0,0) + X(1,0) = 1.0

Obs.: consider X(0,0) as x and X(1,0) as y in our example

同样,程序结果为OptimizationStatus.INFEASIBLE,其中组合X(0,0) = 1 and X(1,0) = 0显然可以解决问题。

这是我模型的公式化问题吗?还是mip库的不良行为?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)