DigitalXpress uses Amzi! in Rules-based
Scheduling of Satellite Broadcasts
While some corporations or organizations are in a position to utilize
satellite broadcasting on a full time basis, others can more effectively
time-share resources for the delivery of digital data, voice, and video.
In a time-sharing system, the usage time for a particular satellite transponder,
which provides a two-way communications channel, is allocated among different
Typical applications include:
- Video for distance learning and corporate meetings
- Downloading of large data files
- Data provision to advertising kiosks
- Audio feeds for in-store advertising and private news channels
- Augmenting ISP backbones with an "IP multicast over-net" in which
web-cast feeds go directly from the Internet broadcaster to the last
mile ISP POP
Understanding the need for the economical provision of these satellite
services, including high speed data transfer, DigitalXpress provides organizations
with the ability to share a single transponder for delivery throughout
the United States, covering all locations, including remote areas. Uplink
of data to the satellite is done through dial-up or dedicated lines into
a central site run by DigitalXpress.
Scheduling is Key
Key to implementing the services is scheduling the usage of the satellite
transponder among many customers. However, scheduling is a complex task
because there are many variables. To begin with, the information to be broadcast
may be stored and transmitted later (digital data) or transmitted in real-time
(video and audio).
The advent of streaming video further complicates scheduling because
streaming video cannot be interrupted. This is in contrast to data, which
will not lose its integrity if there is a short delay in transmission
since it is sent in packets instead of a stream.
To handle the complexity of scheduling, DigitalXpress built a rule-based
scheduling engine that determines the best transmission time for a given
Amzi! Prolog + Logic Server Selected for Building the Scheduling
The scheduling engine was built using Amzi! Prolog + Logic Server, because
it met the requirements of:
- Speed for real-time scheduling
- Flexible because it's easily embedded in many applications
Amzi! Prolog + Logic Server consists of the general purpose Prolog language,
delivered as the foundation of a compact, powerful library that is easily
embedded in a variety of applications. It works with C, C++, Java, Smalltalk,
Delphi, Visual Basic; has a CGI interface for Web servers; and a general
API for tools such as Access, PowerBuilder, and Excel.
The Amzi! Logic Server extends Prolog to access and reason over any kind
of data, such as from databases or remote servers.
Inputs to the scheduling engine include:
- Requests for a specific transmission date and time
- Type of data to be transmitted type (store-and-forward or real-time)
- Duration of broadcast (in 1 or 15 minute increments)
- Reliability factor (send once, send twice)
Store-and-forward transmissions are typically small and billed in 1-minute
increments. Real-time transmissions are much harder to schedule and are
handled in 15-minute increments. The priority is used for load leveling
and for controlling the level of preemption when scheduling higher priority
transmissions. In addition, the scheduler can schedule equipment maintenance.
If the maintenance is due to a pending failure, the scheduling engine
can immediately reschedule affected transmissions. If a new transmission
schedule cannot be reached, an operator is required to manually determine
the new schedule time for the transmission.
The scheduling works hand-in-hand with transmission specifications that
are stored in an object model. This object model defines channels, configurations,
schedules, transmissions and business rules. Channel objects describe the
characteristics of channels within the satellite transponder. Configurations
define the transmission services that are available and the attributes of
the customers who purchase them. Schedule objects are the result of the
scheduling engine and are a commitment to provide a service at a specified
time/duration or window of time. Transmission objects are used to manage
the process of actually making the transmission (which are initiated by
an operator for real-time services). Business rules define operational constraints,
minimum and the maximum duration of specific services and other constraints.
All of these objects are stored in a persistent database, but that layer
is invisible to the scheduling engine and the graphical user interfaces
that use the objects.
Based on information from the object model, the scheduling engine delivers
a schedule of work for the Uplink center and receiver sites. The schedule
can be created in less than five seconds. Once the schedule has been created,
the transmission can be broadcast and the customer can be billed.
Prolog for Flexibility
The scheduling engine uses several algorithms, originally written in Visual
Basic, to tie in with the entire system of applications, object servers
However, DigitalXpress soon recognized that modifying the Visual Basic
code was expensive in both time and cost and still would not allow quick
response to changing market demands. DigitalXpress sought a flexible system
that could be easily understood by most programmers. Experience had shown
that trying to maintain and adapt the scheduling algorithms using Visual
Basic was not an effective way to go. It was not going to fit the bill.
An expert system shell was not practical because the solution to the
scheduling problem could not be represented in the expert system's domain.
The expert shell would have been acceptable for the algorithms alone,
but would have been difficult to integrate with the other applications,
object servers and databases.
DigitalXpress decided that a switch from Visual Basic to Amzi! Prolog
+ Logic Server for the scheduling algorithms was the way to go. Amzi!
Prolog + Logic Server provided the flexibility needed for quick response
to changing market requirements. In fact, DigitalXpress estimates that
development time and effort was spared by a factor of ten by making
Prolog for Speed
The scheduling engine works in real-time as well as in advance, and demonstrates
that Prolog easily delivers the speed necessary for real-time scheduling.
Amzi! Prolog Embeddable in Visual Basic is Advantageous
Additionally, DigitalXpress was impressed by Amzi! Prolog + Logic Server's
ease of integration with both Visual Basic and C. Amzi! Prolog is embeddable
in Visual Basic. Currently much of the application, including about 30 graphical
user interfaces (GUIs), is written in Visual Basic. These GUIs manage the
service definitions, customer contracts and billings, resource and channel
management and schedule creation and execution. The schedule creation user
interface interacts with the scheduling engine (in Prolog). Although DigitalXpress
hasn't used the C/C++ interface to extend Amzi! Prolog with new functions,
it is important that this flexibility is available to them in the future.
Finally, it was critical to have support services available, which would
not be the case with a freeware version of Prolog.
2550 University Avenue. W., Suite 310S
St. Paul, MN 55114
Phone: +1 888 591 1053
Contact: Thomas A. Haug, Vice President
See Also: An Information Management
Architecture for On-demand Satellite Broadcasting
Copyright ©1995-2006 Amzi!
Amzi!, KnowledgeWright and WebLS are registered
trademarks and Adventure in Prolog, Logic Server, Logic Explorer, Adventure
in Prolog and Subscription Plus are trademarks of Amzi! inc.