process_simulator.evaluate_stationarity = True ranking = [1, 1, 1] purity_required = [0.95, 0.95, 0.95] evaluator = ProcessEvaluator(process_simulator, purity_required, ranking) optimization_problem = OptimizationProblem(batch_long_ternary, evaluator, name='case_2a', save_log=True) def objective_function(performance): ranked = RankedPerformance(performance, ranking) return -ranked.productivity * ranked.recovery * ranked.eluent_consumption optimization_problem.objective_fun = objective_function optimization_problem.add_variable('cycle_time', lb=10, ub=1200) optimization_problem.add_variable('feed_duration.time', lb=10, ub=100) optimization_problem.add_linear_constraint( opt_vars=['feed_duration.time', 'cycle_time'], factors=[1, -1], b=0) if __name__ == "__main__": from CADETProcess.optimization import DEAP as Solver opt_solver = Solver() results = opt_solver.optimize(optimization_problem, save_results=True)
fractionation_optimizer = FractionationOptimizer(purity_required, fractionation_objective) evaluator = ProcessEvaluator(process_simulator, fractionation_optimizer) optimization_problem = OptimizationProblem(batch_binary, evaluator, save_log=True) def objective_function(performance): performance = RankedPerformance(performance, ranking) return -performance.mass * performance.recovery * performance.eluent_consumption optimization_problem.add_objective(objective_function) optimization_problem.add_variable('cycle_time', lb=10, ub=600) optimization_problem.add_variable('feed_duration.time', lb=10, ub=300) optimization_problem.add_linear_constraint( ['feed_duration.time', 'cycle_time'], [1, -1]) if __name__ == "__main__": from CADETProcess.optimization import DEAP as Solver opt_solver = Solver() results = opt_solver.optimize(optimization_problem, save_results=True, use_multicore=False)