#include #include "ampl/ampl_c.h" int main() { // Create an AMPL instance AMPL* ampl; AMPL_CALL(AMPL_Create(&l)); /* // If the AMPL installation directory is not in the system search path: AMPL_ENVIRONMENT *env; AMPL_EnvironmentCreate(&env, "full path to the AMPL installation directory", ""); AMPL_CALL(AMPL_CreateWithEnv(&l, env)); */ AMPL_CALL(AMPL_Eval(ampl, "set CITIES; set LINKS within (CITIES cross CITIES);")); AMPL_CALL(AMPL_Eval(ampl, "param cost {LINKS} >= 0; param capacity {LINKS} >= 0;")); AMPL_CALL(AMPL_Eval(ampl, "data; set CITIES := PITT NE SE BOS EWR BWI ATL MCO;")); double cost[] = {2.5, 3.5, 1.7, 0.7, 1.3, 1.3, 0.8, 0.2, 2.1}; double capacity[] = {250, 250, 100, 100, 100, 100, 100, 100, 100}; const char *LinksFrom[] = {"PITT", "PITT", "NE", "NE", "NE", "SE", "SE", "SE", "SE"}; const char *LinksTo[] = {"NE", "SE", "BOS", "EWR", "BWI", "EWR", "BWI", "ATL", "MCO"}; AMPL_DATAFRAME *df; char *output; const char * const headers[] = {"LINKSFrom", "LINKSTo", "cost", "capacity"}; AMPL_CALL(AMPL_DataFrameCreate(&df, 2, 2, headers)); AMPL_CALL(AMPL_DataFrameSetColumnArgString(df, "LINKSFrom", LinksFrom, 9)); AMPL_CALL(AMPL_DataFrameSetColumnArgString(df, "LINKSTo", LinksTo, 9)); AMPL_CALL(AMPL_DataFrameSetColumnArgDouble(df, "cost", cost, 9)); AMPL_CALL(AMPL_DataFrameSetColumnArgDouble(df, "capacity", capacity, 9)); AMPL_CALL(AMPL_DataFrameToString(df, &output)); printf("%s", output); AMPL_CALL(AMPL_SetData(ampl, df, "LINKS")); AMPL_DataFrameFree(&df); AMPL_StringFree(&output); //AMPL_EnvironmentFree(&env); AMPL_Free(&l); return 0; }