1

我在 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;
}

我需要x,y和的随机解决方案z。但是,我总是得到41.3, 1, 1

我是否使用了错误的工具?此外,我需要五个随机解决方案。不止一个。我怎样才能做到这一点?

4

1 回答 1

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)
于 2014-03-07T10:50:20.207 回答