我的教授给了我一个二元线性规划问题,但是这个问题与我以前解决的优化问题略有不同(即这可能不是最大化或最小化对象函数。)
问题如下, 给定矩阵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。
提前感谢您的建议!
答案 0 :(得分:4)
这是正确的,您可以将任意常量值设置为目标函数。
我尝试过的大多数求解器都允许空目标函数。只需将其从模型中删除即可。
根据您使用的求解器和API,您可能需要将目标中所有变量的系数设置为零。
别担心,它必须工作。
回应您的评论:是的,约束编程工具可以提供比LP解算器(例如CPLEX)更好的可行性问题性能。我几个月前玩IBM ILOG CPLEX CP Optimizer,学术用户免费。 LP求解器和CP求解器都解决了我的问题。不要指望来自约束编程的奇迹。
请记住,在最坏的情况下,解决约束程序所需的时间会随着问题的大小呈指数级增长。迟早,使用这两种工具,您的问题很可能无法解决。
仅供参考:最后,约束编程求解器将调用LP解算器(例如CPLEX)。
我的建议是:尝试您已有的工具/使用对您来说更自然的问题表达方式。检查该工具是否可以解决您的问题。仅在工具失败且无法改进模型时切换工具。