这是在CPLEX C++中实现我的第一个模型的结果,我非常惊讶质量是如此的慢和差。我相信,用一个更好的方法可以避免其中的许多问题。有人能帮我改进一下密码吗?暗示,想法,想法..。一切都很感激!
它是关于在5天内安排考试,每个考试有2个时隙。我的输入是考试次数(第一行第一行)和相互冲突的考试对(第二行编号),其中我还知道参加两个考试的学生人数(在下面的行中,-> exam1 exam2 #学生参加两个考试)。可以找到这里和实例这里的代码。
我所包含的限制因素如下:
我觉得这句话甚至有些地方是不对的,因为我无法想象客观价值的价值是如此之高。有人看到这个缺陷了吗?我卡住了。
问题可能在循环中,我试图找出是否违反了软约束。在那里,我每天都在循环,但很可能我总是不小心覆盖了我的变量。是否有人知道如何确定二进制变量,以指示软约束是否在任何一天被违反(当然,它只能发生一次,但很可能不是在结束时)。
发布于 2016-03-21 02:48:23
与其调试C++代码,我只是使用一种建模语言重新实现了模型(我相信这是一个更快、更愉快的周日晚上的方式)。
(注意:在修复错误后更新)。以下是我的解决办法,总共罚款751英镑:

您应该能够将其插入到代码中并验证结果。
注意:在一台旧笔记本电脑上花了大约900秒才证明了Cplex的最佳效果。如果你想要一个好的解决方案,你可以早点停下来:

(蓝线是目标,红线是最好的界限)。为了获得良好的性能,我帮助Cplex设置了分支优先级,并使用了调优运行所建议的一些选项。
https://stackoverflow.com/questions/36115816
复制相似问题