使用LpSolveAPI赋值,如何以广度优先的方式填充参数?

问题描述

首先,我对线性规划有一个基本的了解,可能不知道正确的术语。我想我需要的是广度优先求解器。

我有两个概率表,我想将其用作约束。 我的目标函数是所有参数加起来为 1。

使用 R 和 lpSolveApi,我发现只有一些我希望优化的参数被赋予任何值。我还尝试添加一个约束来说明每个参数都应该是 > 2 or some other value,但这似乎是错误的。

我的代码一个最小示例是:

objective_coefficients = c(1,1,1) #One for each parameter
lp_model = make.lp(0,13)
lp.control(lp_model,sense="max")
set.objfn(lp_model,objective_coefficients)

#Constraints for probability table 1
add.constraint(lp_model,c(1,0),"<=",0.4)
add.constraint(lp_model,c(0,0.1)
add.constraint(lp_model,0.2)
add.constraint(lp_model,1),0.2)

#Constraints for probability table 2
add.constraint(lp_model,0.35)
add.constraint(lp_model,0.25)
add.constraint(lp_model,0.17)
add.constraint(lp_model,0.03)

结果是一些参数附加了很大的值,而另一些则根本没有:

0.05 0.15 0.35 0.00 0.00 0.00 0.20 0.00 0.07 0.10 0.00 0.00 0.03

如果我为所有参数设置一个最小值,我可以看到让所有参数 > 0.02 是可行的。

我试过了:

lp.control(lp_model,basis.crash="mostfeasible",sense="max")
lp.control(lp_model,basis.crash="leastdegenerate",bb.rule=c("first","breadthfirst"),bb.rule=c("gap",sense="max")

这些都给出了相同的结果。

我认为正在发生的事情是求解器使用深度优先,但我希望它解决广度优先,但我不明白如何做到这一点。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)