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

namespace ConsoleApplication17
{

    class DP
    {

       double dynamic(int n,double k,double c,double h, params int[] demand  )
        {
            int[,] Dmd = new int[n + 1, n + 1];
            int[,] x = new int[n + 1, n + 1];
            int[,] inv = new int[n + 1, n + 1];


            double[,] cost = new double[n + 1, n + 1];
            double[,] cost_trans = new double[n + 1, n + 1];
            double[][] cost_copy = new double[n + 1][];
            double[,] cost_min = new double[n + 1, n + 1];
            double[,] cost_p = new double[n + 1, n + 1];
            double[,] cost_v = new double[n + 1, n + 1];
            double[,] Cost_v = new double[n + 1, n + 1];


            double[] min_cost = new double[n + 1];
            for (int i = 1; i <= n; i++)
            {
                for (int j = i; j <= n; j++)
                {
                    Dmd[i, j] = Dmd[i, j - 1] + demand[j];
                    Console.WriteLine("Dmd [{0},{1}],{2}", i, j, Dmd[i, j]);
                    Console.WriteLine("......");
                }

            }



            //cost_p
            for (int i = 1; i <= n; i++)
            {
                for (int j = i; j <= n; j++)
                {
                    cost_p[i, j] = k + c * Dmd[i, j];
                    Console.WriteLine(" cost_p [{0},{1}],{2}", i, j, cost_p[i, j]);
                    Console.WriteLine("......");
                }

            }


            //inventory upper triangle  cost_v

            for (int i = 2; i <= n; i++)
            {
                for (int j = 1; j <= n; j++)
                {

                    inv[i - 1, j] = Dmd[i, j];

                    cost_v[i - 1, j] = h * inv[i - 1, j];

                    Console.WriteLine("inv: [{0},{1}],{2},cost_inv: [{0},{1}],{3}", i - 1, j, inv[i - 1, j], cost_v[i - 1, j]);
                    Console.WriteLine("......");
                }
                Console.WriteLine("......");
            }


            //  Cost_v
            for (int i = 1; i <= n - 1; i++)
            {
                for (int j = 1; j <= n; j++)
                {

                    for (int q = i; q <= n; q++)
                    {
                        Cost_v[i, j] += cost_v[q, j];

                    }
                    Console.WriteLine("Cost_v: [{0},{1}],{2},cost_v: [{0},{1}],{3}", i, j, Cost_v[i, j], cost_v[i, j]);
                }
            }

            //cost
            for (int i = 1; i <= n; i++)
            {
                for (int j = 1; j <= n; j++)
                {

                    cost[i, j] += Cost_v[i, j] + cost_p[i, j];

                    Console.WriteLine("cost: [{0},{1}],{2},", i, j, cost[i, j]);
                }
            }

            //cost_copy

            for (int i = 1; i <= n; i++)
            {
                cost_copy[i - 1] = new double[i];
                for (int j = 1; j <= i; j++)
                {
                    if (j == 1)
                    {
                        cost_copy[i - 1][j - 1] = cost[j, i];
                    }

                    else
                    {
                        cost_copy[i - 1][j - 1] = cost_copy[j - 2].Min() + cost[j, i];
                    }
                    
                    Console.WriteLine("   cost_copy: [{0}][{1}],{2}    ", i, j, cost_copy[i - 1][j - 1]);
                }

            }

      double mini =cost_copy[n-1].Min();
            Console.Write("mini cost: {0}",cost_copy[n-1].Min());
            return cost_copy[n - 1].Min();




        }
        class Program
        {

            static void Main(string[] args)
            {
                int n_1 = 5;
                int k_1 = 250;
                int c_1 = 2;
                int h_1 = 1;
                int[] demand_1 = new int[] { 0, 220, 280, 360, 140, 300 };

                DP dp=new DP();
                dp.dynamic(n_1, k_1, c_1, h_1, demand_1);


                Console.Read();


            }
        }
    }
}


posted on 2011-04-22 10:56  Elitez  阅读(189)  评论(0编辑  收藏  举报