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)) 

實際上,這會給你達到零作爲輸出值您的功能接近目標值。所以你仍然可以使用一個優化引擎來最小化函數的最終輸出。