注:不好意思 自从写完这篇博文就没在看CSDN 因为博主专注考研 有点弃码… 毕设源码都打包的有… q1206085316

一、项目设计技术概述:

注:项目采用前后端分离的模块化设计
项目主要技术:Springboot、Vue、MyBatis-Plus、Elasticsearch、Redis、MySQL、MongDB.

二、项目结构概述

在这里插入图片描述

三、项目功能概述

前端功能主要分为五个方面:
1、门户首页
2、用户相关
3、目的地相关
4、攻略相关
5、游记相关

后端功能主要分为四个方面:
1、目的地管理
2、攻略管理
3、游记管理
4、广告管理等

四、项目表设计

项目中的表大概有六类表,分别对应上面的主要功能。最多的当然是攻略与游记相关的表。
比如与攻略有关的部分表设计如下:在这里插入图片描述
在这里插入图片描述在这里插入图片描述

五、项目页面部分设计

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

六、项目推荐功能实现

项目采用基于遗传算法的NSGA-II算法,解决了多目标优化问题。

/*
 * This code / file / algorithm is completely free to use and modify as necessary.
 * Any attribution is welcome and highly appriciated.
 */
package io.onclave.nsga.ii.algorithm;

import io.onclave.nsga.ii.api.*;
import io.onclave.nsga.ii.datastructure.Population;
import org.jfree.ui.RefineryUtilities;

import java.io.IOException;

/**
 * This is the starting point of the main NSGA-II algorithm.
 * Run this class to get the desired output.
 * 
 * @author  Debabrata Acharya <debabrata.acharya@icloud.com>
 * @version 2.0
 * @since   2.0
 */
public class Algorithm {
    
    public static void main(String[] args) throws IOException {
        
        Configuration.configure();
        
        GraphPlot multiPlotGraph = new GraphPlot();
        
        Reporter.reportInitialParentPopulationGeneration();
        Reporter.reportGeneration(1);
        
        Population parent = NSGAII.preparePopulation(Synthesis.syntesizePopulation());
        Population child = Synthesis.synthesizeChild(parent);
        Population combinedPopulation;
        
        for(int generation = 1; generation <= Configuration.GENERATIONS; generation++) {
            
            Reporter.reportGeneration(generation + 1);
            
            combinedPopulation = NSGAII.preparePopulation(Synthesis.createCombinedPopulation(parent, child));
            parent = NSGAII.getChildFromCombinedPopulation(combinedPopulation);
            child = Synthesis.synthesizeChild(parent);
            
            multiPlotGraph.prepareMultipleDataset(child, generation, "gen. " + generation);
        }
        
        Reporter.reportGraphPlotAlert();
        Reporter.render2DGraph(child);
        
        /**
         * the plotted and rendered chart/graph is viewed to the user.
         */
        multiPlotGraph.configureMultiplePlotter(Configuration.getXaxisTitle(), Configuration.getYaxisTitle(), "All Pareto");
        multiPlotGraph.pack();
        RefineryUtilities.centerFrameOnScreen(multiPlotGraph);
        multiPlotGraph.setVisible(true);
        
        Reporter.reportAlgorithmEnd();
    }
}
Logo

前往低代码交流专区

更多推荐