51 adding the variables and constraints to the model
52 @ingroup PYTHON1THREAD_PINADD2
56 demand = [1.0 + 2.3 * pow(1.015, t)
for t
in range(T)]
61 varidx = self.addVariable(0, co.Conopt.Infinity, 18)
62 self.
vartd.append(varidx)
65 varidx = self.addVariable(0, co.Conopt.Infinity, 7 * (t + 1))
66 self.
varcs.append(varidx)
69 varidx = self.addVariable(0, co.Conopt.Infinity, 7)
70 self.
vars.append(varidx)
73 varidx = self.addVariable(
76 self.getVariable(self.
vartd[t]).curr
77 - self.getVariable(self.
vars[t]).curr,
79 self.
vard.append(varidx)
83 varidx = self.addVariable(
86 self.getVariable(self.
varr[t - 1]).curr
87 - self.getVariable(self.
vard[t]).curr,
90 varidx = self.addVariable(
93 500 - self.getVariable(self.
vard[t]).curr,
95 self.
varr.append(varidx)
98 varidx = self.addVariable(1, co.Conopt.Infinity, 14)
99 self.
varp.append(varidx)
102 varidx = self.addVariable(-co.Conopt.Infinity, co.Conopt.Infinity)
103 self.
varrev.append(varidx)
110 for i
in range(len(xkeep)):
111 self.getVariable(i).curr = xkeep[i]
114 self.getVariable(self.
vartd[T - 1]).curr = (
115 2 * self.getVariable(self.
vartd[T - 2]).curr
116 - self.getVariable(self.
vartd[T - 3]).curr
119 self.getVariable(self.
varcs[T - 1]).curr = (
120 2 * self.getVariable(self.
varcs[T - 2]).curr
121 - self.getVariable(self.
varcs[T - 3]).curr
124 self.getVariable(self.
vars[T - 1]).curr = (
125 2 * self.getVariable(self.
vars[T - 2]).curr
126 - self.getVariable(self.
vars[T - 3]).curr
129 self.getVariable(self.
vard[T - 1]).curr = (
130 2 * self.getVariable(self.
vard[T - 2]).curr
131 - self.getVariable(self.
vard[T - 3]).curr
134 self.getVariable(self.
varr[T - 1]).curr = (
135 2 * self.getVariable(self.
varr[T - 2]).curr
136 - self.getVariable(self.
varr[T - 3]).curr
139 self.getVariable(self.
varp[T - 1]).curr = (
140 2 * self.getVariable(self.
varp[T - 2]).curr
141 - self.getVariable(self.
varp[T - 3]).curr
144 self.getVariable(self.
varrev[T - 1]).curr = (
145 2 * self.getVariable(self.
varrev[T - 2]).curr
146 - self.getVariable(self.
varrev[T - 3]).curr
152 for i
in range(len(xstat)):
153 self.getVariable(i).varstatus = xstat[i]
156 self.getVariable(self.
vartd[T - 1]).varstatus = self.getVariable(
160 self.getVariable(self.
varcs[T - 1]).varstatus = self.getVariable(
164 self.getVariable(self.
vars[T - 1]).varstatus = self.getVariable(
168 self.getVariable(self.
vard[T - 1]).varstatus = self.getVariable(
172 self.getVariable(self.
varr[T - 1]).varstatus = self.getVariable(
176 self.getVariable(self.
varp[T - 1]).varstatus = self.getVariable(
180 self.getVariable(self.
varrev[T - 1]).varstatus = self.getVariable(
185 objcoeff = [pow(1.05, 1 - (t + 1))
for t
in range(T)]
187 objidx = self.addConstraint(
188 co.ConstraintType_Free, 0.0, self.
varrev, objcoeff, objnlflag
194 considx = self.addConstraint(
195 co.ConstraintType_Eq,
196 demand[t] + 0.87 * 18.0,
202 considx = self.addConstraint(
203 co.ConstraintType_Eq,
212 considx = self.addConstraint(
213 co.ConstraintType_Eq,
220 considx = self.addConstraint(
221 co.ConstraintType_Eq,
229 [1.0, -0.75, 0.0, 0.0],
236 considx = self.addConstraint(
237 co.ConstraintType_Eq,
244 considx = self.addConstraint(
245 co.ConstraintType_Eq,
253 considx = self.addConstraint(
254 co.ConstraintType_Eq,
263 considx = self.addConstraint(
264 co.ConstraintType_Eq,
271 considx = self.addConstraint(
272 co.ConstraintType_Eq,
280 considx = self.addConstraint(
281 co.ConstraintType_Eq,
284 [1.0, 0.0, 0.0, 0.0],
293 for i
in range(len(estat)):
294 self.getConstraint(i).slackstatus = estat[i]
299 ).slackstatus = self.getConstraint(self.
consttdeq[T - 2]).slackstatus
303 ).slackstatus = self.getConstraint(self.
constseq[T - 2]).slackstatus
307 ).slackstatus = self.getConstraint(self.
constcseq[T - 2]).slackstatus
311 ).slackstatus = self.getConstraint(self.
constdeq[T - 2]).slackstatus
315 ).slackstatus = self.getConstraint(self.
constreq[T - 2]).slackstatus
319 ).slackstatus = self.getConstraint(self.
constdrev[T - 2]).slackstatus
322 self.setObjectiveElement(co.ObjectiveElement_Constraint, objidx)
325 self.setOptimizationSense(co.Sense_Maximize)
336 hscol.append(self.
varcs[t])
337 hsrow.append(self.
varcs[t])
338 hscol.append(self.
varcs[t])
339 hsrow.append(self.
varp[t])
340 hscol.append(self.
vard[t])
341 hsrow.append(self.
varr[t])
342 hscol.append(self.
vard[t])
343 hsrow.append(self.
varp[t])
344 hscol.append(self.
varr[t])
345 hsrow.append(self.
varr[t])
346 self.setSDLagrangianStructure(hsrow, hscol)
399 @copydoc conopt.ModelData.evaluateSDLagrangian
400 @ingroup PYTHON1THREAD_PINADD2
402 numhessian = len(hessianrow)
403 hessian = [0
for i
in range(numhessian)]
406 for t
in range(self.
T):
408 cs = x[self.
varcs[t]]
414 h2 = pow(1.02, -cs / 7.0)
418 -h1 * h2 * pow(math.log(1.02) / 7.0, 2) * u[self.
constseq[t]]
420 hessian[hessidx + 1] = (
421 0.1 * h2 * (math.log(1.02) / 7.0) * u[self.
constseq[t]]
425 hessian[hessidx + 2] = -250.0 / pow(r, 2) * u[self.
constdrev[t]]
426 hessian[hessidx + 3] = -1.0 * u[self.
constdrev[t]]
427 hessian[hessidx + 4] = 500.0 * d / pow(r, 3) * u[self.
constdrev[t]]