線形計画問題モンテカルロを解決するための C# 確率論的手法

線形計画問題:
max=3 x1+2 x2
x1+2 x2<=5
2
x1+x2<=4
4 x1+3 x2<=9
x1>=0
x2>=0
正しい結果: x1=1.5; x2 = 1、最大 z=6.5

            Random random1  = new Random(DateTime.Now.Millisecond);
            Random random2 = new Random(DateTime.Now.Millisecond*DateTime.Now.Millisecond);
            double max=-9999,x1=0,x2=0,resultX1=0,resultX2=0;
            for (int i = 0; i < 654321; i++)
            {
    
    
                if (random1.Next(0, 100) % 2 == 0)
                {
    
    
                    x1 = resultX1 + random1.NextDouble();
                }
                else
                {
    
    
                    x1 = resultX1 - random1.NextDouble();
                }
                if (random2.Next(0, 100) % 2 == 0)
                {
    
    
                    x2 = resultX2 + random2.NextDouble();
                }
                else
                {
    
    
                    x2 = resultX2 - random2.NextDouble();
                }
                if (x1 + 2 * x2 <= 5 && 2 * x1 + x2 <= 4 && 4 * x1 + 3 * x2 <= 9)
                {
    
    
                    if (3 * x1 + 2 * x2>max)
                    {
    
    
                        resultX1 = x1;
                        resultX2 = x2;
                        max = 3 * x1 + 2 * x2;
                    }
                }
            }
            textBox1.Text = resultX1.ToString();
            textBox2.Text = resultX2.ToString();
            textBox3.Text = max.ToString();

ここに画像の説明を挿入します

おすすめ

転載: blog.csdn.net/qq_34677276/article/details/132250127