1

我想重新生成以下Excel求解器GRG在VB.NET中使用Microsoft Solver Foundation进行非线性优化(为了本示例,数字被简化了):在Visual Basic .NET中重现Excel求解器GRG非线性优化

  1. 目的:总气体流量= 100000
  2. 可变:1井油产率
  3. 约束:0 < = 1井气率< = 1000,2号井气率= 2000

这种优化是受以下关系:

  1. 1井气率 = 1井油产率* 5
  2. 道达尔天然气率 = 1井气率+ 2井气率

是否有可能使用求解Foun来解决这样的问题dation?当试图实现这一点,两件事情我挣扎是:

  1. 看来,求解基金会车型只有两个GoalKind的:最小值和最大值。就我而言,我正在尝试针对特定的价值进行优化。有没有办法做到这一点?
  2. 如何定义上述关系?我认为后者将被定义为目标定义的一部分(例如,model.AddGoal("total_gas_rate", GoalKind.[not sure what goes here], Well1PGasRate + Well2PGasRate),但是如何定义另一个呢?

谢谢!

回答

0

此答案只解决您的问题的第一部分,并以概念的方式,但希望它是有帮助的。如果你想优化特定值target和你的函数的输出为output,那么你可以尝试这样的伪代码:

minimize(absolute_value(output/target-1)) 

实际上,这会给你达到零作为输出值您的功能接近目标值。所以你仍然可以使用一个优化引擎来最小化函数的最终输出。