13sys.path.append(
'../common/')
33 adding the variables and constraints to the model
34 @ingroup PYTHON1THREAD_QP3
37 for i
in range(self.
NN):
38 self.addVariable(0.0, co.Conopt.Infinity)
42 varidx = list(range(self.
NN))
45 self.addConstraint(co.ConstraintType_Free, 0.0, varidx, zeros, ones)
48 self.addConstraint(co.ConstraintType_Eq, 1.0, varidx, ones, zeros)
51 self.setObjectiveElement(co.ObjectiveElement_Constraint, 0)
54 self.setOptimizationSense(co.Sense_Minimize)
61 define the lagrangian structure and supplies it to CONOPT
63 @ingroup PYTHON1THREAD_QP3
65 hessianrow = [f
for x
in range(self.
NN - 1)
for f
in [x, x + 1]] + [
68 hessiancol = [f
for x
in range(self.
NN - 1)
for f
in [x, x]] + [
72 self.setSDLagrangianStructure(hessianrow, hessiancol)
76 @copydoc conopt.ModelData.evaluateNonlinearTerm
77 @ingroup PYTHON1THREAD_QP3
86 for i, q
in enumerate(self.
Qdiag)
91 (x[i + 1] - self.
target[i + 1]) * q * (x[i] - self.
target[i])
100 @copydoc conopt.ModelData.evaluateNonlinearJacobian
101 @ingroup PYTHON1THREAD_QP3
105 for i
in range(self.
NN):
115 @copydoc conopt.ModelData.evaluateSDLagrangian
116 @ingroup PYTHON1THREAD_QP3
120 for i
in range(self.
NN - 1)
122 ] + [self.
Qdiag[-1] * u[0]]
127if __name__ ==
'__main__':
128 name = os.path.basename(__file__)[:-3]
130 conopt = co.Conopt(name)
131 model = QPModelData()
136 conopt.loadModel(model)
137 conopt.setMessageHandler(msghdlr)
140 license_int_1 = os.environ.get(
'CONOPT_LICENSE_INT_1',
None)
141 license_int_2 = os.environ.get(
'CONOPT_LICENSE_INT_2',
None)
142 license_int_3 = os.environ.get(
'CONOPT_LICENSE_INT_3',
None)
143 license_text = os.environ.get(
'CONOPT_LICENSE_TEXT',
None)
145 license_int_1
is not None
146 and license_int_2
is not None
147 and license_int_3
is not None
148 and license_text
is not None
157 coi_error = conopt.solve()
static int checkSolve(String name, int model_status, int solution_status, double objective, double expected_objective, double tol)
evaluateSDLagrangian(self, x, u, hessianrow, hessiancol)
Computes and returns the numerical values of the Lagrangian of the Hessian.
setLagrangianStructure(self)
define the lagrangian structure and supplies it to CONOPT
buildModel(self)
adding the variables and constraints to the model
evaluateNonlinearJacobian(self, x, rowno, jacnum, ignerr, thread)
callback method for evaluating the jacobian for the nonlinear terms in a given row
evaluateNonlinearTerm(self, x, rowno, ignerr, thread)
callback method for evaluating the nonlinear terms in a given row