#!/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)
Esempio n. 2
0
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)