• 大小: 50KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-06
  • 语言: C#
  • 标签: 代码  c#  遗传算法  多元  

资源简介

采用c#编写的三元函数求最值问题,例子是有三个未知数,且三个未知数有取值范围,依据遗传算法求得三元函数的最大值

资源截图

代码片段和文件信息

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ycsf3x_new
{
    class Program
    {
        private const double PI = 3.1415926535897932384;
        private double[] m_minValue;//变量取值范围-最小值
        private double[] m_maxValue;//变量取值范围-最大
        private double[] m_length;//m_maxValue-m_minValue
        private int[] m_codingLength;//编码长度 [131412]
        private int m_populationNumber;//种群大小 50
        private int dimention;//维数
        private string[][][] m_populations;//种群
        private string[][] m_population;//种群123...
        private double[][] m_doublePopulation;
        private double[] m_double;//每个种子的实数值
        private double[] m_fitness;//适应度
        private double m_crossRate;//交叉概率
        private double m_varRate;//变异概率
        private double m_winFitness;//获胜适应度
        private int popLength;//染色体长度

        public string[][] WinCoding { get; set; }
        public double[] WinValue { get; set; }

        public Program(int populationNumber int populationDimension double[] minValue double[] maxValue double crossRate double varRate)
        {
            m_minValue = minValue;//区间范围最小值数组
            m_maxValue = maxValue; //区间范围最大值数组
            m_length = new double[maxValue.Length];//区间长度
            for (var i = 0; i < maxValue.Length; i++)
            {
                m_length[i] = maxValue[i] - minValue[i];
            }
            m_populationNumber = populationNumber;//种群大学
            dimention = populationDimension;//未知数个数
            popLength = 15; //染色体长度 暂定15
            m_crossRate = crossRate;//交叉概率
            m_varRate = varRate;//变异概率
        }

        /// 
        /// 初始化种群
        /// 

        public void InitPopulation()
        {
            m_codingLength = GetCodingLength(m_length 3);
            m_populations = new string[m_populationNumber][][];
            for (int i = 0; i < m_populationNumber; i++)
            {
                m_population = new string[dimention][];
                for (var j = 0; j < dimention; j++)
                {
                    m_population[j] = GetRandomBinaryArray(m_codingLength[j] i);
                    //foreach (var c in m_population[j])
                    //{
                    //    Console.Write(c);
                    //}
                    //Console.WriteLine();
                }
                m_populations[i] = m_population;
                //Console.WriteLine();
            }
        }

        public string[] GetRandomBinaryArray(int count int ii)
        {
            Random rnd = new Random(DateTime.Now.Millisecond + ii);//添加种子确保每次取得0-1不一样
            byte[] keys = new byte[count];
            rnd.NextBytes(keys);
            List items = new List();
            for (int i = 0; i < count; i++)
            {
                if (keys[i] > 127)
       

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-09-12 16:49  ycsf3x_new\
     目录           0  2018-09-12 16:49  ycsf3x_new\.vs\
     目录           0  2018-09-12 16:49  ycsf3x_new\.vs\ycsf3x_new\
     目录           0  2018-09-12 16:49  ycsf3x_new\.vs\ycsf3x_new\v14\
     文件       36864  2018-09-13 09:46  ycsf3x_new\.vs\ycsf3x_new\v14\.suo
     目录           0  2018-09-13 09:44  ycsf3x_new\ycsf3x_new\
     文件         189  2018-09-12 16:49  ycsf3x_new\ycsf3x_new\App.config
     文件       13805  2018-09-13 09:44  ycsf3x_new\ycsf3x_new\Program.cs
     目录           0  2018-09-12 16:49  ycsf3x_new\ycsf3x_new\Properties\
     文件        1328  2018-09-12 16:49  ycsf3x_new\ycsf3x_new\Properties\AssemblyInfo.cs
     目录           0  2018-09-12 16:49  ycsf3x_new\ycsf3x_new\bin\
     目录           0  2018-09-12 18:10  ycsf3x_new\ycsf3x_new\bin\Debug\
     文件        9728  2018-09-13 09:44  ycsf3x_new\ycsf3x_new\bin\Debug\ycsf3x_new.exe
     文件         189  2018-09-12 16:49  ycsf3x_new\ycsf3x_new\bin\Debug\ycsf3x_new.exe.config
     文件       24064  2018-09-13 09:44  ycsf3x_new\ycsf3x_new\bin\Debug\ycsf3x_new.pdb
     文件       22696  2018-09-13 09:44  ycsf3x_new\ycsf3x_new\bin\Debug\ycsf3x_new.vshost.exe
     文件         189  2018-09-12 16:49  ycsf3x_new\ycsf3x_new\bin\Debug\ycsf3x_new.vshost.exe.config
     文件         490  2018-04-12 07:35  ycsf3x_new\ycsf3x_new\bin\Debug\ycsf3x_new.vshost.exe.manifest
     目录           0  2018-09-12 16:49  ycsf3x_new\ycsf3x_new\obj\
     目录           0  2018-09-13 09:10  ycsf3x_new\ycsf3x_new\obj\Debug\
     文件        6809  2018-09-12 16:49  ycsf3x_new\ycsf3x_new\obj\Debug\DesignTimeResolveAssemblyReferencesInput.cache
     目录           0  2018-09-13 11:52  ycsf3x_new\ycsf3x_new\obj\Debug\TempPE\
     文件           0  2018-09-12 16:49  ycsf3x_new\ycsf3x_new\obj\Debug\TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs
     文件           0  2018-09-12 16:49  ycsf3x_new\ycsf3x_new\obj\Debug\TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs
     文件           0  2018-09-12 16:49  ycsf3x_new\ycsf3x_new\obj\Debug\TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs
     文件         562  2018-09-13 09:44  ycsf3x_new\ycsf3x_new\obj\Debug\ycsf3x_new.csproj.FileListAbsolute.txt
     文件        1922  2018-09-13 09:10  ycsf3x_new\ycsf3x_new\obj\Debug\ycsf3x_new.csprojResolveAssemblyReference.cache
     文件        9728  2018-09-13 09:44  ycsf3x_new\ycsf3x_new\obj\Debug\ycsf3x_new.exe
     文件       24064  2018-09-13 09:44  ycsf3x_new\ycsf3x_new\obj\Debug\ycsf3x_new.pdb
     文件        2680  2018-09-12 16:49  ycsf3x_new\ycsf3x_new\ycsf3x_new.csproj
     文件         997  2018-09-12 16:49  ycsf3x_new\ycsf3x_new.sln
............此处省略0个文件信息

评论

共有 条评论