У меня есть дискретная имитационная модель события, которая выводит общую стоимость проекта. Несколько входов в симуляцию могут быть включены и выключены, и они были построены в переменных решения Gurobi. Поскольку это категориальные переменные с повторением, они могут иметь значения с нижней границей 0.
Во время каждой итерации оптимизации я хотел бы взять переменные решения с ненулевыми значениями и передать их в моделирование, которое затем выводит другое значение для стоимости. Затем оптимизатор продолжает работу, пока стоимость не будет минимизирована.
Проблема, с которой я сталкиваюсь, заключается в том, что симуляция рассматривается как черный ящик, а Гуроби видит только входы и выходы. Это правильный способ определения цели? Если так, как я могу это реализовать? Или Гуроби требует полного знания управляющих уравнений черного ящика?
Ниже псевдокодовое представление идеального конечного продукта:
paths = m.addVars(settings, lb=0, name="paths")
totalCost = simulation(nonZeroPaths)
m.setObjective(totalCost, GRB.minimize)