old_z = z[0] old_dvs = x old_zl = zl old_zu = zu # Divide the bound multipliers by their associated volumes vols = filtr_volumes.getArray() zl[:] = zl[:] / vols zu[:] = zu[:] / vols else: # Here we use MMA, and only worry about interpolating the # variables max_mma_iters = args.max_opt_iters # Set the ParOpt problem into MMA mma = ParOpt.pyMMA(problem, use_mma=False) mma.setInitAsymptoteOffset(0.05) mma.setBoundRelax(1e-4) mma.setOutputFile(os.path.join(args.prefix, 'mma_output%d.out' % (ite))) # Create the ParOpt problem opt = ParOpt.pyParOpt(mma, args.max_lbfgs, ParOpt.BFGS) # Set parameters opt.setMaxMajorIterations(args.max_opt_iters) opt.setHessianResetFreq(args.hessian_reset) opt.setAbsOptimalityTol(args.opt_abs_tol) opt.setBarrierFraction(args.opt_barrier_frac) opt.setBarrierPower(args.opt_barrier_power) opt.setOutputFrequency(args.output_freq)
old_z = z[0] old_dvs = x old_zl = zl old_zu = zu # Divide the bound multipliers by their associated volumes areas = filtr_areas.getArray() zl[:] = zl[:] / areas zu[:] = zu[:] / areas else: # Here we use MMA, and only worry about interpolating the # variables max_mma_iters = args.max_opt_iters # Set the ParOpt problem into MMA mma = ParOpt.pyMMA(problem, 0) mma.setPrintLevel(2) mma.setMinAsymptoteOffset(0.01) mma.setMaxAsymptoteOffset(100.0) mma.setOutputFile(os.path.join(args.prefix, 'mma_output%d.out' % (ite))) # Create the ParOpt problem opt = ParOpt.pyParOpt(mma, args.max_lbfgs, ParOpt.NO_HESSIAN_APPROX) # Set parameters opt.setMaxMajorIterations(args.max_opt_iters) opt.setHessianResetFreq(args.hessian_reset) opt.setAbsOptimalityTol(args.opt_abs_tol) opt.setBarrierFraction(args.opt_barrier_frac) opt.setBarrierPower(args.opt_barrier_power)
p.add_argument('--opt_abs_tol', type=float, default=1e-6) p.add_argument('--opt_barrier_frac', type=float, default=0.25) p.add_argument('--opt_barrier_power', type=float, default=1.0) p.add_argument('--output_freq', type=int, default=1) p.add_argument('--max_lbfgs', type=int, default=10) p.add_argument('--hessian_reset', type=int, default=10) args = p.parse_args() max_mma_iters = 10 problem = Toy(comm) problem.setInequalityOptions(dense_ineq=True, sparse_ineq=False, use_lower=True, use_upper=True) # Set the ParOpt problem into MMA mma = ParOpt.pyMMA(problem, use_mma=True) mma.setInitAsymptoteOffset(0.5) mma.setMinAsymptoteOffset(0.01) mma.setBoundRelax(1e-4) mma.setOutputFile(os.path.join(args.prefix, 'mma_output.out')) # Create the ParOpt problem opt = ParOpt.pyParOpt(mma, args.max_lbfgs, ParOpt.BFGS) # Set parameters opt.setMaxMajorIterations(args.max_opt_iters) opt.setHessianResetFreq(args.hessian_reset) opt.setAbsOptimalityTol(args.opt_abs_tol) opt.setBarrierFraction(args.opt_barrier_frac) opt.setBarrierPower(args.opt_barrier_power) opt.setOutputFrequency(args.output_freq)