J'essaie de résoudre un problème linéaire dans PuLP qui minimise une fonction de coût. La fonction de coût est elle-même fonction de la valeur maximale de la fonction de coût, par exemple, j'ai un coût journalier et j'essaie de minimiser le coût mensuel, qui est la somme du coût journalier plus le coût journalier maximum du mois . Je ne pense pas que je capture la valeur maximale de la fonction dans la solution finale, et je ne suis pas sûr de savoir comment résoudre ce problème. Les grandes lignes du code est ci-dessous:Comment trouver le maximum d'un prob dans PuLP
# Initialize the problem to be solved
prob = LpProblem("monthly_cost", LpMinimize)
# The number of time steps
# price is a pre-existing array of variable prices
tmax = len(price)
# Time range
time = list(range(tmax))
# Price reduction at every time step
d = LpVariable.dict("d", (time), 0, 5)
# Price increase at every time step
c = LpVariable.dict("c", (time), 0, 5)
# Define revenues = price increase - price reduction + initial price
revenue = ([(c[t] - d[t] + price[t]) for t in time])
# Find maximum revenue
max_revenue = max(revenue)
# Initialize the problem
prob += sum([revenue[t]*0.0245 for t in time]) + max_revenue
# Solve the problem
prob.solve()
La max_revenue variable est égale à toujours c_0 - D_0 + prix [0] même si le prix [0] n'est pas le maximum de prix et c_0 et les deux D_0 égale à 0. Est quelqu'un sait comment s'assurer que le maximum dynamique est inséré dans le problème? Merci!
Nous vous remercions de votre réponse. Je me doutais qu'il y avait un terme mathématique pour ce type de modélisation, je n'avais tout simplement pas compris. – Adam
En ce qui concerne la reformulation du problème, je ne comprends pas très bien où cette ligne serait employée. Proposez-vous 'max_price> = revenue = ([(c [t] - d [t] + prix [t]) pour t dans le temps])' comme nouveau problème? Et max_revenue serait une variable? – Adam
Oui, 'max_revenue' serait une variable. Ensuite, vous avez un autre ensemble de contraintes d'inégalité sous la forme: 'max_revenue> = revenue', à côté des contraintes d'égalité d'origine:' revenue = ([(c [t] - d [t] + prix [t]) pour t in temps]) '. Désolé, c'était un peu vague - je l'ai réparé maintenant. J'espère que cela t'aides. À votre santé. –