Skip to content

Releases: yasserfarouk/negmas

Release 0.15.1

13 Feb 07:18

Choose a tag to compare

Security Updates

  • cryptography 46.0.3 → 46.0.5 (fixes CVE-2026-26007)
  • pillow 12.1.0 → 12.1.1 (fixes OOB Write vulnerability)
  • nbconvert 7.16.6 → 7.17.0 (fixes CVE-2025-53000)

Bug Fixes

  • Fix contradictory test assertion in test_agentk_perceives_time that expected relative_time to be None at the last negotiation step

CI/CD Improvements

  • Add GitHub Actions concurrency control to cancel running workflows when a new push is made to the same branch (PRs continue running)

New Features

  • Stability criteria system for utility functions with fine-grained caching
  • MetaNegotiator classes for ensemble negotiation strategies
  • SingletonOutcomeSpace and set operations for outcome spaces
  • ExtendedOutcome.best_for() for multi-offer support
  • Per-negotiator time and step limits in mechanisms
  • LEAVE response type for negotiators to exit without ending negotiation
  • allow_none_with_data parameter for information-only messages in SAO
  • And many more improvements!

See HISTORY.rst for full details.

Installation

pip install --upgrade negmas

v0.15.0

03 Feb 10:22

Choose a tag to compare

Release 0.15.0

This release focuses on enhancing mechanism capabilities with per-negotiator limits and improving visualization.

Key Features

  • Per-Negotiator Time and Step Limits: Mechanisms now support individual time and step limits for each negotiator, enabling asymmetric negotiation scenarios where different agents have different resources.

  • Offline Negotiation Visualization: New CompletedRun class and CompletedRun.plot() method enable visualization of completed negotiations from saved data.

  • Scenario Rotation Optimization: New Scenario.rotate_ufuns() method and optimized tournament performance with efficient scenario statistics rotation.

  • Matplotlib Plotting Backend: Scenarios can now be plotted using matplotlib in addition to plotly, providing more flexibility and better performance for static visualizations.

Breaking Changes

  • Mechanism.nmi is now deprecated in favor of Mechanism.shared_nmi to clarify the distinction between shared and per-negotiator interfaces.

New Features

  • Per-negotiator time and step limits to mechanisms
  • CompletedRun class for representing and persisting completed negotiation runs
  • CompletedRun.plot() method for visualizing completed negotiation runs
  • Scenario.rotate_ufuns() method for efficient scenario rotation in tournaments
  • recalculate_stats parameter to cartesian_tournament for performance optimization
  • Matplotlib backend support to Scenario.plot()
  • Per-negotiation callbacks to cartesian_tournament for monitoring individual negotiations
  • Scenario.normalize_ufuns() for normalizing utility functions to [0, 1] range
  • Mechanism.to_completed_run() method for creating CompletedRun from mechanism state
  • rational_fraction field to ScenarioInfo for tracking rational outcome percentages
  • read_only property to scenario registry
  • calc_standard_info() and Scenario.calc_standard_info() for computing standard scenario metrics
  • Granular control for pareto frontier serialization in ScenarioStats.to_dict()
  • Standardized negotiation save/load format for all mechanism and tournament types
  • CompletedRun.convert() method for converting between trace formats

Bug Fixes

  • Fix race condition in Genius bridge when starting negotiation sessions
  • Fix Mechanism.nmi deprecation - now properly use shared_nmi throughout codebase
  • Ensure per-negotiator relative_time is correctly passed to negotiators based on their individual limits
  • Fix SAOMechanism not creating SAONMI instances for negotiators (fixes Genius bridge tests)
  • Fix ContiguousIssue XML serialization to use efficient integer format
  • Improve cross-platform path handling for Windows compatibility
  • Fix Jupyter notebook test timeouts caused by blocking fig.show() calls
  • Fix NaN return value in compare_ufuns() when using Kendall's tau with constant utility functions
  • Fix cartesian_tournament() modifying input scenario objects (now deep copies scenarios)

Documentation

  • Add comprehensive migration guide for 0.14 → 0.15 upgrade
  • Update publications list with 5 new papers (2024-2025)
  • Add documentation for per-negotiator limits
  • Add documentation for offline visualization with CompletedRun
  • Add documentation for standardized negotiation save/load format

Full Changelog: v0.14.0...v0.15.0

PyPI: https://pypi.org/project/negmas/0.15.0/

Genius Agents Modularization & Documentation Enhancement"

11 Jan 07:47

Choose a tag to compare

What's New in v0.13.1

Documentation Improvements

New Negotiators Reference Page

  • Comprehensive listing of all 232+ available negotiators
  • 36 native SAO negotiators (time-based, MiCRO, tit-for-tat, etc.)
  • 35 native GB negotiators
  • 196 Genius bridge negotiators organized by ANAC competition year (2010-2019)
    New Components Reference Page
  • Complete listing of all modular negotiation components
  • 25+ acceptance policies
  • 19+ offering policies
  • Genius BOA framework components (acceptance, offering, opponent models)
    Expanded Mechanisms Documentation
  • Detailed overview of all negotiation mechanisms (SAO, GB, ST, MT, GA)
  • Mechanism comparison table
  • Usage examples and guidelines

Code Improvements

Refactored Genius Negotiators Module

  • Reorganized gnegotiators from a single 3400+ line file into a well-structured package
  • Agents now organized by ANAC competition year for better maintainability
  • Backward compatible: all existing imports continue to work

Full Changelog

v0.13.0...v0.13.1

NegMAS v0.12.0

08 Jan 07:40

Choose a tag to compare

Highlights

This release focuses on compatibility improvements and CI/CD fixes to ensure NegMAS works smoothly across Python versions and build environments.

What's Changed

Python 3.14 Compatibility

  • Upgraded dependencies to support Python 3.14
  • Fixed numpy/scipy compatibility issues in notebooks

Bug Fixes

  • Fixed CLI exit code handling for proper Click behavior
  • Fixed IPython import path (IPython.core.displayIPython.display)
  • Fixed scipy.optimize.minimize result access for newer numpy versions

Documentation

  • Fixed ReadTheDocs build configuration (Python 3.12, Ubuntu 22.04)
  • Added missing tutorial images
  • Removed deprecated recommonmark parser reference

CI/CD

  • Updated GitHub Actions workflows for uv sync compatibility
  • Changed default branch from master to main
  • Upgraded rpds-py to 0.30.0, ipykernel to 6.29.5
  • Added pillow>=12.1.0 and seaborn>=0.13.0 to dependencies

Installation

pip install negmas==0.12.0
Full Changelog
https://github.com/yasserfarouk/negmas/compare/v0.11.1...v0.12.0

ANAC 2025 first release

15 Mar 22:38

Choose a tag to compare

This release mostly improves the documentation (slightly), introduces a new signature for the propose() method in SAONegotiator and provide several bugfixes.

Improved CLI

18 Mar 03:50

Choose a tag to compare

This release contains several bugfixes and speed improvements. Most notably, the negotiate CLI now has a much better documentation which can be accessed as:

negotiate --help

All participants in ANAC 2024 are encouraged to upgrade to this version.

ANAC 2024 Release

31 Dec 11:31

Choose a tag to compare

This is the first official release for the ANAC 2024 competition.

This release adds Cartesian Tournaments which will be used by the ANL league and includes various bugfixes and performance improvements.

ANAC 2023 first draft release

26 Nov 07:50

Choose a tag to compare

First release for ANAC 2023

This release includes all the components and interfaces needed to run ANL 2023 and SCML 2023. The most important changes are adding cartesian_tournament() to run simple negotiation tournaments and supporting externally defined actions in all mechanisms to support using RL in SCML 2023.

For participants in ANAC 2023, it is ALWAYS recommended to use the latest version of negmas and whatever other libraries you are using in you development for the competition.

Preparing to support exposition for RL libraries

09 Jul 23:09

Choose a tag to compare

removing offer from SAO's respond() method.
allowing users to step worlds from the point of view of a set of agents ignoring simulation step boundaries and passing external actions if needed. See World.step() for details.

Generalized Bargaining and Simplified Interfaces

21 Dec 11:34

Choose a tag to compare

This version adds support for python 3.11 and drops support for python 3.8 and 3.9
We introduce a generalized form of bargaining and prepare for a major release (0.10) in which developing new agents and negotiators will be much simplified by allowing users to just use a single function for negotiators, reducing dependence on controllers and other simplifications.