项目作者: nicolai-schwartze

项目描述 :
Differential Evolution for solving Partial Differential Equations
高级语言: Jupyter Notebook
项目地址: git://github.com/nicolai-schwartze/Masterthesis.git
创建时间: 2020-04-03T12:16:43Z
项目社区:https://github.com/nicolai-schwartze/Masterthesis

开源协议:MIT License

下载


Masterthesis

Computational Intelligence Methods for Solving Partial Differential Equations

For earning a Master of Science in Mechatronics from Vorarlberg University of Applied Science

Abstract

This master thesis investigates a Computational Intelligence-based method for solving PDEs.
The proposed strategy formulates the residual of a PDE as a fitness function. The solution is approximated by a finite sum of Gauss kernels.
An appropriate optimisation technique, in this case JADE, is deployed that searches for the best fitting parameters for these kernels.
This field is fairly young, a comprehensive literature research reveals several past papers that investigate similar techniques.
To evaluate the performance of the solver, a comprehensive testbed is defined. It consists of 11 different Poisson equations.
The solving time, the memory consumption and the approximation quality are compared to the state of the art open-source Finite Element solver NGSolve.
The first experiment tests a serial JADE. The results are not as good as comparable work in the literature.
Further, a strange behaviour is observed, where the fitness and the quality do not match.
The second experiment implements a parallel JADE, which allows to make use of parallel hardware.
This significantly speeds up the solving time. The third experiment implements a parallel JADE with adaptive kernels.
It starts with one kernel and introduce more kernels along the solving process.
A significant improvement is observed on one PDE, that is purposely built to be solvable.
On all other testbed PDEs the quality-difference is not conclusive. The last experiment investigates the discrepancy between the fitness and the quality.
Therefore, a new kernel is defined. This kernel inherits all features of the Gauss kernel and extends it with a sine function.
As a result, the observed inconsistency between fitness and quality is mitigated. The thesis closes with a proposal for further investigations.
The concepts here should be reconsidered by using better performing optimisation algorithms from the literature, like CMA-ES.
Beyond that, an adaptive scheme for the collocation points could be tested. Finally, the fitness function should be further examined.

NGSolve GUI Prerequisites

for a more detailed description look at
https://ngsolve.org/docu/latest/install/usejupyter.html

  • python version 3.7 with virtual environment
    1. > conda create -n ngsolve anaconda python=3.7
  • change virtual envorinment to ngsolve:
    1. > conda activate ngsolve
  • ipykernel version 4.10 in newly created virtual environment
    1. > conda install ipykernel==4.10.0
  • install ngsolve as recommended by https://ngsolve.org/downloads

    1. > conda config --add channels conda-forge
    2. > conda config --add channels ngsolve
    3. > conda install ngsolve
  • jupyter notebook extensions for ngsolve
    1. > jupyter nbextension install --user --py ngsolve
  • run ngsolve gui-examples under ./code/examples/ngsolve_gui.ipynb
testbed_small_domain_1647611112974.pdf
unsig_better_1647611112997.pdf
unsig_undecided_1647611113046.pdf
unsig_worse_1647611113109.pdf
Master_Thesis_Paper-built_1647611113469.pdf
FHVlogo-eps-converted-to_1647611113797.pdf
fhvlogo_neu-eps-converted-to_1647611113909.pdf
Machine_Tabular_1647611113941.pdf
aliasing_error_1647611113950.pdf
centos-logo-light_1647611113964.pdf
collocation_weight_1647611113969.pdf
symmetry_1647611113980.pdf
testbed_big_domain_1647611113997.pdf
testbed_small_domain_1647611114056.pdf
masterthesis_poster_1647611114094.pdf
presentation_de_1647611114251.pdf
presentation_en_1647611114563.pdf
mem_boxplot_pde_0a_0b_1_2_4_5_6_7_8_9_1647611104501.pdf
mem_boxplot_pde_3_1647611104507.pdf
pde3_ndof_1647611104532.pdf
squared_domain_error_1647611104564.pdf
time_boxplot_pde_0a_0b_1_2_4_5_6_7_8_9_1647611104694.pdf
time_boxplot_pde_3_1647611104740.pdf
mem_boxplot_ci_exp0_1647611104826.pdf
pde0a_missing_bump_sol_10_4_1647611104877.pdf
pde0a_missing_bump_sol_10_6_1647611104942.pdf
pde0b_best_solution_1647611105053.pdf
pde0b_worst_solution_1647611105136.pdf
pde5_best_sol_10_4_1647611105224.pdf
pde5_best_sol_10_6_1647611105288.pdf
pde5_fit_histogram_1647611105350.pdf
pde5_norm_histogram_1647611105375.pdf
time_boxplot_ci_exp0_1647611105397.pdf
abs_error_pde4_parallel_1647611105425.pdf
abs_error_pde4_serial_1647611105486.pdf
mem_boxplot_ci_exp1_1647611105525.pdf
pde4_ex0_ex1_boxplot_1647611105531.pdf
pde4_ex0_ex1_histogram_1647611105551.pdf
speedup_plot_1647611105577.pdf
time_boxplot_ci_exp1_1647611105623.pdf
cipde0a_kernel6_out_1647611105863.pdf
cipde0a_kernel6_small_1647611105943.pdf
kernels_boxplot_ci_exp2_1647611105992.pdf
mem_boxplot_ci_exp2_1647611106037.pdf
pde2_best_result_kernelbars_1647611106094.pdf
pde2_worst_result_kernelbars_1647611106127.pdf
pde3_best_result_kernelbars_1647611106161.pdf
pde3_worst_result_kernelbars_1647611106188.pdf
pde4_best_result_kernelbars_1647611106199.pdf
pde4_worst_result_kernelbars_1647611106289.pdf
pde5_L2_norm_boxplot_1647611106323.pdf
pde5_L2_norm_boxplot_wo_outlier_1647611106349.pdf
pde5_best_3D_plot_1647611106378.pdf
pde5_outlier1_3D_plot_1647611106413.pdf
pde5_outlier1_kernel_bar_1647611106432.pdf
pde5_outlier2_3D_plot_1647611106443.pdf
pde5_outlier2_kernel_bar_1647611106455.pdf
pde6_3D_plot_outlier1_1647611106501.pdf
pde6_3D_plot_outlier2_1647611106596.pdf
pde6_L2_norm_boxplot_1647611106624.pdf
pde6_L2_norm_boxplot_wo_outlier_1647611106657.pdf
pde6_kernel_bar_plot_outlier1_1647611106664.pdf
pde6_kernel_bar_plot_outlier2_1647611106742.pdf
pde7_best_result_kernelbars_1647611106752.pdf
pde7_worst_result_kernelbars_1647611106777.pdf
pde_0a_kernels_vs_l2norm_1647611106798.pdf
pde_2_3_4_7_kernels_vs_l2norm_1647611106844.pdf
time_boxplot_ci_exp2_1647611106882.pdf
mem_boxplot_ci_exp3_1647611106989.pdf
mem_boxplot_ci_exp3a_1647611107049.pdf
pde0b_ex1_abs_error_1647611107142.pdf
pde0b_ex2_abs_error_1647611107281.pdf
pde0b_ex3_abs_error_1647611107369.pdf
pde0b_ex3a_abs_error_1647611107858.pdf
pde5_adaptive_histogram_1647611107915.pdf
pde5_best_solution_adaptive_1647611107974.pdf
pde5_best_solution_non-adaptive_1647611108009.pdf
pde5_non-adaptive_histogram_1647611108040.pdf
pde5_non-adaptive_histogram_L2_1647611108063.pdf
pde5_non-adaptive_histogram_fit_1647611108102.pdf
pde5_worst_solution_adaptive_1647611108117.pdf
pde5_worst_solution_non-adaptive_1647611108174.pdf
time_boxplot_ci_exp3_1647611108209.pdf
time_boxplot_ci_exp3a_1647611108249.pdf
ert_plot_1647611108305.pdf
pde0B_gauss_influence_1647611108468.pdf
pde0B_sine_influence_1647611109063.pdf
pde2347_L2norm_kernelNR_1647611109268.pdf
pde2347_minError_L2norm_1647611109336.pdf
pde2347_minError_kernelNR_1647611109352.pdf
pde2_pop_var_10_6_1647611109393.pdf
pde2_pop_var_10_7_1647611109460.pdf
pde5_gak_fit_l2_history_1647611109504.pdf
pde5_gsk_fit_l2_history_1647611109526.pdf
aliasing_error_1647611109595.pdf
gak_1647611109618.pdf
gsk_1647611109773.pdf
sol_pde_0a_1647611110118.pdf
sol_pde_0b_1647611110303.pdf
sol_pde_1_1647611110401.pdf