#!/usr/bin/env python3 from CADETProcess.simulation import Cadet, ProcessEvaluator from CADETProcess.optimization import OptimizationProblem from CADETProcess.common import RankedPerformance from case_2a_simulation import batch_long_ternary process_simulator = Cadet() 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)
process_simulator = Cadet() process_simulator.evaluate_stationarity = True purity_required = [0.95, 0.95] ranking = [1, 1] def fractionation_objective(performance): performance = RankedPerformance(performance, ranking) return -performance.mass 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)