GOOGLE ADS

Donnerstag, 21. April 2022

CPLEX-Binärvariable in Python

Ich versuche, mithilfe von IBM CPLEX eine binäre Variable für mein Optimierungsproblem in Python einzurichten. In meiner Zielfunktion habe ich eine Linie eingerichtet, die sich je nach Marktpreis in t ein- und ausschaltet:

mdl.maximize(
mdl.sum( (1-b[t]) * (prod_diff[t] * price_diff[t]) + \
(b[t]) * (vol_t * price[t] + prod_diff[t] * price_spot[t]) for t in time
)

Vorbehaltlich:

mdl.add_constraint(
if prod_diff[t] <= 0:
b= 0
else:
b= 1
)

Anscheinend gibt es so etwas wie logische und bedingte Einschränkungen, aber leider schaffe ich es nicht, es in Python einzurichten. Ich bin neu auf diesem Gebiet, also wenn jemand etwas Licht auf das Problem werfen kann, wäre ich dankbar


Lösung des Problems

In der einfachen Python-Optimierung siehe

wenn, dann

from docplex.mp.model import Model
mdl = Model(name='buses')
nbbus40 = mdl.integer_var(name='nbBus40')
nbbus30 = mdl.integer_var(name='nbBus30')
mdl.add_constraint(nbbus40*40 + nbbus30*30 >= 300, 'kids')
mdl.minimize(nbbus40*500 + nbbus30*400)
mdl.solve()
for v in mdl.iter_integer_vars():
print(v," = ",v.solution_value)
print()
print("with if nb buses 40 more than 3 then nbBuses30 more than 7")
#if then constraint
mdl.add(mdl.if_then(nbbus40>=3,nbbus30>=7))
mdl.minimize(nbbus40*500 + nbbus30*400)
mdl.solve()

for v in mdl.iter_integer_vars():
print(v," = ",v.solution_value)

Keine Kommentare:

Kommentar veröffentlichen

Warum werden SCHED_FIFO-Threads derselben physischen CPU zugewiesen, obwohl CPUs im Leerlauf verfügbar sind?

Lösung des Problems Wenn ich das richtig verstehe, versuchen Sie, SCHED_FIFO mit aktiviertem Hyperthreading ("HT") zu verwenden, ...