/// <param name="numberInputNeurons">Количество входных нейронов.</param>
        /// <param name="numberHiddenNeurons">Количество нейронов скрытого слоя.</param>
        /// <param name="weightRange">Диапозон весов ДМЧ</param>
        /// /// <param name="learningRule">Правило обучения <see cref="LearningRuleNeurons"/> нейронов.
        /// По умолчанию стоит правило <see cref="LearningRuleNeurons.Hebbian"/>.</param>
        public TreeParityMachine(uint numberInputNeurons, uint numberHiddenNeurons, int weightRange,
                                 LearningRuleNeurons learningRule = LearningRuleNeurons.Hebbian)
        {
            NumberInputNeurons  = numberInputNeurons;
            NumberHiddenNeurons = numberHiddenNeurons;
            WeightRange         = weightRange;
            LearningRule        = learningRule;

            WeightsNeurons = GenerationWeights(numberInputNeurons, numberHiddenNeurons, weightRange);
        }
Example #2
0
 /// <summary>
 /// Запуск протокола Диффи-Хеллмана с древовидной машиной четности
 /// </summary>
 /// <param name="numInputNeurons">Количество входных нейронов в ДМЧ <see cref="TreeParityMachine"/></param>
 /// <param name="numHiddenNeoruns">Количество скрытых нейронов в ДМЧ <see cref="TreeParityMachine"/></param>
 /// <param name="weightRange">Диапозон весов в ДМЧ <see cref="TreeParityMachine"/></param>
 /// <param name="rule">Правило обучения нейронов в ДМЧ <see cref="TreeParityMachine"/></param>
 public virtual async Task RunProtocolAsync(uint numInputNeurons, uint numHiddenNeoruns, int weightRange, LearningRuleNeurons rule)
 {
     Machine = new TreeParityMachine(numInputNeurons, numHiddenNeoruns, weightRange, rule);
     Debug.WriteLine("Run Protocol");
     // Проверка параметров ДМЧ
     try {
         ClosedTokenSource.CancelAfter(TimeSpan.FromSeconds(30));
         await HubProtocolConnection.InvokeAsync("CompareParams",
                                                 NameRecipient, numInputNeurons, numHiddenNeoruns, weightRange).ConfigureAwait(false);
     }
     catch (Exception ex) {
         Debug.WriteLine(ex);
         throw ex;
     }
 }
Example #3
0
        /// <summary>
        /// Запускает протокол Диффи-Хеллмана
        /// </summary>
        public async Task RunProtocolAsync(uint numInputNeurons, uint numHiddenNeurons, int weightRange, LearningRuleNeurons rule)
        {
            // установка значений TextLabel
            paramsTPMLabel.Text = $"({numHiddenNeurons}, {numInputNeurons}, {weightRange})";
            runtimeLabel.Text   = TimeSpan.Zero.ToString();

            Protocol = GetNewDiffieHellman(_protocolOption);
            SetHandleProtocol();

            try {
                await Protocol.ConnectAsync(UserName, Password, Recipient);

                await Protocol.RunProtocolAsync(numInputNeurons, numHiddenNeurons, weightRange, rule);
            }
            catch (Exception ex) {
                MessageBox.Show(ex.Message,
                                "Ошибка выполнения протокола!",
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Error);
            }
            return;
        }
Example #4
0
 /// <summary>
 /// Запуск протокола Диффи-Хеллмана с древовидной машиной четности
 /// </summary>
 /// <param name="numInputNeurons">Количество входных нейронов в ДМЧ <see cref="TreeParityMachine"/></param>
 /// <param name="numHiddenNeoruns">Количество скрытых нейронов в ДМЧ <see cref="TreeParityMachine"/></param>
 /// <param name="weightRange">Диапозон весов в ДМЧ <see cref="TreeParityMachine"/></param>
 /// <param name="rule">Правило обучения нейронов в ДМЧ <see cref="TreeParityMachine"/></param>
 public override async Task RunProtocolAsync(uint numInputNeurons, uint numHiddenNeoruns, int weightRange, LearningRuleNeurons rule)
 {
     MachineInterceptor = new TreeParityMachine(numInputNeurons, numHiddenNeoruns, weightRange, rule);
     await base.RunProtocolAsync(numInputNeurons, numHiddenNeoruns, weightRange, rule).ConfigureAwait(false);
 }