Mathemtische Optimierung mit Optlang / durchschleifen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
lsw04@gmx.net
User
Beiträge: 2
Registriert: Mittwoch 8. August 2018, 11:45

Kennt sich jemand mit folgender Fehlermeldung aus :

Container '<optlang.container.Container object at 0x000000000DAC9080>' already contains an object with name 'max. Anzahl von verwendeten Wandlertypen'.

fehler tritt auf wenn ich versuche die Optimierung durchzuschleifen
Sirius3
User
Beiträge: 17738
Registriert: Sonntag 21. Oktober 2012, 17:20

Na, der Container enthält schon ein Objekt mit dem Namen 'max. Anzahl von verwendeten Wandlertypen'. Ohne mehr Kontext kann man auch nicht mehr sagen.
lsw04@gmx.net
User
Beiträge: 2
Registriert: Mittwoch 8. August 2018, 11:45

# zulässige Wandlertypen in jedem Ring
Z = zeros((R, W))
for r in range(R):
Z[r, :] = (AW >= AR[r]) & (BW >= BR[r])

Z #.sum().sum()
Z_df = pd.DataFrame(Z,
index= ["R{}".format(r) for r in range(R)],
columns= ["W{}".format(w) for w in range(W)],
dtype='int')


variables = {}

variables['x'] = {}
for r in range(R):
for w in range(W):
if Z[r, w]:
my_var = Variable(name= "x_{},{}".format(r,w), type="integer", lb=0)
variables['x'][r,w] = my_var
x_names = [ "x_{},{}".format(r,w) for r in range(R) for w in range(W) if Z[r, w] ]

variables['y'] = {}
for w in range(W):
my_var = Variable(name= "y_{}".format(w), type="binary")
variables['y'][w] = my_var
y_names = [ "y_{}".format(w) for w in range(W) ]

print my_var
print variables['y']
obj = Objective(sum(KW[w]*variables['x'][r,w]
for r in range(R) for w in range(W) if Z[r, w]
), direction='min')

## Nebenbedingungen
NW= 84
#NW = 84 # maximal Anzahl an verwendbaren Wandlertypen
Optimierung = []
constraints = []

for r in range(R):
const = Constraint(sum(variables['x'][r, w] for w in range(W) if Z[r, w]),
lb = NR[r], name="Anzahl Wandler fuer Ring {}".format(r))
constraints.append(const)

N = sum(NR)
for w in range(W):
const = Constraint(sum(variables['x'][r, w] for r in range(R) if Z[r, w])
- N*variables['y'][w],
ub = 0, name="Verwendung von Wandlertyp {}".format(w))
constraints.append(const)
for nw in range(NW):
const = Constraint(sum(variables['y'][w] for w in range(W)),
ub = nw, name="max. Anzahl von verwendeten Wandlertypen")
constraints.append(const)

model = Model()
model.add(constraints)
model.objective = obj


# Optimize and print the solution
status = model.optimize()
print("Status = {}".format(status))
print("optimale Kosten = {:0.2f}".format(model.objective.value))
Optimierung.append(model.objective.value)
print Optimierung


der FEHLER tritt auf sobald ich versuche, bei den constraints den ub von 1 bis 84 (nw) nurchzuschleifen. ich möchte also eine Optimierung von jedem nw (1-84). Ich hoffe du kannst es dir vorstellen. beste grüße
Antworten