Exemplo n.º 1
0
        /// <summary>
        /// Generate arguments and call matlab function to merge row data
        /// </summary>
        /// <param name="Dr"></param>
        /// <param name="Dest"></param>
        /// <param name="Output"></param>
        private void Merge(DataRow Dr, string Dest)
        {
            Dest = Dest.OriginPath();

            string Path         = Dr["Path"].ToString();
            string Filename     = Dr["Filename"].ToString();
            string BgFilename   = Dr["Bg_Filename"].ToString();
            int    Width        = Int32.Parse(MWParameter.GetField("width").ToString());
            int    Height       = Int32.Parse(MWParameter.GetField("height").ToString());
            int    Distance     = Int32.Parse(Dr["Distance"].ToString());
            string ExportName   = Dr.GetName();
            string FgExportName = ExportName + '_' + "Foreground";
            string BgExportName = ExportName + '_' + "Background";
            int    Start_No     = Int32.Parse(Dr["Start_No"].ToString());
            int    End_No       = Int32.Parse(Dr["End_No"].ToString());
            int    Bg_Start_No  = Int32.Parse(Dr["Bg_Start_No"].ToString());
            int    Bg_End_No    = Int32.Parse(Dr["Bg_End_No"].ToString());

            Mf.MergeXlsData(Path, Filename, Dest, FgExportName, Width, Height, "whole", Start_No, End_No);
            // Output(MLLogSb.ToString());
            // MLLogSb.Clear();

            Mf.MergeXlsData(Path, BgFilename, Dest, BgExportName, Width, Height, "whole", Bg_Start_No, Bg_End_No);
            // Output(MLLogSb.ToString());
            // MLLogSb.Clear();

            Mf.SubtractBackground(Dest, ExportName);
            // Output(MLLogSb.ToString());
            // MLLogSb.Clear();

            File.Delete(Dest + '\\' + FgExportName + ".mat");
            File.Delete(Dest + '\\' + FgExportName + ".png");
            File.Delete(Dest + '\\' + BgExportName + ".mat");
            File.Delete(Dest + '\\' + BgExportName + ".png");
        }
Exemplo n.º 2
0
 private double ParseIndex(MWStructArray array)
 {
     if (array.IsField(fieldName: "index"))
     {
         var tmpIndex = (double[, ])array.GetField(fieldName: "index");
         return(tmpIndex[0, 0]);
     }
     return(double.NaN);
 }
Exemplo n.º 3
0
        static void Main(string[] args)
        {
            CropAnalyzer crop_analyzer = new CropAnalyzer();

            // Initialize checkers
            String[]      checker_names = { "vpd_check", "dewpoint_check", "crop_temp_check" };
            MWStructArray checker_list  = new MWStructArray(1, 1, checker_names);

            // Initialize required input: temp_c_in, rh_in
            MWNumericArray temp_c_in = null;
            MWNumericArray rh_in     = null;

            // Initialize optional inputs (by pair): verbose, TRUE/FALSE, vpd_min, vpd_min_val, vpd_max, vpd_max_val, dewtemp_offset, dewtemp_offset_val
            //MWCharArray vpd = "vpd", dewpoint = "dewpoint";
            MWCharArray    checkers = "checkers", verbose = "verbose", crop_name = "crop_name", crop_name_select = "";
            MWCharArray    vpd_min = "vpd_min", vpd_max = "vpd_max", dewtemp_offset = "dewtemp_offset";
            MWLogicalArray TRUE = new MWLogicalArray(true), FALSE = new MWLogicalArray(false);
            MWNumericArray vpd_min_val = 0.5, vpd_max_val = 1.2, dewtemp_offset_val = 1.0;

            // initialize output struct fields - FOR REFERENCE
            String[] vpd_check_fields       = { "type", "code", "state", "vpd", "vpd_min", "vpd_max", "hum_adj", "adjust_unit" };
            String[] dewpoint_check_fields  = { "type", "code", "state", "temp", "temp_dew", "dewtemp_offset", "adjust", "adjust_unit" };
            String[] crop_temp_check_fields = { "type", "code", "state", "temp", "temp_min", "temp_max", "adjust", "adjust_unit" };

            // Set checker options
            checker_list.SetField("vpd_check", TRUE);
            checker_list.SetField("dewpoint_check", TRUE);
            checker_list.SetField("crop_temp_check", TRUE);

            // Load crop data
            String        path         = "C:\\Program Files\\NareTrends\\BandiCropAnalyzer\\application\\bandicrop_data.ini";
            MWCharArray   crop_inifile = path;
            MWStructArray crops        = (MWStructArray)crop_analyzer.load_crop_data(crop_inifile);

            // Create struct for output
            MWStructArray  result      = new MWStructArray();
            MWNumericArray result_code = null;

            try
            {
                // Full usage: crop.env_check(crops, temp_c_in, rh_in, crop_name, crop_name_select, checkers, checker_list, vpd_min, vpd_min_val, vpd_max, vpd_max_val, verbose, FALSE);
                crop_name_select = "STRAWBERRY";
                temp_c_in        = 3;  // deg Celsius
                rh_in            = 40; // %

                result      = (MWStructArray)crop_analyzer.env_check(crops, temp_c_in, rh_in, crop_name, crop_name_select, checkers, checker_list);
                result_code = (MWNumericArray)result.GetField("code");

                Console.WriteLine("RESULT CODE: " + result_code);
                Console.Write("\nPress any key to exit.");
                Console.ReadKey();
            }
            catch
            {
                throw;
            }
        }
Exemplo n.º 4
0
 private double ParseVarianceThreshold(MWStructArray array)
 {
     if (array.IsField(fieldName: "var_thr"))
     {
         var tmpVarThr = (double[, ])array.GetField(fieldName: "var_thr");
         return(tmpVarThr[0, 0]);
     }
     return(double.NaN);
 }
Exemplo n.º 5
0
 private double ParseAmplitudeThreshold(MWStructArray array)
 {
     if (array.IsField(fieldName: "amp_thr"))
     {
         var tmpAmpThr = (double[, ])array.GetField(fieldName: "amp_thr");
         return(tmpAmpThr[0, 0]);
     }
     return(double.NaN);
 }
Exemplo n.º 6
0
        // METHOD IMPLEMENTING THE ENVIRONMENT CHECK ROUTINES
        public static MWStructArray crop_env_checker(MWStructArray crops_db, double temp, double hum, string crop)
        {
            Console.WriteLine("\n======================= ENVIRONMENT ANALYSIS =======================");

            CropAnalyzer crop_analyzer = new CropAnalyzer();

            // Initialize checkers
            String[]      checker_names = { "vpd_check", "dewpoint_check", "crop_temp_check" };
            MWStructArray checker_list  = new MWStructArray(1, 1, checker_names);

            // Initialize required input: temp_c_in, rh_in
            MWNumericArray temp_c_in = null;
            MWNumericArray rh_in     = null;

            // Initialize optional inputs (by pair): verbose, TRUE/FALSE, vpd_min, vpd_min_val, vpd_max, vpd_max_val, dewtemp_offset, dewtemp_offset_val
            //MWCharArray vpd = "vpd", dewpoint = "dewpoint";
            MWCharArray    checkers = "checkers", verbose = "verbose", crop_name = "crop_name", crop_name_select = "";
            MWCharArray    vpd_min = "vpd_min", vpd_max = "vpd_max", dewtemp_offset = "dewtemp_offset";
            MWLogicalArray TRUE = new MWLogicalArray(true), FALSE = new MWLogicalArray(false);
            MWNumericArray vpd_min_val = 0.5, vpd_max_val = 1.2, dewtemp_offset_val = 1.0;

            // initialize output struct fields - FOR REFERENCE
            String[] vpd_check_fields       = { "type", "code", "state", "vpd", "vpd_min", "vpd_max", "hum_adj", "adjust_unit" };
            String[] dewpoint_check_fields  = { "type", "code", "state", "temp", "temp_dew", "dewtemp_offset", "adjust", "adjust_unit" };
            String[] crop_temp_check_fields = { "type", "code", "state", "temp", "temp_min", "temp_max", "adjust", "adjust_unit" };

            // Set checker options
            checker_list.SetField("vpd_check", TRUE);
            checker_list.SetField("dewpoint_check", TRUE);
            checker_list.SetField("crop_temp_check", TRUE);

            // Create struct for output
            MWStructArray  result      = new MWStructArray();
            MWNumericArray result_code = null;

            try
            {
                // Full usage: crop.env_check(crops, temp_c_in, rh_in, crop_name, crop_name_select, checkers, checker_list, vpd_min, vpd_min_val, vpd_max, vpd_max_val, verbose, FALSE);
                crop_name_select = crop;
                temp_c_in        = temp; // deg Celsius
                rh_in            = hum;  // %

                result      = (MWStructArray)crop_analyzer.env_check(crops_db, temp_c_in, rh_in, crop_name, crop_name_select, checkers, checker_list);
                result_code = (MWNumericArray)result.GetField("code");

                Console.WriteLine("RESULT CODE: " + result_code);
                //Console.WriteLine("Press any key to exit.");
                //Console.ReadKey();

                return(result);
            }
            catch
            {
                throw;
            }
        }
Exemplo n.º 7
0
 private int[] ParseMerged(MWStructArray array)
 {
     if (array.IsField(fieldName: "merged"))
     {
         var tmpMerged = (double[, ])array.GetField(fieldName: "merged");
         var merged    = new int[tmpMerged.Length];
         for (var i = 0; i < tmpMerged.Length; ++i)
         {
             merged[i] = (int)tmpMerged[0, i];
         }
         return(merged);
     }
     return(null);
 }
Exemplo n.º 8
0
 private bool[] ParseVarianceFilter(MWStructArray array)
 {
     if (array.IsField(fieldName: "var_filter"))
     {
         var tmpVarFilter = (bool[, ])array.GetField(fieldName: "var_filter");
         var varFilter    = new bool[tmpVarFilter.Length];
         for (var i = 0; i < tmpVarFilter.Length; ++i)
         {
             varFilter[i] = tmpVarFilter[i, 0];
         }
         return(varFilter);
     }
     return(null);
 }
Exemplo n.º 9
0
 private bool[] ParseAmplitudeFilter(MWStructArray array)
 {
     if (array.IsField(fieldName: "amp_filter"))
     {
         var tmpAmpFilter = (bool[, ])array.GetField(fieldName: "amp_filter");
         var ampFilter    = new bool[tmpAmpFilter.Length];
         for (var i = 0; i < tmpAmpFilter.Length; ++i)
         {
             ampFilter[i] = tmpAmpFilter[i, 0];
         }
         return(ampFilter);
     }
     return(null);
 }
Exemplo n.º 10
0
 private int[] ParsePartition(MWStructArray array)
 {
     if (array.IsField(fieldName: "partition"))
     {
         var tmpPartition = (double[, ])array.GetField(fieldName: "partition");
         var partition    = new int[tmpPartition.Length];
         for (var i = 0; i < tmpPartition.Length; ++i)
         {
             // -1 for indexing purposes (label should allow to check centroid)
             partition[i] = (int)tmpPartition[0, i] - 1;
         }
         return(partition);
     }
     return(null);
 }
Exemplo n.º 11
0
 private DivikResult[] ParseSubregions(MWStructArray array)
 {
     if (array.IsField(fieldName: "subregions"))
     {
         var tmpSubregions = (MWCellArray)array.GetField(fieldName: "subregions");
         var subregions    = new DivikResult[tmpSubregions.NumberOfElements];
         for (var i = 0; i < tmpSubregions.NumberOfElements; ++i)
         {
             if (tmpSubregions[i + 1] is MWStructArray)
             {
                 subregions[i] = new DivikResult(matlabResult: tmpSubregions[i + 1]);
             }
         }
         return(subregions);
     }
     return(null);
 }
Exemplo n.º 12
0
 private double[,] ParseCentroids(MWStructArray array)
 {
     if (array.IsField(fieldName: "centroids"))
     {
         var transposed = (double[, ])array.GetField(fieldName: "centroids");
         var straight   = new double[transposed.GetLength(dimension: 1), transposed.GetLength(dimension: 0)];
         for (var i = 0; i < transposed.GetLength(dimension: 1); ++i)
         {
             for (var j = 0; j < transposed.GetLength(dimension: 0); ++j)
             {
                 straight[i, j] = transposed[j, i];
             }
         }
         return(straight);
     }
     return(null);
 }
        static void Main(string[] args)
        {
            CropAnalyzer crop = new CropAnalyzer();

            // Initialize required input: temp_c_in, rh_in
            MWNumericArray temp_c_in = null;
            MWNumericArray rh_in     = null;

            // Initialize optional input (by pair): verbose, TRUE/FALSE, vpd_min, vpd_min_val, vpd_max, vpd_max_val
            MWCharArray    verbose = "verbose", vpd_min = "vpd_min", vpd_max = "vpd_max";
            MWLogicalArray TRUE = new MWLogicalArray(true), FALSE = new MWLogicalArray(false);
            MWNumericArray vpd_min_val = 0.5, vpd_max_val = 1.2;

            // initialize output struct fields
            String[]      result_fields = { "type", "code", "state", "vpd", "vpd_min", "vpd_max", "hum_adj", "adjust_unit" };
            MWStructArray result        = new MWStructArray(1, result_fields.Count(), result_fields);

            //MWStructArray result = new MWStructArray();
            //MWNumericArray result_code = null;


            try
            {
                // Full usage: moisture.vpd_check(temp_c_in, rh_in, verbose, FALSE, vpd_min, vpd_min_val, vpd_max, vpd_max_val);
                temp_c_in   = 25;  // deg Celsius
                rh_in       = 70;  // %
                vpd_min_val = 0.5; // kPa
                vpd_max_val = 1.2; // kPa

                result      = (MWStructArray)crop.vpd_check(temp_c_in, rh_in, verbose, TRUE, vpd_min, vpd_min_val, vpd_max, vpd_max_val);
                result_code = (MWNumericArray)result.GetField("code");

                Console.WriteLine("RESULT CODE: " + result_code);
                Console.Write("\nPress any key to exit.");
                Console.ReadKey();
            }
            catch
            {
                throw;
            }
        }
    // INTERFACETO HARDWARE-LEVEL COMMANDS
    public void execute_control(MWStructArray control_action, DongConfig dong)
    {
        Console.WriteLine("\n======================= SENDING CONTROL SIGNALS =======================");
        Form1 eyesen = new Form1();

        // PARSE DONG INFORMATION
        Console.WriteLine("\nACTIVATING CONTROLS FOR DONG #{0} ...", dong.GetType().GetProperty("id").GetValue(dong, null));
        Console.WriteLine("NAME : " + dong.GetType().GetProperty("name").GetValue(dong, null));

        int nFields = control_action.NumberOfFields;

        string[] field_names = control_action.FieldNames;
        for (int ix = 0; ix < nFields; ix++)
        {
            string control_target = field_names[ix];
            string command        = control_action.GetField(control_target).ToString();
            // string command = "on"; //  switch -> stop, open, close / (2) fan -> on, off / (3) on, off)
            Console.WriteLine(control_target + " : " + command);

            // GET IO POINTS FROM DONG OBJECT
            string iotype     = "fan"; // EYESEN ACTUATORS: switch, fan, relay 입력 가능
            int    dongNumber = dong.id;

            // HEATER
            if (control_target == "heater")
            {
                int[] channels = dong.ch_heaters;
                for (int i = 0; i < channels.Length; i++)
                {
                    eyesen.EquipControl(iotype, dongNumber, channels[i], command);
                }
            }
            ;

            // VENTS
            if (control_target == "vent")
            {
                for (int i = 0; i < channels.Length; i++)
                {
                    eyesen.EquipControl(iotype, dongNumber, channels[i], command);
                }
            }
            ;

            // VENTS
            if (control_target == "fan")
            {
                for (int i = 0; i < channels.Length; i++)
                {
                    eyesen.EquipControl(iotype, dongNumber, channels[i], command);
                }
            }
            ;

            // VENTS
            if (control_target == "irrigation")
            {
                for (int i = 0; i < channels.Length; i++)
                {
                    eyesen.EquipControl(iotype, dongNumber, channels[i], command);
                }
            }
            ;
        }
    }
    // PARSE ENV_CHECK OUTPUT
    public string parse_results(MWStructArray result, int print_level)
    {
        Console.WriteLine("\n======================= ENVIRONMENT CHECK RESULT =======================");
        String[] checker_names = { "vpd_check", "dewpoint_check", "crop_temp_check" };

        // READ OUTPUT DETAILS
        MWStructArray  result_checker        = new MWStructArray();
        MWNumericArray result_code           = null;
        MWNumericArray checker_code          = null;
        MWCharArray    result_type           = null;
        MWCharArray    result_state          = null;
        MWCharArray    result_checkvar_name  = null;
        MWNumericArray result_checkvar_value = null;
        MWCharArray    result_checkvar_unit  = null;
        MWNumericArray result_adjust         = null;
        MWCharArray    result_adjust_unit    = null;

        result_code = (MWNumericArray)result.GetField("code");
        int    nFields    = result.NumberOfFields - 1;
        string result_out = null;

        for (int ifield = 1; ifield <= nFields; ifield++)
        {
            result_checker = (MWStructArray)result.GetField(checker_names[ifield - 1]);
            checker_code   = (MWNumericArray)result_checker.GetField("code");

            switch (print_level)
            {
            case 0:     // PRINT ABNORMAL RESULTS
                if ((int)checker_code > 0)
                {
                    result_type  = (MWCharArray)result_checker.GetField("type");
                    result_state = (MWCharArray)result_checker.GetField("state");
                    result_out   = "\n" + result_type.ToString() + " STATUS : " + result_state.ToString();
                    Console.WriteLine(result_out);
                }
                break;

            case 1:     //  PRINT ABNORMAL RESULTS + DETAILS
                if ((int)checker_code > 0)
                {
                    result_type           = (MWCharArray)result_checker.GetField("type");
                    result_state          = (MWCharArray)result_checker.GetField("state");
                    result_checkvar_name  = (MWCharArray)result_checker.GetField("checkvar_name");
                    result_checkvar_value = (MWNumericArray)result_checker.GetField("checkvar_value");
                    result_checkvar_unit  = (MWCharArray)result_checker.GetField("checkvar_unit");
                    result_adjust         = (MWNumericArray)result_checker.GetField("adjust");
                    result_adjust_unit    = (MWCharArray)result_checker.GetField("adjust_unit");

                    result_out  = "\n" + result_type.ToString() + " STATUS : " + result_state.ToString();
                    result_out += "\n" + result_checkvar_name.ToString() + " : " + result_checkvar_value.ToString() + " " + result_checkvar_unit.ToString();
                    result_out += "\n" + "ADJUST : " + result_adjust.ToString() + " " + result_adjust_unit.ToString();

                    Console.WriteLine(result_out);
                }
                break;

            case 2:     //  PRINT ALL RESULTS + DETAILS

                result_type           = (MWCharArray)result_checker.GetField("type");
                result_state          = (MWCharArray)result_checker.GetField("state");
                result_checkvar_name  = (MWCharArray)result_checker.GetField("checkvar_name");
                result_checkvar_value = (MWNumericArray)result_checker.GetField("checkvar_value");
                result_checkvar_unit  = (MWCharArray)result_checker.GetField("checkvar_unit");
                result_adjust         = (MWNumericArray)result_checker.GetField("adjust");
                result_adjust_unit    = (MWCharArray)result_checker.GetField("adjust_unit");

                result_out  = "\n" + result_type.ToString() + " STATUS : " + result_state.ToString();
                result_out += "\n" + result_checkvar_name.ToString() + " : " + result_checkvar_value.ToString() + " " + result_checkvar_unit.ToString();
                result_out += "\n" + "ADJUST : " + result_adjust.ToString() + " " + result_adjust_unit.ToString();

                Console.WriteLine(result_out);
                break;
            } // end of switch statement
        }

        return(result_out);
    }
Exemplo n.º 16
0
        //泛能机
        public double[] ueMachine(MWStructArray product)
        {
            //MWStructArray product = ctrlopt_Struct();

            MWStructArray[] data_ueMachine_pack = ueMachine_pack();
            MWStructArray variableInStruct = (MWStructArray)data_ueMachine_pack[0].GetField("uemachine");
            MWStructArray equipmentParameterInStruct = (MWStructArray)data_ueMachine_pack[1].GetField("uemachine");

            MWStructArray gear_uemachine_product = (MWStructArray)product.GetField("uemachine");
            string[] gear_uemachine_product_fieldNames = gear_uemachine_product.FieldNames;
            variableInStruct.SetField(gear_uemachine_product_fieldNames[0], (MWNumericArray)gear_uemachine_product.GetField(gear_uemachine_product_fieldNames[0]));

            //uemachine函数调用
            object[] dataOut = uec.uemachine(1, variableInStruct, equipmentParameterInStruct);
            MWStructArray dataOutStruct = (MWStructArray)dataOut[0];
            //consume数组
            MWStructArray consume = (MWStructArray)dataOutStruct.GetField("consume");
            string[] fieldName_Consume = consume.FieldNames;
            MWNumericArray consumeG = (MWNumericArray)consume.GetField("G");
            double[,] consumeG_Output = (double[,])consumeG.ToArray(MWArrayComponent.Real);
            //prdct数组
            MWStructArray prdct = (MWStructArray)dataOutStruct.GetField("prdct");
            string[] fieldName_prdct = prdct.FieldNames;
            MWNumericArray prdctE = (MWNumericArray)prdct.GetField("E");
            MWNumericArray prdctH = (MWNumericArray)prdct.GetField("H");
            double[,] prdctE_Output = (double[,])prdctE.ToArray(MWArrayComponent.Real);
            double[,] prdctH_Output = (double[,])prdctH.ToArray(MWArrayComponent.Real);

            //返回数据
            double[] ueMachine_Output = new double[3];
            ueMachine_Output[0] = consumeG_Output[0, 0];
            ueMachine_Output[1] = prdctE_Output[0, 0];
            ueMachine_Output[2] = prdctH_Output[0, 0];

            return ueMachine_Output;
        }
Exemplo n.º 17
0
        //优化函数
        public ArrayList ctrlopt_Array(MWStructArray dataOutStruct)
        {
            //MWStructArray dataOutStruct = ctrlopt_Struct();

            //输出结构体的内层结构体
            MWStructArray savee = (MWStructArray)dataOutStruct.GetField("savee");
            MWStructArray saveh = (MWStructArray)dataOutStruct.GetField("saveh");
            MWStructArray pv = (MWStructArray)dataOutStruct.GetField("pv");
            MWStructArray pt = (MWStructArray)dataOutStruct.GetField("pt");
            //输出结构体的其他非嵌套成员
            MWNumericArray outsideE_dataOut = (MWNumericArray)dataOutStruct.GetField("outsideE");
            MWNumericArray outsideH_dataOut = (MWNumericArray)dataOutStruct.GetField("outsideH");

            MWStructArray uemachine_gear_dataOut = (MWStructArray)dataOutStruct.GetField("uemachine");
            MWStructArray gasboiler_gear_dataOut = (MWStructArray)dataOutStruct.GetField("gasboiler");

            string[] fieldName_savee = savee.FieldNames;
            string[] fieldName_saveh = saveh.FieldNames;
            string[] fieldName_pv = pv.FieldNames;
            string[] fieldName_pt = pt.FieldNames;

            //内层结构体Savee
            MWNumericArray charge_Savee = (MWNumericArray)savee.GetField("charge");
            MWNumericArray savedE_Savee = (MWNumericArray)savee.GetField("savedE");
            MWNumericArray deltaE_Savee = (MWNumericArray)savee.GetField("IOE");
            //内层结构体Saveh
            MWNumericArray charge_Saveh = (MWNumericArray)saveh.GetField("charge");
            MWNumericArray savedH_Saveh = (MWNumericArray)saveh.GetField("savedH");
            MWNumericArray deltaH_Saveh = (MWNumericArray)saveh.GetField("IOH");
            //内层结构体Pv
            MWNumericArray consume_Pv = (MWNumericArray)pv.GetField("consume");
            MWNumericArray save_Pv = (MWNumericArray)pv.GetField("save");
            //内层结构体Pt
            MWNumericArray consume_Pt = (MWNumericArray)pt.GetField("consume");
            MWNumericArray save_Pt = (MWNumericArray)pt.GetField("save");
            //非嵌套部分
            MWNumericArray uemachine_gear = (MWNumericArray)uemachine_gear_dataOut.GetField("gear");
            MWNumericArray gasboiler_gear = (MWNumericArray)gasboiler_gear_dataOut.GetField("gear");

            //数据类型转换
            double[,] charge_Savee_Output = (double[,])charge_Savee.ToArray(MWArrayComponent.Real);
            double[,] savedE_Savee_Output = (double[,])savedE_Savee.ToArray(MWArrayComponent.Real);
            double[,] deltaE_Savee_Output = (double[,])deltaE_Savee.ToArray(MWArrayComponent.Real);

            double[,] charge_Saveh_Output = (double[,])charge_Saveh.ToArray(MWArrayComponent.Real);
            double[,] savedH_Saveh_Output = (double[,])savedH_Saveh.ToArray(MWArrayComponent.Real);
            double[,] deltaH_Saveh_Output = (double[,])deltaH_Saveh.ToArray(MWArrayComponent.Real);

            double[,] consume_Pv_Output = (double[,])consume_Pv.ToArray(MWArrayComponent.Real);
            double[,] save_Pv_Output = (double[,])save_Pv.ToArray(MWArrayComponent.Real);

            double[,] consume_Pt_Output = (double[,])consume_Pt.ToArray(MWArrayComponent.Real);
            double[,] save_Pt_Output = (double[,])save_Pt.ToArray(MWArrayComponent.Real);

            double[,] outsideE_Output = (double[,])outsideE_dataOut.ToArray(MWArrayComponent.Real);
            double[,] outsideH_Output = (double[,])outsideH_dataOut.ToArray(MWArrayComponent.Real);
            double[,] uemachine_gear_Output = (double[,])uemachine_gear.ToArray(MWArrayComponent.Real);
            double[,] gasboiler_gear_Output = (double[,])gasboiler_gear.ToArray(MWArrayComponent.Real);

            //返回数据
            ArrayList ctrlopt_Output = new ArrayList();

            ctrlopt_Output.Add(charge_Savee_Output[0, 0]);
            ctrlopt_Output.Add(savedE_Savee_Output[0, 0]);
            ctrlopt_Output.Add(deltaE_Savee_Output[0, 0]);

            ctrlopt_Output.Add(charge_Saveh_Output[0, 0]);
            ctrlopt_Output.Add(savedH_Saveh_Output[0, 0]);
            ctrlopt_Output.Add(deltaH_Saveh_Output[0, 0]);

            ctrlopt_Output.Add(consume_Pv_Output[0, 0]);
            ctrlopt_Output.Add(save_Pv_Output[0, 0]);

            ctrlopt_Output.Add(consume_Pt_Output[0, 0]);
            ctrlopt_Output.Add(save_Pt_Output[0, 0]);

            ctrlopt_Output.Add(outsideE_Output[0, 0]);
            ctrlopt_Output.Add(outsideH_Output[0, 0]);
            ctrlopt_Output.Add(uemachine_gear_Output[0, 0]);
            ctrlopt_Output.Add(gasboiler_gear_Output[0, 0]);

            return ctrlopt_Output;
        }
Exemplo n.º 18
0
        //设备效率
        public double[] etacal(MWStructArray product)
        {
            //MWStructArray product = ctrlopt_Struct();

            //能源需求参数
            string[] need = new string[3];
            need[0] = "E";
            need[1] = "H";
            need[2] = "mode";
            MWStructArray needStruct = new MWStructArray(1, 1, need);
            needStruct.SetField(need[0], energyNeed.Electricity_Need);
            needStruct.SetField(need[1], energyNeed.Heat_Need);
            needStruct.SetField(need[2], energyNeed.Mode);

            //参数封装格式定义
            MWStructArray[] data_pv_pack = pv_pack();
            MWStructArray[] data_pt_pack = pt_pack();
            MWStructArray[] data_saveE_pack = saveE_pack();
            MWStructArray[] data_saveH_pack = saveH_pack();
            MWStructArray[] data_ueMachine = ueMachine_pack();
            MWStructArray[] data_gasBoiler = gasBoiler_pack();

            string[] variable = new string[7];
            variable[0] = "pv";
            variable[1] = "pt";
            variable[2] = "savee";
            variable[3] = "saveh";
            variable[4] = "uemachine";
            variable[5] = "gasboiler";
            variable[6] = "price";

            //输入变量提取
            MWStructArray variable_uemachine = (MWStructArray)data_ueMachine[0].GetField(variable[4]);
            MWStructArray variable_gasboiler = (MWStructArray)data_gasBoiler[0].GetField(variable[5]);

            //档位重新赋值
            MWStructArray gear_uemachine_product = (MWStructArray)product.GetField("uemachine");
            string[] gear_uemachine_product_fieldNames = gear_uemachine_product.FieldNames;
            variable_uemachine.SetField(gear_uemachine_product_fieldNames[0], (MWNumericArray)gear_uemachine_product.GetField(gear_uemachine_product_fieldNames[0]));

            MWStructArray gear_gasboiler_product = (MWStructArray)product.GetField("gasboiler");
            string[] gear_gasboiler_product_fieldNames = gear_gasboiler_product.FieldNames;
            variable_gasboiler.SetField(gear_gasboiler_product_fieldNames[0], (MWNumericArray)gear_gasboiler_product.GetField(gear_gasboiler_product_fieldNames[0]));

            //内层结构数组gas定义 与档位对应的数组
            double[] gas_gear_Boiler = new double[3];
            gas_gear_Boiler[0] = equipmentParameter.Gas_gear_Boiler_1;
            gas_gear_Boiler[1] = equipmentParameter.Gas_gear_Boiler_2;
            gas_gear_Boiler[2] = equipmentParameter.Gas_gear_Boiler_3;

            string[] equipmentParameter_Gas = new string[1];
            equipmentParameter_Gas[0] = "gear";
            MWStructArray gas = new MWStructArray(1, 1, equipmentParameter_Gas);
            gas.SetField(equipmentParameter_Gas[0], (MWNumericArray)gas_gear_Boiler);

            //设备参数提取
            MWStructArray equipmentParameterInStruct = new MWStructArray(1, 1, variable);
            equipmentParameterInStruct.SetField(variable[0], data_pv_pack[1].GetField(variable[0]));
            equipmentParameterInStruct.SetField(variable[1], data_pt_pack[1].GetField(variable[1]));
            equipmentParameterInStruct.SetField(variable[2], data_saveE_pack[1].GetField(variable[2]));
            equipmentParameterInStruct.SetField(variable[3], data_saveH_pack[1].GetField(variable[3]));
            equipmentParameterInStruct.SetField(variable[4], data_ueMachine[1].GetField(variable[4]));
            equipmentParameterInStruct.SetField(variable[5], data_gasBoiler[1].GetField(variable[5]));

            //函数调用
            MWNumericArray dataOut = (MWNumericArray)uec.etacal(product, needStruct, variable_uemachine, variable_gasboiler, equipmentParameterInStruct);
            double[,] dataOutArray = (double[,])dataOut.ToArray(MWArrayComponent.Real);

            double[] etacal_Output = new double[3];
            etacal_Output[0] = dataOutArray[0, 0];
            etacal_Output[1] = dataOutArray[1, 0];
            etacal_Output[2] = dataOutArray[2, 0];

            return etacal_Output;
        }
Exemplo n.º 19
0
        //补燃锅炉
        public double[] gasBoiler(MWStructArray product)
        {
            //MWStructArray product = ctrlopt_Struct();

            MWStructArray[] data_gasBoiler_pack = gasBoiler_pack();
            MWStructArray variableInStruct = (MWStructArray)data_gasBoiler_pack[0].GetField("gasboiler");
            MWStructArray equipmentParameterInStruct = (MWStructArray)data_gasBoiler_pack[1].GetField("gasboiler");

            //档位赋值
            MWStructArray gear_gasboiler_product = (MWStructArray)product.GetField("gasboiler");
            string[] gear_gasboiler_product_fieldNames = gear_gasboiler_product.FieldNames;
            variableInStruct.SetField(gear_gasboiler_product_fieldNames[0], (MWNumericArray)gear_gasboiler_product.GetField(gear_gasboiler_product_fieldNames[0]));

            //函数调用
            object[] dataOut = uec.gasboiler(1, variableInStruct, equipmentParameterInStruct);
            MWStructArray dataOutStruct = (MWStructArray)dataOut[0];
            string[] fieldName = dataOutStruct.FieldNames;
            //将输出由MWStructArray类型转化为MWNumericArray类型
            MWStructArray prdct = (MWStructArray)dataOutStruct.GetField("prdct");
            MWStructArray consume = (MWStructArray)dataOutStruct.GetField("consume");
            string[] prdctFieldName = prdct.FieldNames;
            string[] consumeFieldName = consume.FieldNames;

            //将输出由MWNumericArray类型转化为double类型(中间需要转化为Array类型)
            MWNumericArray prdctH = (MWNumericArray)prdct.GetField("H");
            MWNumericArray consumeG = (MWNumericArray)consume.GetField("G");

            double[,] prdctH_Output = (double[,])prdctH.ToArray(MWArrayComponent.Real);
            double[,] consumeG_Output = (double[,])consumeG.ToArray(MWArrayComponent.Real);

            //返回数据
            double[] gasBoiler_Output = new double[2];
            gasBoiler_Output[0] = prdctH_Output[0, 0];
            gasBoiler_Output[1] = consumeG_Output[0, 0];

            return gasBoiler_Output;
        }