1

Я пытаюсь переделать следующую оптимизацию Excel Solver GRG Нелинейная оптимизация с использованием Microsoft Solver Foundation в VB.NET (номера упрощены ради этого примера):Воспроизведение Excel Solver GRG Нелинейная оптимизация в Visual Basic .NET

  1. Цель: Общий расход газа = 100000
  2. Variable: Хорошо 1 Нефть Оценить
  3. Ограничения: 0 < = Ну 1 расход газа= 1000, Колодец 2 Gas Rate = 2000

Эта оптимизация при соблюдении следующих соотношений:

  1. Well 1 Газ Скорость = Хорошо 1 Нефть Оценить * 5
  2. Всего газа Ставка = скважина 1 Газовая скорость + скважина 2 Скорость газа

Возможно ли решить эту проблему с помощью Solver Foun мендации? При попытке реализовать это две вещи, с которыми я столкнулся, являются:

  1. Похоже, что модели Solver Foundation имеют только два значения GoalKind: минимум и максимум. В моем случае я пытаюсь оптимизировать для определенного значения. Есть какой-либо способ сделать это?
  2. Как определить указанные выше отношения? Я думаю, что последнее будет определено как часть определения цели (например, model.AddGoal("total_gas_rate", GoalKind.[not sure what goes here], Well1PGasRate + Well2PGasRate), но как определить другой?

Спасибо!

ответ

0

Этот ответ рассматривает только часть 1 вашего вопроса и концептуально, но, надеюсь, это полезно. Если вы пытаетесь оптимизировать для конкретного значения target и выхода вашей функции output тогда вы могли бы попробовать что-то вроде этого псевдокода:

minimize(absolute_value(output/target-1)) 

Фактически, это даст вам значение, которое достигает нуля, как выход вашей функции приближается к целевому значению. Таким образом, вы все равно можете использовать механизм оптимизации, который минимизирует конечный результат вашей функции.

Смежные вопросы