/// <summary> /// 关闭已打开的bll instances /// </summary> private void CloseBlls() { TrackerPositionInstance.Close(); StorageInstance.Close(); PositionInstance.Close(); EquipmentInstance.Close(); EposInstance.Close(); DataInstance.Close(); DailyInstance.Close(); CustomerInstance.Close(); AlarmInstance.Close(); }
/// <summary> /// Creates instance for given info. If info belongs to direct instance, /// direct instance will be created from default value. /// </summary> /// <param name="info">Info determining type of created instance.</param> /// <returns>Created instance.</returns> public Instance CreateInstance(InstanceInfo info) { if (Settings.IsDirect(info)) { return(CreateDirectInstance(null, info)); } var instance = new DataInstance(info); registerInstance(instance); return(instance); }
public void SetUp() { instance = CreateJObjectSerialiser(); var subscription = new DataInstance(); subscription.Text = "Test"; subscription.Date = DateTime.Today; var json = JsonConvert.SerializeObject(subscription); data = Encoding.UTF8.GetBytes(json); }
private void btnDelete_Click(object sender, EventArgs e) { // Get confirmation before deleting this Seminar if (MessageBox.Show("Are you sure you want to delete this seminar?\nThis action can't be reversed.", "Delete Seminar", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes) { DataInstance.seminars.Remove(seminarReference); DataInstance.deleteSeminar(seminarReference); this.Close(); } }
/// <summary> /// Tính lãi nợ hàng hóa hiện tại của khách hàng /// </summary> /// <param name="include_THUNO"></param> /// <returns></returns> public double LaiHHHienTai(bool include_THUNO = true) { double value = 0; IQueryable <XUAT_HANG> _rows; if (include_THUNO == true) { /* Lấy tất cả những lần xuất hàng cho khách hàng mà khách chưa trả xong*/ _rows = (from xh in DataInstance.Instance().DBContext().XUAT_HANG where xh.MAKHO >= _MA_FROM && xh.MAKHO <= _MA_TO where xh.MAKH == MAKH where xh.TRANG_THAI == MXuatHang.CHUA_TRA_XONG orderby xh.NGAY_XUAT ascending select xh); /* Tìm những phần đã được thanh toán đó, trừ vào tổng nợ lãi những lần chưa trả xong */ foreach (XUAT_HANG row in _rows) { /* Tìm những phần đã thanh toán của lần xuất hàng này */ var da_thanh_toan = (from cttn in DataInstance.Instance().DBContext().CHI_TIET_THU_NO where cttn.LOAI_NO == MThuNo.NO_HANG_HOA where cttn.NO_ID == row.ID select cttn); DateTime _ngay_no = row.NGAY_XUAT.Value; double _tong_tien_hien_tai = row.THANH_TIEN - row.TRA_TRUOC; foreach (CHI_TIET_THU_NO tn in da_thanh_toan) { value += Utility.Lai(_ngay_no, tn.NGAY_TRA, row.LAI_SUAT, _tong_tien_hien_tai) - tn.TIEN_LAI; _ngay_no = tn.NGAY_TRA; _tong_tien_hien_tai -= tn.TIEN_GOC; } value += Utility.Lai(_ngay_no, row.LAI_SUAT, _tong_tien_hien_tai); } } else { /* Vì không sử dụng dữ liệu từ thu nợ */ /* Tổng lãi nợ của khách hàng từ đầu đến bây giờ */ var _xh = (from xh in DataInstance.Instance().DBContext().XUAT_HANG where xh.MAKHO >= _MA_FROM && xh.MAKHO <= _MA_TO where xh.MAKH == MAKH orderby xh.NGAY_XUAT ascending select xh); double _tong_lai_no = 0; foreach (XUAT_HANG row in _xh) { _tong_lai_no += Utility.Lai(row.NGAY_XUAT.Value, row.LAI_SUAT, row.THANH_TIEN - row.TRA_TRUOC); } value = _tong_lai_no; } return(value); }
private void buttonVIEW_Click(object sender, EventArgs e) { var _ncc = long.Parse(comboBoxNCC.SelectedValue.ToString()); var _from = dateTimePicker1.Value.Date; var _to = dateTimePicker2.Value.Date; BindingSource bs = new BindingSource(); var rows = (from v in DataInstance.Instance().DBContext().VAYs join nv in DataInstance.Instance().DBContext().NGUON_VAY on v.MA_NGUON_VAY equals nv.ID where v.MA_NGUON_VAY == _ncc where v.NGAY_VAY >= _from && v.NGAY_VAY <= _to orderby v.NGAY_VAY ascending select v); List <CChiTietNoVay> l = new List <CChiTietNoVay>(); foreach (VAY _r in rows) { l.Add(new CChiTietNoVay { NGAYVAY = _r.NGAY_VAY.Date, TONGTIEN = _r.TONG_TIEN, LAISUAT = _r.LAI_SUAT * 100, THOIDOAN = "Vay", TRAGOC = 0, TRALAI = 0 }); } foreach (TRA_NO_VAY _r in DataInstance.Instance().DBContext().TRA_NO_VAY .Where(u => u.MA_NGUON_VAY == _ncc && u.NGAY_TRA >= _from && u.NGAY_TRA <= _to)) { l.Add(new CChiTietNoVay { NGAYVAY = _r.NGAY_TRA.Date, TONGTIEN = 0, LAISUAT = 0, THOIDOAN = "Trả nợ vay", TRAGOC = _r.TIEN_GOC, TRALAI = _r.TIEN_LAI }); } bs.DataSource = l; CrystalReportCHITIETNOVAY rpt = new CrystalReportCHITIETNOVAY(); rpt.SetDataSource(bs); rpt.SetParameterValue("NV", comboBoxNCC.Text); rpt.SetParameterValue("FROM", _from); rpt.SetParameterValue("TO", _to); rpt.SetParameterValue("COMP", ConstClass.COMPANY_NAME); crystalReportViewer1.ReportSource = rpt; }
/// <summary> /// Bán hàng và cập nhật số lượng hàng hóa tồn kho /// </summary> /// <param name="MAKHO"></param> /// <param name="MAHH"></param> /// <param name="SOLUONG"></param> /// <param name="DONGIABAN"></param> /// <param name="NGAYBAN"></param> public static void Creat(long MAKHO, long MAHH, long SOLUONG, long DONGIABAN, DateTime NGAYBAN) { /* Tạo mới record bán hàng */ BAN_HANG bh = new BAN_HANG(); bh.MAKHO = MAKHO; bh.MAHH = MAHH; bh.SO_LUONG = SOLUONG; bh.DON_GIA_BAN = DONGIABAN; bh.NGAY_BAN = NGAYBAN.Date; bh.CREATED_TIME = DateTime.Now; bh.CHI_TIET_BAN_HANG = ""; DataInstance.Instance().DBContext().AddToBAN_HANG(bh); DataInstance.Instance().DBContext().SaveChanges(); /* Cập nhật số lượng tồn kho */ List <CXuatHangChiTiet> chitiet = new List <CXuatHangChiTiet>(); long _soluong = bh.SO_LUONG; foreach (NHAP_HANG nh in (from _nh in DataInstance.Instance().DBContext().NHAP_HANG where _nh.SL_CON_LAI > 0 where _nh.MAHH == bh.MAHH orderby _nh.NGAY_NHAP ascending select _nh)) { var sub_SL = nh.SL_CON_LAI; nh.SL_CON_LAI = _soluong >= nh.SL_CON_LAI ? 0 : nh.SL_CON_LAI - _soluong; /* Cập nhật chi tiết số lượng, đơn giá để tính lãi lỗi*/ long __subSL = nh.SL_CON_LAI > 0 ? _soluong : sub_SL; if (__subSL > 0) { chitiet.Add(new CXuatHangChiTiet() { NHAPHANGID = nh.ID, SOLUONG = nh.SL_CON_LAI > 0 ? _soluong : sub_SL, DONGIA = nh.DON_GIA_MUA }); } _soluong = _soluong >= sub_SL ? _soluong - sub_SL : 0; DataInstance.Instance().DBContext().SaveChanges(); if (_soluong == 0) { break; } } bh.CHI_TIET_BAN_HANG = JsonConvert.SerializeObject(chitiet); DataInstance.Instance().DBContext().SaveChanges(); }
/// <summary> /// Given a single tuning data instance and attribute indices, find the /// k nearest neighbors based on Euclidean distance. /// </summary> /// <param name="tune">Single tuning instance</param> /// <param name="indices">Indices of features used</param> /// <param name="k">Number of neighbors to find</param> /// <returns>KVP(double,DataInstance)</returns> private List <KeyValuePair <double, DataInstance> > FindNearestNeighbors(DataInstance tune, List <int> indices, int k) { var neighbors = new List <KeyValuePair <double, DataInstance> >(); foreach (DataInstance trainingInstance in m_DataSet.DataEntries) { if (trainingInstance == tune) { continue; } double distance = ComputeDistance(tune, trainingInstance, indices); neighbors.Add(new KeyValuePair <double, DataInstance>(distance, trainingInstance)); } return(neighbors.OrderBy(n => n.Key).Take(k).ToList()); }
public async Task SerializeDeserialize() { var path = Path.Combine(TestContext.CurrentContext.TestDirectory, "out"); path.EnsureDirectoryExistence(); path = Path.Combine(path, "data.zip"); var dataInstance = new DataInstance(); dataInstance.Text = "Test"; await instance.SerializeJsonZip(dataInstance, path).ConfigureAwait(false); var result = instance.DeserializeJsonZip <DataInstance>(path); Assert.AreEqual(dataInstance.Text, result.Text); }
public static ISet GetContext(DataInstance sent, int i, ICollection <CandidatePhrase> stopWords) { SemanticGraph graph = ((DataInstanceDep)sent).GetGraph(); //nodes are indexed from 1 -- so wrong!! try { IndexedWord w = graph.GetNodeByIndex(i + 1); return(GetContext(w, graph, stopWords, sent)); } catch (ArgumentException) { return(Java.Util.Collections.EmptySet()); } }
/// <summary> /// Tổng lãi HH mà khách hàng đã trả /// </summary> /// <param name="xuat_hang_ID"></param> /// <returns></returns> public static double TraLaiHH(int xuat_hang_ID) { double value = 0; try { value = (from cttn in DataInstance.Instance().DBContext().CHI_TIET_THU_NO where cttn.LOAI_NO == MThuNo.NO_HANG_HOA where cttn.NO_ID == xuat_hang_ID select cttn.TIEN_LAI).Sum(); } catch (Exception ex) { } return(value); }
/// <summary> /// SỐ LƯỢNG HÀNG HÓA CÒN LẠI TRONG KHO /// </summary> /// <param name="MAKHO"></param> /// <param name="MAHH"></param> /// <returns></returns> public static long Ton(long MAKHO, long MAHH) { long value = 0; try { value = (from ton in DataInstance.Instance().DBContext().NHAP_HANG where ton.MAKHO == MAKHO where ton.MAHH == MAHH select ton.SL_CON_LAI).Sum(); } catch (Exception ex) { } return(value); }
public static long TraNoTO(long MANCC, DateTime TO) { long value = 0; TO = TO.Date; try { value = DataInstance.Instance().DBContext().TRA_NO_NCC .Where(u => u.MANCC == MANCC && u.NGAY_TRA < TO) .Sum(u => u.TONG_TIEN); } catch (Exception ex) { } return(value); }
public static long NoTO(long MANCC, DateTime TO) { long value = 0; TO = TO.Date; try { value = DataInstance.Instance().DBContext().NHAP_HANG .Where(u => u.MANCC == MANCC && u.NGAY_NHAP < TO) .Sum(u => u.SO_LUONG * u.DON_GIA_MUA); } catch (Exception ex) { } return(value); }
/// <summary> /// TỔNG TIỀN KHO THU VÀO /// + XUẤT HÀNG - Tiền thực nhận vào khi xuất hàng /// + TIỀN THU NỢ - đã bao gồm thu nợ và thu khác /// </summary> /// <param name="MAKHO"></param> /// <param name="FROM"></param> /// <param name="TO"></param> /// <returns></returns> public static long Total_Thu(long MAKHO, DateTime FROM, DateTime TO) { long xuathang = 0; long thuno = 0; long vay = 0; FROM = FROM.Date; TO = TO.Date; try { xuathang = (from _luong in DataInstance.Instance().DBContext().XUAT_HANG where _luong.MAKHO == MAKHO where _luong.MAKH == -1 where _luong.NGAY_XUAT >= FROM && _luong.NGAY_XUAT <= TO select _luong.THANH_TIEN).Sum(); } catch (Exception ex) { } try { xuathang += (from _luong in DataInstance.Instance().DBContext().XUAT_HANG where _luong.MAKHO == MAKHO where _luong.MAKH != -1 where _luong.NGAY_XUAT >= FROM && _luong.NGAY_XUAT <= TO select _luong.TRA_TRUOC).Sum(); } catch (Exception ex) { } try { thuno = (from _luong in DataInstance.Instance().DBContext().THU_NO where _luong.MAKHO == MAKHO where _luong.NGAY_TRA >= FROM && _luong.NGAY_TRA <= TO select _luong.TIEN_GOC + _luong.TIEN_LAI).Sum(); } catch (Exception ex) { } try { vay = (from _luong in DataInstance.Instance().DBContext().VAYs where _luong.MAKHO == MAKHO where _luong.NGAY_VAY >= FROM && _luong.NGAY_VAY <= TO select _luong.TONG_TIEN).Sum(); } catch (Exception ex) { } return(xuathang + thuno + vay); }
void OnAddInstance() { if (DebugMode) { Debug.Log(GetInstanceID() + ":" + name + ": " + " OnAddInstance"); } // set the data type if not null (Used By Editor Inspector). #if UNITY_WSA && !UNITY_EDITOR DataType = DataInstance.GetType().GetTypeInfo(); #else DataType = DataInstance.GetType(); #endif if (!Application.isPlaying) { return; } // set type casts BindableContext = DataInstance as IObservableModel; if (BindableContext == null) { BindableContext = new ModelBinder(DataInstance); IsWrappedBinder = true; } // subscribe to down messages BindableContext.OnBindingUpdate += RelayBindingUpdate; // Tell the binders of the new data instance var array = Binders.ToArray(); for (int i = 0; i < array.Length; i++) { //was removed if (array[i].Context != this) { continue; } array[i].Model = BindableContext; } }
/// <summary> /// Tổng số lượng xuất hàng /// </summary> /// <param name="KHO_ID"></param> /// <param name="TO"></param> /// <param name="INCLUDE_TODAY">true: tính luôn cả ngày đang tính</param> /// <param name="MAHH">0: tất cả hàng hóa</param> /// <returns></returns> public static long Total_Xuat_To(long KHO_ID, DateTime FROM, DateTime TO, bool INCLUDE_TODAY = false, long MAHH = 0) { long value = 0; long _MAFrom = MAHH; long _MATo = MAHH; FROM = FROM.Date; TO = TO.Date; if (INCLUDE_TODAY == false) { TO = TO.AddDays(-1); } try { if (MAHH == 0) { _MAFrom = 1; _MATo = (from _n in DataInstance.Instance().DBContext().HANG_HOA select _n.ID).Max(); } } catch (Exception ex) { } try { value = (from _n in DataInstance.Instance().DBContext().XUAT_HANG where _n.MAKHO == KHO_ID where _n.NGAY_XUAT >= FROM && _n.NGAY_XUAT <= TO where _n.MAHH >= _MAFrom && _n.MAHH <= _MATo select _n.SO_LUONG).Sum(); } catch (Exception ex) { } try { value += (from _n in DataInstance.Instance().DBContext().BAN_HANG where _n.MAKHO == KHO_ID where _n.NGAY_BAN >= FROM && _n.NGAY_BAN <= TO where _n.MAHH >= _MAFrom && _n.MAHH <= _MATo select _n.SO_LUONG).Sum(); } catch (Exception ex) { } return(value); }
public static long TongGocDauKi(long MAKH, DateTime TO) { TO = TO.Date; long value = 0; try { value = DataInstance.Instance().DBContext().THU_NO .Where(u => u.MAKH == MAKH) .Where(u => u.NGAY_TRA < TO) .Select(u => u.TIEN_GOC) .Sum(); } catch (Exception ex) { } return(value); }
static private void CopyFlippedTriangles(DataInstance instance, NativeArray <int> source, NativeArray <int> destination, int destinationOffset, List <int> destinationSubmeshStart) { int submeshCount = instance.dataOffsets.SubmeshCount; for (int submesh = 0; submesh < submeshCount; ++submesh) { int srcOffset = instance.dataOffsets.SubmeshStart(submesh); int srcLength = instance.dataOffsets.SubmeshLength(submesh); int destOffset = destinationSubmeshStart[submesh]; for (int i = 0; i < srcLength; ++i) { destination[destOffset + i] = source[srcOffset + srcLength - 1 - i] + destinationOffset; } destinationSubmeshStart[submesh] += srcLength; } }
public static long TongNoDauKi(long MAKH, DateTime TO) { TO = TO.Date; long value = 0; try { value = DataInstance.Instance().DBContext().XUAT_HANG .Where(u => u.MAKH == MAKH) .Where(u => u.NGAY_XUAT < TO) .Select(u => u.THANH_TIEN - u.TRA_TRUOC) .Sum(); } catch (Exception ex) { } return(value); }
public void ReadData(string path, int rowNumber, out List <DataInstance> data) { data = new List <DataInstance>(); using (StreamReader sr = new StreamReader(path, System.Text.Encoding.Default)) { string line; line = sr.ReadLine(); while (((line = sr.ReadLine()) != null) && rowNumber > 0) { var strAtr = line.Split(' '); atrNum = strAtr.Length; double[] atr = new double[strAtr.Length]; /* for (int i = 0; i < atr.Length; i++) * { * double.TryParse(strAtr[i], out atr[i]); * }*/ double latitude, longtitude; double.TryParse(strAtr[0], out latitude); double.TryParse(strAtr[1], out longtitude); double x, y; //latitude var latRad = latitude * Math.PI / 180; var MercN = Math.Log(Math.Tan((Math.PI / 4) + (latRad / 2))); atr[1] = 180 - (720 * MercN / (2 * Math.PI)); //get x from longtitude atr[0] = (longtitude + 180) * 2; DataInstance d = new DataInstance(); d.attributes = atr; d.cluster = 0; data.Add(d); rowNumber--; } if (rowNumber > 0) { MessageBox.Show("Количество строк, указанное вами больше, чем размер файла. Считан весь файл", "Предупреждение", MessageBoxButtons.OK); } } }
/// <summary> /// Khách hàng trả nợ, bao gồm lãi và gốc hoặc nợ khác (Nợ phát sinh, không lãi, có lý do) /// Loại nợ: Nợ hàng hóa hoặc nợ vay /// - Tạo một record THU_NO mới /// - Cập nhật chi tiết thu nợ /// </summary> /// <param name="TYPE"></param> /// <param name="MAKH"></param> /// <param name="TIENGOC"></param> /// <param name="TIENLAI"></param> public static void Create(int LOAINO, int MAKHO, Int64 MAKH, Int64 TIENGOC, Int64 TIENLAI, DateTime NGAYTRA, string NOIDUNG = "Thanh Toán Nợ") { /** * Tạo mới một THU_NO */ THU_NO ele = new THU_NO(); ele.MAKH = MAKH; ele.MAKHO = MAKHO; ele.TIEN_GOC = TIENGOC; ele.TIEN_LAI = TIENLAI; ele.NOI_DUNG = NOIDUNG; ele.LOAI_NO = LOAINO; ele.CREATED_AT = DateTime.Now; ele.NGAY_TRA = NGAYTRA.Date; DataInstance.Instance().DBContext().AddToTHU_NO(ele); DataInstance.Instance().DBContext().SaveChanges(); Update(ele); }
/// <summary> /// Computes the Euclidean distance between the DataInstances tune/train using /// the features located at the given indices. /// </summary> /// <param name="indices">Indices of the features used</param> /// <param name="tune">Single tuning instance</param> /// <param name="train">Single training instance</param> /// <returns>Double</returns> private double ComputeDistance(DataInstance tune, DataInstance train, IEnumerable <int> indices) { double d = 0; foreach (int i in indices) { switch (m_DataSet.Features[i].Type) { case Types.Continuous: d += Distance(tune[i], train[i]); break; case Types.Discrete: d += (tune[i] == train[i]) ? 0 : 1; break; } } return(Math.Sqrt(d)); }
public static bool IsSet(string NAME) { try { var ht = DataInstance.Instance().DBContext().HE_THONG.Where(u => u.NAME == NAME).First(); if (ht != null) { return(true); } else { return(false); } } catch (Exception ex) { return(false); } }
private void saveSeminarState() { // Gather the information from interface and save it in the Seminar object seminarReference.Organiser = ddOrganisers.SelectedOrganiser; seminarReference.Speakers = selectSpeakers1.SelectedSpeakers; seminarReference.Room = ddRoom.SelectedRoom; seminarReference.StartDate = datePickerSingle.StartDate; seminarReference.EndDate = datePickerSingle.EndDate; seminarReference.Title = tbTitle.Text; seminarReference.Description = rtbDescription.Text; //Add seminar to database here foreach (Speaker speaker in Utils.GetAllSpeakers()) { foreach (Speaker selectedSpeakers in selectSpeakers1.SelectedSpeakers.Where(s => s.ID == speaker.ID)) { try { DataInstance.addSeminarSpeaker(seminarReference, speaker); } catch { } } foreach (Speaker selectedSpeakers in selectSpeakers1.SelectedSpeakers.Where(s => s.ID != speaker.ID)) { DataInstance.deleteSeminarSpeaker(seminarReference, speaker); } } foreach (Speaker speaker in selectSpeakers1.SelectedSpeakers) { DataInstance.addSeminarSpeaker(seminarReference, speaker); } // Used to fire observer event, as it is not triggered by ref updates // This will update the seminar list interface DataInstance.seminars[DataInstance.seminars.IndexOf(seminarReference)] = seminarReference; DataInstance.editSeminar(seminarReference); }
/// <summary> /// 保存数据到历史记录表 /// </summary> /// <param name="tx300"></param> private void SaveTX300History(TX300 tx300, DateTime receiveTime, string mac_id) { TB_HISTORIES obj = DataInstance.GetObject(); obj.command_id = "0x" + CustomConvert.IntToDigit(tx300.CommandID, CustomConvert.HEX, 4); obj.mac_id = mac_id; obj.message_content = CustomConvert.GetHex(tx300.MsgContent); obj.message_type = 1; obj.package_id = tx300.PackageID; obj.protocol_type = tx300.ProtocolType; obj.protocol_version = tx300.ProtocolVersion; obj.receive_time = receiveTime; obj.sequence_id = tx300.SequenceID.ToString(); obj.server_port = 31875; obj.terminal_id = tx300.TerminalID; obj.terminal_type = tx300.TerminalType; obj.total_length = (short)tx300.TotalLength; obj.total_package = tx300.TotalPackage; DataInstance.Add(obj); }
public static void Set(string NAME, string VALUE) { try { var ht = DataInstance.Instance().DBContext().HE_THONG.Where(u => u.NAME == NAME).First(); foreach (HE_THONG row in DataInstance.Instance().DBContext().HE_THONG.Where(u => u.NAME == NAME)) { row.VALUE = VALUE; break; } } catch (Exception ex) { HE_THONG ht = new HE_THONG(); ht.NAME = NAME; ht.VALUE = VALUE; DataInstance.Instance().DBContext().AddToHE_THONG(ht); } DataInstance.Instance().DBContext().SaveChanges(); }
private void createAttendee() { int newAttendeesId = DataInstance.attendeeList.Last().ID + 1; var newAttendee = new SeminarAttendee(newAttendeesId, tbName.Text, tbEmail.Text, tbPhoneNumber.Text, cbStatus.Text); DataInstance.addAttendee(newAttendee); seminarReference.Attendees.Add(newAttendee); DataInstance.addSeminarAttendees(seminarReference, DataInstance.getAttendeeByEmail(newAttendee.Email), newAttendee.Status); MessageBox.Show(newAttendee.Name + " has been registered to " + seminarReference.Title, "Successfully Registered", MessageBoxButtons.OK, MessageBoxIcon.Information); if (this.AttendeeRegistered != null) { this.AttendeeRegistered(this, new EventArgs()); } }
private void buttonADD_Click(object sender, EventArgs e) { if (textBoxKHACHHANG.Text == "") { MessageBox.Show("Chưa nhập tên kho mới"); return; } bs.Add(new KHO() { NAME = textBoxKHACHHANG.Text, CODE = "", TYPE = 0 } ); bs.EndEdit(); bs.ResetBindings(false); DataInstance.Instance().DBContext().SaveChanges(); textBoxKHACHHANG.Text = ""; textBoxKHACHHANG.Select(); }
public bool ParallelComputeCenters(double accuracy) { DataInstance[] lCenters = new DataInstance[clusterNum]; ParalelLocSum = new double[clusterNum]; Parallel.For(1, clusterNum, i => { double[] centAtr = new double[atrNum]; lCenters[i] = new DataInstance(centAtr, i + 1); foreach (var item in dataset.Where(x => x.cluster == i)) { for (int k = 0; k < item.attributes.Length; k++) { lCenters[i].attributes[k] += item.attributes[k]; } } for (int k = 0; k < atrNum; k++) { if (clusterCount[i] != 0) { lCenters[i].attributes[k] = lCenters[i].attributes[k] / clusterCount[i]; } } ParalelLocSum[i] += distEvkl(lCenters[i], clusterCenter[i]); }); clusterCenter = lCenters; double locSum = ParalelLocSum.Sum(); if (Math.Abs(locSum - sumDist) <= accuracy) { return(true); } else { sumDist = locSum; return(false); } }
/// <summary> /// Computes the Euclidean distance between the DataInstances tune/train using /// the features located at the given indices. /// </summary> /// <param name="indices">Indices of the features used</param> /// <param name="tune">Single tuning instance</param> /// <param name="train">Single training instance</param> /// <returns>Double</returns> private double ComputeDistance(DataInstance tune, DataInstance train, IEnumerable<int> indices) { double d = 0; foreach(int i in indices) { switch(m_DataSet.Features[i].Type) { case Types.Continuous: d += Distance(tune[i], train[i]); break; case Types.Discrete: d += (tune[i] == train[i]) ? 0 : 1; break; } } return Math.Sqrt(d); }
/// <summary> /// Given a single tuning data instance and attribute indices, find the /// k nearest neighbors based on Euclidean distance. /// </summary> /// <param name="tune">Single tuning instance</param> /// <param name="indices">Indices of features used</param> /// <param name="k">Number of neighbors to find</param> /// <returns>KVP(double,DataInstance)</returns> private List<KeyValuePair<double, DataInstance>> FindNearestNeighbors(DataInstance tune, List<int> indices, int k) { var neighbors = new List<KeyValuePair<double, DataInstance>>(); foreach(DataInstance trainingInstance in m_DataSet.DataEntries) { if(trainingInstance == tune) continue; double distance = ComputeDistance(tune, trainingInstance, indices); neighbors.Add(new KeyValuePair<double, DataInstance>(distance, trainingInstance)); } return neighbors.OrderBy(n=>n.Key).Take(k).ToList(); }
/// <summary> /// Reads all valid entries(determined by DataReader) and stores values into a List[object] /// in our DataSet; paired with the attributes read in from the names file. /// </summary> private void BuildDataEntries(ref DataSet dataSet) { foreach(string entry in m_DataReader.ValidEntries()) { string[] data = entry.Split(','); if(data.Length != dataSet.Features.Count){ Console.WriteLine("[Error]: Invalid # of data elements in {0}.", data.Select(s=>s.ToString(CultureInfo.InvariantCulture))); continue; } var instance = new DataInstance(); for(int i=0; i<data.Length; i++) { if(IsValidValue(dataSet.Features[i].Type, data[i], dataSet.Features[i].PossibleValues.ToArray())) instance.Add(data[i]); } if(instance.Count == dataSet.Features.Count) dataSet.DataEntries.Add(instance); } }