@@ -87,46 +87,6 @@ class InfoRecordDouble : public InfoRecord {
8787 virtual ~InfoRecordDouble () {}
8888};
8989
90- InfoStatus getInfoIndex (const HighsLogOptions& report_log_options,
91- const std::string& name,
92- const std::vector<InfoRecord*>& info_records,
93- HighsInt& index);
94-
95- InfoStatus checkInfo (const HighsLogOptions& report_log_options,
96- const std::vector<InfoRecord*>& info_records);
97- InfoStatus checkInfo (const InfoRecordInt& info);
98- InfoStatus checkInfo (const InfoRecordDouble& info);
99-
100- InfoStatus getLocalInfoValue (const HighsLogOptions& report_log_options,
101- const std::string& name, const bool valid,
102- const std::vector<InfoRecord*>& info_records,
103- int64_t & value);
104- InfoStatus getLocalInfoValue (const HighsLogOptions& report_log_options,
105- const std::string& name, const bool valid,
106- const std::vector<InfoRecord*>& info_records,
107- HighsInt& value);
108- InfoStatus getLocalInfoValue (const HighsLogOptions& report_log_options,
109- const std::string& name, const bool valid,
110- const std::vector<InfoRecord*>& info_records,
111- double & value);
112-
113- InfoStatus getLocalInfoType (const HighsLogOptions& report_log_options,
114- const std::string& name,
115- const std::vector<InfoRecord*>& info_records,
116- HighsInfoType& type);
117-
118- HighsStatus writeInfoToFile (
119- FILE* file, const bool valid, const std::vector<InfoRecord*>& info_records,
120- const HighsFileType file_type = HighsFileType::kOther );
121- void reportInfo (FILE* file, const std::vector<InfoRecord*>& info_records,
122- const HighsFileType file_type = HighsFileType::kOther );
123- void reportInfo (FILE* file, const InfoRecordInt64& info,
124- const HighsFileType file_type = HighsFileType::kOther );
125- void reportInfo (FILE* file, const InfoRecordInt& info,
126- const HighsFileType file_type = HighsFileType::kOther );
127- void reportInfo (FILE* file, const InfoRecordDouble& info,
128- const HighsFileType file_type = HighsFileType::kOther );
129-
13090// For now, but later change so HiGHS properties are string based so that new
13191// info (for debug and testing too) can be added easily. The info below
13292// are just what has been used to parse info from argv.
@@ -155,6 +115,7 @@ struct HighsInfoStruct {
155115 double sum_dual_infeasibilities;
156116 double max_complementarity_violation;
157117 double sum_complementarity_violations;
118+ double primal_dual_integral;
158119};
159120
160121class HighsInfo : public HighsInfoStruct {
@@ -313,10 +274,59 @@ class HighsInfo : public HighsInfoStruct {
313274 " sum_complementarity_violations" , " Sum of complementarity violations" ,
314275 advanced, &sum_complementarity_violations, 0 );
315276 records.push_back (record_double);
277+
278+ record_double =
279+ new InfoRecordDouble (" primal_dual_integral" , " Primal-dual integral" ,
280+ advanced, &primal_dual_integral, 0 );
281+ records.push_back (record_double);
316282 }
317283
318284 public:
319285 std::vector<InfoRecord*> records;
320286};
321287
288+ HighsStatus writeInfoToFile (
289+ FILE* file, const bool valid, const HighsInfo& info,
290+ const HighsFileType file_type = HighsFileType::kFull );
291+
292+ InfoStatus getInfoIndex (const HighsLogOptions& report_log_options,
293+ const std::string& name,
294+ const std::vector<InfoRecord*>& info_records,
295+ HighsInt& index);
296+
297+ InfoStatus checkInfo (const HighsLogOptions& report_log_options,
298+ const std::vector<InfoRecord*>& info_records);
299+ InfoStatus checkInfo (const InfoRecordInt& info);
300+ InfoStatus checkInfo (const InfoRecordDouble& info);
301+
302+ InfoStatus getLocalInfoValue (const HighsLogOptions& report_log_options,
303+ const std::string& name, const bool valid,
304+ const std::vector<InfoRecord*>& info_records,
305+ int64_t & value);
306+ InfoStatus getLocalInfoValue (const HighsLogOptions& report_log_options,
307+ const std::string& name, const bool valid,
308+ const std::vector<InfoRecord*>& info_records,
309+ HighsInt& value);
310+ InfoStatus getLocalInfoValue (const HighsLogOptions& report_log_options,
311+ const std::string& name, const bool valid,
312+ const std::vector<InfoRecord*>& info_records,
313+ double & value);
314+
315+ InfoStatus getLocalInfoType (const HighsLogOptions& report_log_options,
316+ const std::string& name,
317+ const std::vector<InfoRecord*>& info_records,
318+ HighsInfoType& type);
319+
320+ HighsStatus writeInfoToFile (
321+ FILE* file, const bool valid, const std::vector<InfoRecord*>& info_records,
322+ const HighsFileType file_type = HighsFileType::kFull );
323+ void reportInfo (FILE* file, const std::vector<InfoRecord*>& info_records,
324+ const HighsFileType file_type = HighsFileType::kFull );
325+ void reportInfo (FILE* file, const InfoRecordInt64& info,
326+ const HighsFileType file_type = HighsFileType::kFull );
327+ void reportInfo (FILE* file, const InfoRecordInt& info,
328+ const HighsFileType file_type = HighsFileType::kFull );
329+ void reportInfo (FILE* file, const InfoRecordDouble& info,
330+ const HighsFileType file_type = HighsFileType::kFull );
331+
322332#endif
0 commit comments