コード例 #1
0
ファイル: cantilever_frequency.py プロジェクト: Nasrollah/tmr
        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)
コード例 #2
0
        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)
コード例 #3
0
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)