Code: Select all
implement main
open core
constants
className = "main".
classVersion = "".
clauses
classInfo(className, classVersion).
class facts-countries
%ISOen_name,continent,midlatitude,midlongitude,maxlatitude,minlatitude,maxlongitude,minlongitude
country:(string,string, real, real, real, real, real, real).
class facts-coords
% GiftId, Latitude,Longitude,Weight,Distance
gift:(integer, real, real, real, real).
class facts-lookup
% GiftId, Latitude,Longitude,Weight,Distance
gift1:(integer, real, real, real, real).
class predicates
consult_files:().
assert_facts:().
save_facts:(string).
reduce_facts:().
test_against_all_countries_in_continent:(string).
test:(integer, real, real, real, real, real, real, real, real).
assert_gift:(integer, real, real, real, real).
clauses
reduce_facts():-
gift(GiftId, _, _, _,_),
retract(gift1(GiftId, _, _, _,_)),
fail.
reduce_facts():-
::retractFactDb(coords).
assert_gift(GiftId,Latitude,Longitude,Weight,Distance):-
gift(GiftId,Latitude,Longitude,Weight,Distance),!.
assert_gift(GiftId,Latitude,Longitude,Weight,Distance):-
assert(gift(GiftId,Latitude,Longitude,Weight,Distance)).
test(GiftId, Latitude,Longitude,Weight,Distance, Maxlatitude,Minlatitude,Maxlongitude,Minlongitude):-
Latitude <= Maxlatitude,
Latitude >= Minlatitude,
Longitude <= Maxlongitude,
Longitude >= Minlongitude,
assert_gift(GiftId, Latitude,Longitude,Weight,Distance),
%console::write(GiftId,",",Latitude,",",Longitude,",",Weight,",",Distance,"\n"),
!.
test(_GiftId,_Latitude,_Longitude,_Weight,_Distance,_Maxlatitude,_Minlatitude,_Maxlongitude,_Minlongitude).
test_against_all_countries_in_continent("*"):-
gift1(GiftId, Latitude,Longitude,Weight,Distance),
assert_gift(GiftId, Latitude,Longitude,Weight,Distance),
%console::write(Country,Continent,Latitude,Longitude,Latitude2,Longitude2,Maxlatitude,Minlatitude,Maxlongitude,Minlongitude),
fail.
test_against_all_countries_in_continent(Continent):-
gift1(GiftId, Latitude,Longitude,Weight,Distance),
country(_Country,Continent,_MidLatitude,_MidLongitude,Maxlatitude,Minlatitude,Maxlongitude,Minlongitude),
test(GiftId, Latitude,Longitude,Weight,Distance, Maxlatitude,Minlatitude,Maxlongitude,Minlongitude),
%console::write(Country,Continent,Latitude,Longitude,Latitude2,Longitude2,Maxlatitude,Minlatitude,Maxlongitude,Minlongitude),
fail.
test_against_all_countries_in_continent(_Continent).
assert_facts():-
gift(GiftId, Latitude,Longitude,Weight,Distance),
assert(gift1(GiftId, Latitude,Longitude,Weight,Distance)),
fail.
assert_facts():-
::retractFactDb(coords).
save_facts(Filename):-
file::save(Filename,coords,false()).
consult_files():-
file::consult("I:\\contin.csv",countries),
file::consult("I:\\Data.csv",coords),!.
clauses
run():-
console::init(),
succeed(), % place your own code here
consult_files(),
assert_facts(),
test_against_all_countries_in_continent("AF"),
save_facts("I:\\AF.csv"),
reduce_facts(),
test_against_all_countries_in_continent("SA"),
save_facts("I:\\SA.csv"),
reduce_facts(),
test_against_all_countries_in_continent("EU"),
save_facts("I:\\EU.csv"),
reduce_facts(),
test_against_all_countries_in_continent("AS"),
save_facts("I:\\AS.csv"),
reduce_facts(),
test_against_all_countries_in_continent("AN"),
save_facts("I:\\AN.csv"),
reduce_facts(),
test_against_all_countries_in_continent("NA"),
save_facts("I:\\NA.csv"),
reduce_facts(),
test_against_all_countries_in_continent("OC"),
save_facts("I:\\OC.csv"),
reduce_facts(),
test_against_all_countries_in_continent("*"),
save_facts("I:\\RR.csv"),
reduce_facts().
end implement main
goal
mainExe::run(main::run).
My question to speed it up a bit is on the following section
Code: Select all
test_against_all_countries_in_continent(Continent):-
gift1(GiftId, Latitude,Longitude,Weight,Distance),
country(_Country,Continent,_MidLatitude,_MidLongitude,Maxlatitude,Minlatitude,Maxlongitude,Minlongitude),
test(GiftId, Latitude,Longitude,Weight,Distance, Maxlatitude,Minlatitude,Maxlongitude,Minlongitude),
%console::write(Country,Continent,Latitude,Longitude,Latitude2,Longitude2,Maxlatitude,Minlatitude,Maxlongitude,Minlongitude),
fail.
Is there a way to have
test(GiftId, Latitude,Longitude,Weight,Distance, Maxlatitude,Minlatitude,Maxlongitude,Minlongitude),
cut away the country backtrack point and select the next gift/parcel.