源代码的实验优化超过一个圈


源代码的实验优化超过一个圈


从gurobipy从数学进口进口* *导入随机导入时间导入系统#做一个圆定义在t0 =一百万约束time.time () n = 1024 * 1024 =模型(“循环优化”)X = m.addVars(2磅= 2乌兰巴托= 2)世行= 0 Wc = 0 Wd = 0 maxdiff = 0硝石利润率= 0 = 1.01 m.addConstrs (X [0] * cos((2 *π*我)/ n) + X [1] * sin((2 *π*我)/ n) < = 1在%中添加了2个Vars和%d约束。2f秒' % (n, time.time()-t0)) m.Params.OutputFlag = 0 m.Params.Presolve = 0 #现在选择随机目标并优化。结果的最优#解决方案必须在范围(4096)的i的圆中:theta=2*pi*random.random() a= cos() b = sin() m.s etobject (X[0] * a + X[1] * b) m.s etobject () m.s iter += m.s itercount #查看半径为1的圆的边界的解有多远,如果我们减少(a, b)的最优解应该是(a - b)错误= (X[0]。X + 1) * (X[0]。X +) + (X[1]。X + b) * (X[1]。X + b) #显示大多数不准确性的解决方案如果(错误>利润率* maxdiff或m.BoundVio >利润率*世行或m.ConstrVio >利润率* Wc或m.DualVio >利润率* Wd):maxdiff = max(maxdiff, error) Wb = max(Wb, m.b undvio) Wc = max(Wb, m.b undvio) Wd = max(Wd, m.DualVio) print('Errors: %g %g %g %g Iter %d %d Kappa %g' % (maxdiff, Wb, Wc, Wd, i, niter, m.c apapexact)) sys.stdout.flush()