示例#1
0
        /// <summary>
        /// Creates the final <see cref="AdapterDataRecord{GurobiResult}"/>.
        /// </summary>
        /// <param name="timeStamp">The time stamp.</param>
        /// <param name="model">The <see cref="GRBModel"/>.</param>
        /// <param name="result">The <see cref="GurobiResult"/>.</param>
        /// <returns>The final <see cref="AdapterDataRecord{GurobiResult}"/>.</returns>
        private AdapterDataRecord <GurobiResult> CreateFinalAdapterDataRecord(DateTime timeStamp, GRBModel model, GurobiResult result)
        {
            if (this._instanceFeatures == null)
            {
                throw new ArgumentNullException(nameof(this._instanceFeatures));
            }

            var finalRuntimeFeatures  = this.GetFinalGurobiRuntimeFeatures(model, result);
            var lastRuntimeFeatures   = this._lastRuntimeFeatures ?? finalRuntimeFeatures;
            var adapterFeatures       = GurobiUtils.ComposeAdapterFeatures(finalRuntimeFeatures, lastRuntimeFeatures, this._instanceFeatures);
            var adapterFeaturesHeader = GurobiUtils.ComposeAdapterFeaturesHeader(finalRuntimeFeatures, lastRuntimeFeatures, this._instanceFeatures);

            this._lastRuntimeFeatures = finalRuntimeFeatures.Copy();

            return(new AdapterDataRecord <GurobiResult>(
                       "Gurobi901",
                       result.TargetAlgorithmStatus,
                       // The cpu time is not recordable, because all parallel Gurobi runs are started in the same process in this implementation.
                       TimeSpan.FromSeconds(0),
                       this.GetCurrentRuntime(timeStamp),
                       timeStamp,
                       adapterFeaturesHeader,
                       adapterFeatures,
                       result));
        }
示例#2
0
        /// <summary>
        /// Creates the current <see cref="AdapterDataRecord{GurobiResult}"/>.
        /// </summary>
        /// <param name="timeStamp">The time stamp.</param>
        /// <returns>The current <see cref="AdapterDataRecord{GurobiResult}"/>.</returns>
        private AdapterDataRecord <GurobiResult> CreateCurrentAdapterDataRecord(DateTime timeStamp)
        {
            if (this._instanceFeatures == null)
            {
                throw new ArgumentNullException(nameof(this._instanceFeatures));
            }

            var currentRuntimeFeatures = this.GetCurrentGurobiRuntimeFeatures();
            var lastRuntimeFeatures    = this._lastRuntimeFeatures ?? currentRuntimeFeatures;
            var adapterFeatures        = GurobiUtils.ComposeAdapterFeatures(currentRuntimeFeatures, lastRuntimeFeatures, this._instanceFeatures);
            var adapterFeaturesHeader  = GurobiUtils.ComposeAdapterFeaturesHeader(currentRuntimeFeatures, lastRuntimeFeatures, this._instanceFeatures);

            this._lastRuntimeFeatures = currentRuntimeFeatures.Copy();

            return(new AdapterDataRecord <GurobiResult>(
                       "Gurobi901",
                       TargetAlgorithmStatus.Running,
                       // The cpu time is not recordable, because all parallel Gurobi runs are started in the same process in this implementation.
                       TimeSpan.FromSeconds(0),
                       this.GetCurrentRuntime(timeStamp),
                       timeStamp,
                       adapterFeaturesHeader,
                       adapterFeatures,
                       new GurobiResult(
                           currentRuntimeFeatures.MipGap,
                           this._runnerConfiguration.CpuTimeout,
                           TargetAlgorithmStatus.CancelledByGrayBox,
                           currentRuntimeFeatures.FeasibleSolutionsCount > 0)));
        }