我正在尝试使用Java中的JaCoP library进行优化,但我在翻译函数时遇到了一些麻烦。
我有一堆变量,比如:x1到xn,我有一个函数使用它们来输出最大似然估计(尽管它可能只是使用这些参数的任何函数)。
我知道如何设置变量的约束,例如x1 + .. + xn< C(常数)。我无法弄清楚的是如何获得最大化我上述功能的解决方案,如获取x1到xn其中max(a_function(x1,..,xn))。
我现在不发布任何代码,因为我能够做的唯一事情就是对我的初始变量设置简单约束,如here所述。随着JaCoP的发展,我会更新这个问题。
如果有人能给我一个关于如何设定这样一个条件的正确方向的推动,我们将不胜感激。
由于
[编辑]
好吧,我作弊了......因为我以前在我的Java项目中安装了Rcaller,所以我将使用R来计算带有约束的最大似然模型。我被JaCop击败了。 R使用起来更直观(从数学的角度来看),并且由于Rcaller与Java“很好地对话”,我对结果非常满意。
答案 0 :(得分:1)
很好地隐藏了,但是有一个包含成本函数的example。
所以IIUIC你需要像
这样的东西IntVar cost = new IntVar(store, "cost", 0, 1000);
net.setCostVariable(cost);
如果您没有成本变量,只需创建它并使用约束来确保cost == a_function(x1,..,xn)
。如果您想要最大化,请翻转标志。