4

我的教授给了我一个二元线性规划问题,但这个问题与我过去解决的优化问题略有不同(即这可能不是最大化或最小化目标函数。)

问题如下,给定一个矩阵 M,对于条目 m_ij != 0,有对应的 x_ijk 变量。条目 m_ij = 0 可以忽略。

x_ijk要么是0要么是1,我想为每个m_ij尝试5个x_ijk变量(即x_ij1、x_ij2、x_ij3、x_ij4和x_ij5。其中一个为1,其他为0)足以满足一些条件(一组不等式)。

更简单地说,这是检查每个 m_ij 涉及 5 个 x_ijk 变量的约束集是否是有效(或可行)约束。

我已经解决了一些优化问题,但我从来没有解决过没有目标函数的问题。

我应该在这里设置什么作为我的目标函数?0? 没有?

我可能正在使用 lp_solve 或 CPLEX。

提前感谢您的建议!

4

1 回答 1

4

没错,您可以将任意常数值设置为目标函数。

我尝试过的大多数求解器都允许一个空的目标函数。只需将其从您的模型中删除即可。

根据您使用的求解器和 API,您可能必须将目标中所有变量的系数设置为零。

别担心,它必须工作。


回复您的评论:是的,约束编程工具可以在可行性问题上提供比 LP 求解器(例如 CPLEX)更好的性能。几个月前我玩过IBM ILOG CPLEX CP Optimizer ,它对学术用户免费。LP 求解器和 CP 求解器都未能解决我的问题。不要指望约束编程会带来奇迹。

请记住,在最坏的情况下,解决约束程序所需的时间会随着问题的规模呈指数增长。迟早,您的问题很可能会变得无法使用任何一种工具来解决。

仅供参考:最后,约束规划求解器将调用 LP 求解器(例如 CPLEX)。

My advice is: try the tool you already have / use the problem formulation that is more natural to you. Check whether the tool can solve your problem. Switch tool only if the tool fails and you cannot improve your model.

于 2013-02-15T18:56:10.323 回答