Try our new documentation site (beta).
Filter Content By
Version
Text Search
${sidebar_list_label} - Back
Filter by Language
Source code for the experiment on a thin feasible region
from gurobipy import * import random import sys # Test the effect of small perturbations on the optimal solutions # for a problem with a thin feasible region rhs = 1e3 m = Model('Thin line Optimization') x = m.addVar(obj=1) y = m.addVar(obj=0, lb=-GRB.INFINITY, ub=GRB.INFINITY) c1 = m.addConstr( 1e-5 * y + 1e-0 * x <= rhs) c2 = m.addConstr(- 1e-5 * y + 1e-0 * x <= rhs) m.Params.OutputFlag = 0 m.Params.Presolve = 0 m.optimize() xval = x.X yval = y.X maxdiff = 0 for i in range(1024*1024): c1.Rhs = rhs + 2e-6 * random.random() c2.Rhs = rhs + 2e-6 * random.random() x.Obj = 1 + 2e-6 * random.random() y.Obj = 0 + 2e-6 * random.random() m.optimize() x2val = x.X y2val = y.X error = (xval-x2val)*(xval-x2val) + (yval-y2val)*(yval-y2val) if error > 1e-5 + maxdiff: print('New maxdiff %g Iter %d Kappa %g Violations: %g %g %g' % (error, i, m.KappaExact, m.BoundVio, m.ConstrVio, m.DualVio)) sys.stdout.flush() maxdiff = error