在CPLEX中生成随机解决方案

时间:2014-03-06 19:48:52

标签: random linear-programming cplex ilog

我在IBM ILOG CPLEX中有一个简单的模型。

dvar float x in 1..99;
dvar float y in 1..99;
dvar float z in 1..99;
subject to
{
   x + y - z == 41.3;
}

我需要xyz的随机解决方案。但是,我总是得到41.311

我使用的是错误的工具吗? 而且,我需要五个随机解决方案。不仅仅是一个。我怎么能做到这一点?

1 个答案:

答案 0 :(得分:1)

对于可行性问题(无目标函数),CPLEX将在找到可行解决方案时终止。没有办法获得所有极端点。

你可以试试:

  • 设定目标函数
  • 解决并存储解决方案
  • 修改目标函数以找到不同的解决方案(必须随机完成,如果您需要随机解决方案)

您必须使用一些API来编写逻辑代码。 这个想法在这里有更详细的描述: http://orinanobworld.blogspot.de/2013/02/finding-multiple-extreme-rays.html

但是,这会使您的问题变得复杂。我只想做以下事情:

  • 随机设置z
  • 计算x + y = z + 41.3
  • 选择0到1之间的随机r
  • x =(x + y)* r
  • y =(x + y)*(1-r)